Output berbeda untuk `w`,` who`, `whoami` dan` id`

9

Di platform baris perintah online, seperti misalnya yang ada di Codecademy, ketika saya menjalankan

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

saya mendapat

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)     
=========================                   

Catat itu saja whoamidan idhasilkan sesuatu. Ketika saya menjalankan hal yang sama di komputer saya, saya melihat hasil yang sama untuk semua perintah.

Mengapa Codecademy tidak menampilkan pengguna untuk wdan who? Apa yang berbeda dari perintah ini?

siapa saya
sumber

Jawaban:

13
  • id laporan
    • kredensial saat ini dari prosesnya sendiri; atau
    • kredensial pengguna yang disebutkan, sebagaimana dibacakan dari basis data akun sistem .
  • whoami melaporkan kredensial saat ini dari prosesnya sendiri.
  • whodan wlaporkan tabel sesi login aktif dari database login .

Catatan doco BSD yang whoamimelakukan subset dari pekerjaan id, dan yang idmembuatnya usang.

Sistem tidak harus memiliki tabel sesi login aktif. Pada sistem operasi Linux dan pada BSD, jika tabel belum dibuat saat bootstrap, atau telah dihapus sejak itu, sistem akan beroperasi tanpa satu. Masuk dan keluar tidak secara implisit membuatnya di sistem operasi Linux, apalagi.

Selain itu, tabel tidak perlu dibaca oleh pengguna yang tidak memiliki hak pribadi dan baik perintah whomaupun tidak wakan melaporkan ini sebagai kesalahan.

Bacaan lebih lanjut

JdeBP
sumber