web-dev-qa-db-ja.com

sshログインの前にスクリプトを実行しています...ただし1回のみ

誰かがこの問題について何らかの洞察を提供してくれることを願っています。sshログインの前にスクリプトを実行するための解決策を見つけました。これは、/ etc/pam.d/sshd内に次の行を配置し、/ etc/ssh/sshd_configでpam認証を許可することによって行われました。

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

そして、それはうまく機能しました。私が気付いた問題は、SSHセッションを終了した後、スクリプトが再び実行されることでした。この特定の動作は私のスクリプトの目的を完全に破ります、これを修正する方法はありますか?実行する時間かどうかについてファイルからの書き込み/読み取りができると思いますが、もっと良い方法があるかどうか疑問に思っています。

追加情報

  • OSはFedoraサーバーです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
4
notsoslimshady

$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

4
maxxvw