SSHログイン前にスクリプトを実行してください。しかし、一度だけ実行してください。

SSHログイン前にスクリプトを実行してください。しかし、一度だけ実行してください。

誰かがこの問題に関する洞察を提供できることを願っています。 SSHログイン前にスクリプトを実行するソリューションを見つけました。これは、/etc/pam.d/sshd に次の行を配置し、/etc/ssh/sshd_config で pam 認証を許可することによって行われます。

session    required pam_exec.so /home/pc/myScript.sh

うまくいきます。私が見つけた問題は、SSHセッションを終了した後にスクリプトが再実行されることです。この特定の動作は私のスクリプトの目的を完全に崩します。この問題を解決する方法はありますか?実行時間であれば、ファイルから書き込んだり読むことができるようですが、より良い方法があるかどうか疑問に思います。

追加情報

  • オペレーティングシステムはFedora Server ARM 29です。
  • wallシェルスクリプトを実行して、スクリプトが2回実行されたことを確認しました。
  • これは私の/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

ベストアンサー1

たとえば、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

おすすめ記事