• ベストアンサー

su前のユーザー名もしくはUIDを知るには?

SUを実行すると、環境変数がすべてSU後のユーザーのものになってしまいますし、確認するためのコマンドも存在しないようにみえます。 そのユーザーが元々誰であったかを知る方法があるかどうか皆様のお知恵を拝借させていただきたいです。 OSはRHEL4およびSLES9(SuSE)です。

質問者が選んだベストアンサー

  • ベストアンサー
  • Wr5
  • ベストアンサー率53% (2173/4061)
回答No.4

>SUを実行すると、環境変数がすべてSU後のユーザーのものになってしまいます 必ずしもそうとは言えないのでは? su - ならば切り替わりますが。 今回の本題では内容なので置いておいて… suで一般ユーザーになった後、さらにsuで……とかいうのはナシでよいのでしょうか? つまり、元々ログインしたユーザーを知りたい。ということで…。 ps auf | head -n 2 | tail -n 1 | awk '{print $1}' でどうでしょう? と、ここまで書いてから#3で指摘されているwhoコマンドを試してみました。 そちらの方が早そうですな。 # せっかく書いたのでこのまま投稿。

hachibay
質問者

お礼

ご回答ありがとうございます! Wr5さんからの回答からヒントを得て ps Tu | head -n 2 | tail -n 1 | awk '{print $1}' でできましたっ!! なんか深夜に無駄に一人で感動してしまいました. ありがとうございますっ!

すると、全ての回答が全文表示されます。

その他の回答 (3)

  • notnot
  • ベストアンサー率47% (4903/10364)
回答No.3

who でわかりませんか?

hachibay
質問者

お礼

申し訳ありません、「知る方法」というのに語弊があったかもしれません. 先ほどの回答へのリプライにも書きましたが、 PAMのバグ回避のために、suを実行してスイッチされたあとのユーザーの.profileの中で元のuidが何だったかを知りたいのです. whoではその時点でコンソールを開いているユーザーが表示されますよね? 確かにwhoコマンドを管理者がたたいて今ログインしているユーザーが誰かを管理者は「知る」ということはできますが... 実装したい内容を整理すると以下の通りです. 仮にuserというユーザーがいたとします. userでログイン後 su - test でtestというユーザーにスイッチ testというユーザーの.profileで、 今suしてきたユーザーはuserさんだけど、このuserさんがtestにsuしていいユーザーかどうかを判断するロジックを組みたいのです. あくまでPAM 0.77のバグ回避のためのロジックを考えています. まぁ、最悪PAMをソースからコンパイルして実装する手もありますが(笑)

すると、全ての回答が全文表示されます。
  • don_go
  • ベストアンサー率31% (336/1059)
回答No.2

コンソールから、exit 又は [Ctrl] + D でsu する前のユーザー に戻れますが、それでは駄目ですか? #通常は、ログインユーザー自身がsuを実行すると思いますが? #それが誰か不明という状況が良く判りません。

hachibay
質問者

お礼

えっと、実はPAMのバグでpam_wheel.soを使用すると 一般ユーザー→root だけでなく 一般ユーザー→一般ユーザー の切り替えもできなくなってしまうのです。 これをどうにか避けるために、一般ユーザーからrootに切り替えたときに元のユーザーを見てそれがrootに切り替えていいユーザーかどうか判断したかったのです。 ちなみにRHEL5ではこのバグは直っていますが、RHEL4のバグフィックスではもう直す予定はないそうです。 SUのコマンドを入力した人が自分が誰だったかを知りたいわけではなく、管理者というか、.profileで判断したいというのが質問の意図です。言葉が足りず申し訳ありません。

すると、全ての回答が全文表示されます。
  • OKwebb
  • ベストアンサー率44% (92/208)
回答No.1

直接じゃないんですが・・・。 historyファイル使って 誰が誰になって何のコマンド打った みたいなことを見たりしますね。

hachibay
質問者

お礼

ありがとうございます。 don_goさんへの回答への返答にも書きましたが、 .profileの中で、判断したいのでsuを実行直後に確認したいという意味でしたので、historyだとちょっとできないです。 誰がsuしてrootになったかを後で知りたいのであればログを見ればsuの実行履歴が残ってますので、それで十分なのですが・・・。

すると、全ての回答が全文表示されます。

関連するQ&A