質問: pam_exec.soを使用して、ユーザーがログインしたときに(ユーザー情報を抽出しながら)rootとしてスクリプトを実行しますか? 質問ユーザーがpam_exec.so(またはそれ以外)でログインしたときに、スクリプトをrootとして実行するにはどうすればよいですか?スクリプトが機能するには、ユーザーに関する情報が必要です。問題と環境ユーザーがログインするたびにrootとしてスクリプト(/path/script.sh)を実行したいと思います。また、(たとえば、環境変数やスクリプトの引数として)ログインしたユーザーを知る必要があります。 centos 7の最新バージョンを使用しています。私は現在/etc/pam.d/system-authを編集して次の行を追加しています:session optional pam_exec.so /path/script.sh これは、sudo suを使用してユーザーになると正常に機能しますが、それ以外の場合はユーザーに対して認証を行うと機能しません(スクリプトはrootとして実行する必要があります)。言い換えると、$ su - robot7 password: /path/script.sh failed: exit code 1 -bash-4.2$ 失敗する$ sudo su - robot7 last login: thu jun 14 09:33:56 mdt 2018 on pts/5 -bash-4.2$ が機能し、期待どおりにスクリプトを実行します。ただし、ユーザーが切断したときにもスクリプトが実行されます。 2番目の場合の変数$pam_userは正しいユーザー名です(rootではなくrobot7)。このスクリプトは、ユーザーがスクリプトを無効にできないようにする必要があり、シェルが異なる可能性がある実稼働環境で使用されます。 .bashrcなどのスクリプトを使用して実行することはできません。コマンドを/etc/pam.d/system-authでauthではなくsessionで実行するように設定すると(同様の質問で提案されているように)、neverが実行されます。編集するseteuidをpam_exec.soコマンドに追加すると、ユーザーが認証されたときにスクリプトを実行できますが(su - robot7)、sshでスクリプトは実行されません(ユーザーがログを記録する主要な方法です)に)。
回答: セキュリティコンテキストにより、スクリプトは実行されませんでした。 systemdログは、すべてのユーザーがスクリプトの実行を許可されていても、スクリプトが実行に失敗したことを示唆しています。一部のセキュリティポリシーでは、スクリプトのパスが適切ではありませんでした。スクリプトを/binに移動すると、エラーはすぐに解決されました。