みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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

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

OSはRHEL4およびSLES9(SuSE)です。

投稿日時 - 2009-02-27 15:00:03

QNo.4753686

困ってます

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

>SUを実行すると、環境変数がすべてSU後のユーザーのものになってしまいます

必ずしもそうとは言えないのでは?
su - ならば切り替わりますが。
今回の本題では内容なので置いておいて…

suで一般ユーザーになった後、さらにsuで……とかいうのはナシでよいのでしょうか?
つまり、元々ログインしたユーザーを知りたい。ということで…。

ps auf | head -n 2 | tail -n 1 | awk '{print $1}'
でどうでしょう?

と、ここまで書いてから#3で指摘されているwhoコマンドを試してみました。
そちらの方が早そうですな。
# せっかく書いたのでこのまま投稿。

投稿日時 - 2009-02-28 02:13:07

お礼

ご回答ありがとうございます!
Wr5さんからの回答からヒントを得て

ps Tu | head -n 2 | tail -n 1 | awk '{print $1}'
でできましたっ!!

なんか深夜に無駄に一人で感動してしまいました.
ありがとうございますっ!

投稿日時 - 2009-02-28 04:22:09

ANo.4

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.3

who でわかりませんか?

投稿日時 - 2009-02-28 00:19:23

お礼

申し訳ありません、「知る方法」というのに語弊があったかもしれません.
先ほどの回答へのリプライにも書きましたが、
PAMのバグ回避のために、suを実行してスイッチされたあとのユーザーの.profileの中で元のuidが何だったかを知りたいのです.
whoではその時点でコンソールを開いているユーザーが表示されますよね?

確かにwhoコマンドを管理者がたたいて今ログインしているユーザーが誰かを管理者は「知る」ということはできますが...

実装したい内容を整理すると以下の通りです.
仮にuserというユーザーがいたとします.
userでログイン後
su - test
でtestというユーザーにスイッチ
testというユーザーの.profileで、
今suしてきたユーザーはuserさんだけど、このuserさんがtestにsuしていいユーザーかどうかを判断するロジックを組みたいのです.

あくまでPAM 0.77のバグ回避のためのロジックを考えています.

まぁ、最悪PAMをソースからコンパイルして実装する手もありますが(笑)

投稿日時 - 2009-02-28 04:04:31

ANo.2

コンソールから、exit 又は [Ctrl] + D でsu する前のユーザー
に戻れますが、それでは駄目ですか?

#通常は、ログインユーザー自身がsuを実行すると思いますが?
#それが誰か不明という状況が良く判りません。

投稿日時 - 2009-02-27 22:36:36

お礼

えっと、実はPAMのバグでpam_wheel.soを使用すると
一般ユーザー→root
だけでなく
一般ユーザー→一般ユーザー
の切り替えもできなくなってしまうのです。
これをどうにか避けるために、一般ユーザーからrootに切り替えたときに元のユーザーを見てそれがrootに切り替えていいユーザーかどうか判断したかったのです。

ちなみにRHEL5ではこのバグは直っていますが、RHEL4のバグフィックスではもう直す予定はないそうです。

SUのコマンドを入力した人が自分が誰だったかを知りたいわけではなく、管理者というか、.profileで判断したいというのが質問の意図です。言葉が足りず申し訳ありません。

投稿日時 - 2009-02-27 23:48:33

ANo.1

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

投稿日時 - 2009-02-27 15:38:33

お礼

ありがとうございます。
don_goさんへの回答への返答にも書きましたが、
.profileの中で、判断したいのでsuを実行直後に確認したいという意味でしたので、historyだとちょっとできないです。

誰がsuしてrootになったかを後で知りたいのであればログを見ればsuの実行履歴が残ってますので、それで十分なのですが・・・。

投稿日時 - 2009-02-27 23:52:07

あなたにオススメの質問