加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

每当有人通过SSH登录到Linux盒子时执行程序

发布时间:2020-12-13 18:10:24 所属栏目:Linux 来源:网络整理
导读:我有一个小型SSH服务器,我想编写一个脚本,每次有人通过SSH登录时运行. 现在,我该怎么做呢? 我希望每次ANYBODY登录时都会运行该脚本,并且我至少需要访问登录用户的用户名以及该用户登录的IP地址. 我想过使用/etc/bash.bashrc,但这是一个很好的解决方案吗?例
我有一个小型SSH服务器,我想编写一个脚本,每次有人通过SSH登录时运行.

现在,我该怎么做呢?

我希望每次ANYBODY登录时都会运行该脚本,并且我至少需要访问登录用户的用户名以及该用户登录的IP地址.

我想过使用/etc/bash.bashrc,但这是一个很好的解决方案吗?例如,用户是否可以禁用其使用方式,从而禁用我的脚本?如果是,我的其他选择是什么?

谢谢.

解决方法

使用机制取决于您的目标.

如果您希望为用户提供方便或友好的东西,那么如果您的所有用户都使用相同的shell,那么/ etc / profile是合理的.如果希望命令仅在通过ssh登录时执行,请将命令放入/ etc / ssh / sshrc. (如果您不介意用户使用自己的?/ .ssh / rc文件覆盖命令.)

如果要强制用户执行一个程序,并且只执行一个程序,则DigitalRoss所描述的ForceCommand选项是一种很好的方法. (我个人会进一步限制用户使用mandatory access control系统,如AppArmor,SELinux,TOMOYO或SMACK,以确保程序不允许用户逃脱.我已经在AppArmor工作了十年,所以这就是我的工具首先选择,但其他人是优秀程序员编写的精美工具.)

如果你只是想要一个程序执行而不是以任何方式打扰用户,那么最好的方法是使用pam_exec(8)模块,它不能被绕过,无论shell运行如何,并且提供了以用户身份运行的简单能力或者作为执行授权的程序的用户帐户.该联机帮助页给出了以下示例:

Add the following line to /etc/pam.d/passwd to rebuild the
   NIS database after each local password change:

               passwd optional pam_exec.so seteuid make -C /var/yp

   This will execute the command

       make -C /var/yp

   with effective user ID.

这可以扩展为在身份验证,帐户,密码和会话操作上运行;可能会话最好在登录时执行.只需添加如下行:

session optional pam_exec.so log=/var/log/ssh_login_cmd /usr/local/bin/ssh_cmd

到/etc/pam.d/sshd控制文件.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读