Ssh
在 ssh 登錄之前執行腳本……但只執行一次
我希望有人可以對這個問題提供一些見解,我找到了在 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
#!/bin/sh if [ "$PAM_TYPE" != "open_session" ] then exit 0 else Your script here
編輯:參考:http ://www.linux-pam.org/Linux-PAM-html/sag-pam_exec.html