誰かがこの問題について何らかの洞察を提供してくれることを願っています。sshログインの前にスクリプトを実行するための解決策を見つけました。これは、/ etc/pam.d/sshd内に次の行を配置し、/ etc/ssh/sshd_configでpam認証を許可することによって行われました。
session required pam_exec.so /home/pc/myScript.sh
そして、それはうまく機能しました。私が気付いた問題は、SSHセッションを終了した後、スクリプトが再び実行されることでした。この特定の動作は私のスクリプトの目的を完全に破ります、これを修正する方法はありますか?実行する時間かどうかについてファイルからの書き込み/読み取りができると思いますが、もっと良い方法があるかどうか疑問に思っています。
追加情報
wall
を実行して、スクリプトが2回実行されたと判断しました。
#%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_TYPE
のようなPAMで利用可能な環境変数を使用できます
#!/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