我希望有人可以对这个问题提供一些见解,我找到了在 ssh 登录之前执行脚本的解决方案。这是通过将以下行放在 /etc/pam.d/sshd 中并允许在 /etc/ssh/sshd_config 中进行 pam 身份验证来完成的
session required pam_exec.so /home/pc/myScript.sh
而且效果很好,我注意到的问题是退出 SSH 会话后脚本会再次运行。这种特殊行为完全破坏了我的脚本的目的,有没有办法解决这个问题?我想我可以从一个文件中写出/读取它的执行时间,但我想知道是否有更好的方法。
附加信息
- 操作系统是 Fedora 服务器 ARM 29
wall
我通过在 shell 脚本上执行确定脚本运行了两次- 这是我的 /etc/pam.d/shhd
.
#%PAM-1.0
auth substack password-auth
auth include postlogin
account required pam_sepermit.so
account required pam_nologin.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
### My script
session required pam_exec.so /home/pc/aScriptThatShouldOnlyRunOncePriorToLogin.sh
###
# 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
session optional pam_keyinit.so force revoke
session optional pam_motd.so
session include password-auth
session include postlogin
您可以使用 PAM 中可用的环境变量,例如
$PAM_TYPE
编辑:参考:http ://www.linux-pam.org/Linux-PAM-html/sag-pam_exec.html