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

前端之家收集整理的这篇文章主要介绍了每当有人通过SSH登录到Linux盒子时执行程序前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个小型SSH服务器,我想编写一个脚本,每次有人通过SSH登录时运行.

现在,我该怎么做呢?

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

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

谢谢.

解决方法

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

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

如果要强制用户执行一个程序,并且只执行一个程序,则DigitalRoss所描述的ForceCommand选项是一种很好的方法. (我个人会进一步限制用户使用mandatory access control系统,如AppArmor,SELinux,TOMOYOSMACK,以确保程序不允许用户逃脱.我已经在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控制文件.

原文链接:https://www.f2er.com/linux/401157.html

猜你在找的Linux相关文章