问题
当登录用户退出 ssh 会话时,如何执行特定的脚本或者命令。
所以这就像配置一个 post 脚本或者触发器来在用户退出 ssh 会话时执行所需的操作。
更多: zhilu jiaocheng
解决方法
这可以在 CentOS/RHEL 系统中的 pam 模块的帮助下轻松完成。
按照下面列出的步骤配置 pam 模块。
- 将以下条目添加到 pam 配置文件 /etc/pam.d/sshd :
# vi /etc/pam.d/sshd session optional pam_exec.so quiet /var/tmp/post_session.sh
其中:
/var/tmp/post_session.sh 是我们的脚本,它将在用户注销时运行。
/etc/pam.d/sshd 配置文件应如下所示:
# cat /etc/pam.d/sshd #%PAM-1.0 auth required pam_sepermit.so auth substack password-auth auth include postlogin # Used with polkit to reauthorize users in remote sessions -auth optional pam_reauthorize.so prepare account required pam_nologin.so account required pam_access.so account include password-auth password include password-auth # pam_selinux.so close should be the first session rule session required pam_selinux.so close session required pam_loginuid.so # pam_selinux.so open should only be followed by sessions to be executed in the user context session required pam_selinux.so open env_params session required pam_namespace.so ####Trigger with user logout ##### session optional pam_exec.so quiet /var/tmp/post_session.shsession optional pam_keyinit.so force revoke session include password-auth session include postlogin # Used with polkit to reauthorize users in remote sessions -session optional pam_reauthorize.so prepare
- 现在我们可以根据需要配置后触发脚本。
在本文中,我们将只把用户注销的时间添加到一个文件中。
例如:
# cat /var/tmp/post_session.sh #!/bin/bash if [ "$PAM_TYPE" = "close_session" ]; then date >> /var/tmp/user_logout.out ## This is the action to be performed when user logs out. fi
- 授予/var/tmp/post_session.sh 脚本的执行权限。
# chmod ugo+x /var/tmp/post_session.sh
- 通过多次登录和注销进行验证,我们应该将所有注销的时间添加到文件 /var/tmp/user_logout.out 中。
日期:2020-09-17 00:12:19 来源:oir作者:oir