`w`、` who`、 `whoami`および` id`の異なる出力


9

コマンドラインプラットフォームでは、たとえば、Codecademyのプラットフォームのように、実行すると

for cmd in w who whoami id
do
    echo $cmd
    $cmd
    echo =========================
    echo "             "
done

私は得る

w                              
00:52:54 up 8 days, 14:10,  0 users,  load average: 3.78, 2.98, 2.69      
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT       
=========================                            

who
=========================                                                 

whoami                          
ccuser                          
=========================                              
  
id
uid=1000(ccuser) gid=1000(ccuser) groups=1000(ccuser)     
=========================                   

だけに注意してwhoamiid何かを出力します。コンピューターで同じことを実行すると、すべてのコマンドで同様の結果が表示されます。

なぜCodecademyはwand のユーザーを表示しないのwhoですか?これらのコマンドの違いは何ですか?

回答:


13
  • id 報告書
    • 独自のプロセスの現在の資格。または
    • システムアカウントデータベースから読み取られた、指定されたユーザーの資格情報。
  • whoami 自身のプロセスの現在の資格情報を報告します。
  • whoログインデータベースwからアクティブなログインセッションテーブルを報告します

BSD doco whoamiは、の仕事のサブセットを実行し、それによって時代遅れになっているidと指摘idしています。

システムにアクティブなログインセッションテーブルがなくてもかまいません。LinuxオペレーティングシステムとBSDでは、ブートストラップ時にテーブルが作成されていないか、テーブルが削除されている場合、システムはテーブルなしで動作します。さらに、ログインしてログアウトしても、Linuxオペレーティングシステムでは暗黙的に作成されません。

さらに、権限のないユーザーがテーブルを読み取れる必要はありません。また、whowコマンドもこれをエラーとして報告しません。

参考文献

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.