我正在通过 SSH 登录系统,并且我希望能够在注销时强制运行命令,无论是有意注销(退出 shell)还是因为我的 SSH 连接已断开/已终止。有什么办法可以设置吗?我现在最好的猜测是将登录 shell 更改为一个程序,该程序拦截 SSH 关闭时发送的信号(SIGHUP?)然后执行命令,但我想知道是否有更简洁的解决方案。
phe*_*mer 24
最好的方法是使用pam。
在/etc/pam.d您将有多个文件,其中一人将被调用sshd。如果您只想影响 ssh,而不想影响其他登录(例如 GUI 或真实 TTY),则需要此文件。
如果您想影响所有登录,您需要一个“通用”文件。这个其他“通用”文件的名称因发行版而异,但您可以通过遵循文件中的includeandsubstack语句来跟踪它,sshd直到找到基本文件。
确定/etc/pam.d要使用的文件后,在该session部分添加如下一行:
session optional pam_exec.so quiet /etc/pam_session.sh
Run Code Online (Sandbox Code Playgroud)
这将导致/etc/pam_session.sh每次有人登录和注销(无论是正常还是不正常)时都会调用。
现在您只需要创建/etc/pam_session.sh. 下面是一个例子,你可以用来在每次有人注销时运行一些东西:
#!/bin/sh
if [ "$PAM_TYPE" = "close_session" ]; then
something
fi
Run Code Online (Sandbox Code Playgroud)
(不要忘记chmod a+x脚本)