Privileged Identity Manager (以下、 PIM) が稼働する環境で、su コマンドを使用して他のユーザのパスワードを変更しようとするとエラーになる。ただし、別のマシンでは成功するケースもある。
トレースを確認すると以下のような動作になっていた。
18 Feb 2025 15:29:06> EXECsu : P=143777 U=909832 G=15000 (D=fd00 I=6599167) Pgm:/usr/bin/passwd
18 Feb 2025 15:29:06> EXECARGS: 'passwd'
18 Feb 2025 15:29:06> INFO : Cache [SET] fn=/usr/bin/passwd un=<user> prog=<program> acc=80
18 Feb 2025 15:29:06> EXEC > Result: 'P' [stage=201 gstag=200 ACEEH=9 rv=0(/usr/bin/passwd)]
Why? Class checks not active
18 Feb 2025 15:29:06> FORK : P=143777 U=909832 G=15000 Child=143778 ACEEH=9 F=80000001 Pgm:/usr/bin/passwd
18 Feb 2025 15:29:06> SUID : P=143778 U=909832 (R=909832 E=0 S=0 ) to USER.root (R=0 E=0 S=0 ) D=0000fd00 I=6599167
18 Feb 2025 15:29:06> SUID > Result: 'D' [stage=69 gstag=0 ACEEH=9 rv=0]
Why? No Step that allowed access
成り代わりが有効なグループに <user> を追加するか、User.root のアクセサに <user>を追加すると正常に動作する。
その時のトレースは以下の通り。
20 Feb 2025 12:57:33> EXECsu : P=111455 U=909832 G=15000 (D=fd00 I=4292779) Pgm:/usr/bin/passwd
20 Feb 2025 12:57:33> EXECARGS: 'passwd'
20 Feb 2025 12:57:33> INFO : Cache [SET] fn=/usr/bin/passwd un=xe26298 prog=<program> acc=80
20 Feb 2025 12:57:33> EXEC > Result: 'P' [stage=59 gstag=59 ACEEH=25 rv=0(/usr/bin/passwd)]
Why? Resource UACC check
20 Feb 2025 12:57:33> FORK : P=110313 U=909832 G=15000 Child=111455 ACEEH=25 F=80000c05 Pgm:/usr/bin/passwd
いくつかのプラットフォームではシステムの su コマンドが標準とは違う動作をする場合があります。
この場合、rootでないユーザが別のユーザの成り代わりをリクエストする際に、一旦、rootになってから対象のユーザに成り代わる動作を行います。
PIM や PAMSCではデフォルトでrootユーザへの成り代わりの代理保護が設定されているため、このような動作が保護されてしまう可能性があります。
このような動作をするプラットフォームで su コマンドが代理保護を回避するには、以下の seos.ini 内の bypass_suid_program トークンを設定してseosd を再起動することでも可能になります。
; Default Value: none
; bypass_suid_program =/usr/bin/passwd
本文書は 以下の英文の KB を翻訳し、加筆修正しました。
Article ID: 388780: Surrogate to USER.root does not work when changing password