セッションを開いたときに、セッションを開いたユーザーとしてスクリプトを実行する必要があります。
/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
残念ながら、私はいつもを取得します 実効IDおよび実IDとして。
何か足りないのですか?
別の方法として、pam-scriptと混同しないようにpam_scriptの存在を知っています。
そのpam_scriptはデフォルトで現在のユーザーとして実行され、オプションrunas
があります ルートとして実行するように強制します。ただし、ディストリビューション(Ubuntu 12.04)にすでにパッケージ化されているpamライブラリの使用を特権的にしたいと思います。
承認された回答:
ええと、あなたは/usr/local/bin/test_pam_foo.sh
を持つことができます
PAM_USER
にあるため、ユーザーを変更します 環境変数。
pam_exec
のメモに注意してください 環境を潜在的に制御しているユーザーに関するマニュアルページ(使用するサービスによって異なります(su
など) ))。したがって、スクリプトを使用することはおそらく良い考えではありません($PATH
を修正したとしても) その他の問題のある変数には、bashスクリプトのSHELLOPTSやBASH_ENVなど、何もできないものがあります。
スクリプトを呼び出す前に、ラッパーを使用してユーザーを変更するのが最善です。