セッションが開いたら、セッションを開いたユーザーとしてスクリプトを実行する必要があります。
/etc/pam.d/common-sessionに以下を追加しました。
session optional pam_exec.so log=/tmp/test_pam_foo.log /usr/local/bin/test_pam_foo.sh
また、pam_execオプションを有効にしてみました。seteuid
基本スクリプト /usr/local/bin/test_pam_foo.sh:
#!/bin/sh
id -u >> /tmp/test_pam_foo
id -ru >> /tmp/test_pam_foo
残念ながら、0
有効なIDと実際のIDを取得し続けます。
私は何を逃したことがありませんか?
代わりに、私は存在することを知っています。pam_script、対話しないでください。パムスクリプト。
pam_scriptはデフォルトで現在のユーザーとして実行され、オプションで強制的にrootとしてrunas
実行できます。しかし、私のディストリビューション(Ubuntu 12.04)にすでにパッケージされているpamライブラリの使用に優先順位を付けたいと思います。
答え1
まあ、あなたは持つことができます/usr/local/bin/test_pam_foo.sh
PAM_USER
環境変数にあるとおりにユーザーを変更します。
pam_exec
ユーザーが環境に持つ可能性のある潜在的な制御に関するマニュアルページの注意事項を参照してください(これを使用するサービスsu
によって異なります)。したがって、スクリプトを使用するのはおそらく良い考えではありません(他の問題のある変数を変更しても、$PATH
bashスクリプトのSHELLOPTSやBASH_ENVなど何もできない変数があるでしょう)。
スクリプトを呼び出す前に、ラッパーを使用してユーザーを変更することをお勧めします。