`su`の後に新しいユーザーIDが表示されないときの` who am i`は?


9

ユーザーを切り替えてsu <username>実行すると、切り替えたユーザーではwho am iなく、ログインしていた前のユーザーが出力されるのはなぜですか?

回答:


13

間違ったコマンドを実行している可能性があります。

  • whoログインしているユーザー、つまり端末を所有しているユーザーを表示することを目的としています。次のような行を返します。

    ckhan    pts/1        2012-11-05 03:06 (c-21-13-25-10.ddw.ca.isp.net)
    
  • whoamiそれを実行している人の実効ユーザーIDが何であるかを示すことを意味します。これは、次のように1つの名前だけを返します(これは、runningと同じですid -un)。

    ckhan
    

2つの無視された引数(、)who am iで実行されたターミナルで文字どおりに入力した可能性があります。whoami

詳細についてはman who、およびman whoamiを参照してください。


2
二つの引数ami無視されていない、彼らはさえPOSIXによって指定されている:「POSIXロケールでは、と等価で呼び出しているユーザー、記述に出力を制限する-mオプションを選択します。」
xhienne

3

私のUbuntu 12.04.2の「who」コマンド、「who am i」(または2つの引数を持つwho)のマニュアルページでは、「who -m」と同じであり、STDINに関連付けられているホスト名とユーザーが表示されます。ただし、「who am i」では出力がありません。マニュアルページが間違っているか、コマンドにバグがあります。いずれにせよ、ckhanが以前に回答したように、 'whoami'コマンドは有効なユーザーIDのユーザー名を提供します。少なくともUbuntu 12.04.2では、id、 'who am i'、 'whoami'のいずれも、現在の端末にログインしているユーザーのユーザー名だけを提供しません。回避策として、次のようにしてそれを得ることができます:

who | sed 's/ .*//'

これはLinux固有のものであることに注意してください。これは、Unix / SunOSの元のユーザー名を返します。
2015年

3

回避策

ls -l `tty` | awk '{print $3}'

からの代替品として機能しwho am i | awk '{print $1}'ます。以下の説明:

多くのシステムでは、「who am i」は「」と同等who -mです。ここでの問題は、一部の端末では " who -m"が何も返さないことです。

例1 xfce4-terminalから実行

Pegasus ~ # whoami
root
Pegasus ~ # who am i
thomas   pts/1        2017-08-19 11:15 (:0.0)
Pegasus ~ # who -m
thomas   pts/1        2017-08-19 11:15 (:0.0)
Pegasus ~ # who
thomas   tty8         2017-08-19 10:18 (:0)
thomas   pts/1        2017-08-19 11:15 (:0.0)
thomas   pts/5        2017-08-19 16:16 (:0.0)
Pegasus ~ # who am i | awk '{print $1}'
thomas
Pegasus ~ # 

例2はgnome-terminalから(同じコンピューター、同じコマンド)

Pegasus ~ # whoami
root
Pegasus ~ # who am i
Pegasus ~ # who -m
Pegasus ~ # who
thomas   tty8         2017-08-19 10:18 (:0)
thomas   pts/1        2017-08-19 11:15 (:0.0)
thomas   pts/5        2017-08-19 16:16 (:0.0)
Pegasus ~ # 

これは、gnome-terminalがutmpエントリを追加していないためです...


lsを解析しないでください!stat代わりに使用してください:まれにユーザー名にスペースが含まれることがあるため、stat -c '%U' "$(tty)"おそらくどちらも解析しwho am iないでください。
wjandrea
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.