Różne wyjścia dla `w`,` who`, `whoami` i` id`


9

Na platformach wiersza poleceń online, takich jak na przykład Codecademy, kiedy uruchamiam

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

dostaję

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

Zauważ, że tylko whoamii idwypisz coś. Kiedy uruchamiam to samo na swoim komputerze, widzę podobne wyniki dla wszystkich poleceń.

Dlaczego Codecademy nie wyświetla użytkownika dla wi who? Czym różnią się te polecenia?

Odpowiedzi:


13
  • id raporty
    • aktualne referencje własnego procesu; lub
    • poświadczenia określonego użytkownika odczytane z bazy danych kont systemowych .
  • whoami zgłasza aktualne poświadczenia własnego procesu.
  • whoi wzgłoś tabelę aktywnych sesji logowania z bazy danych logowania .

BSD doco zauważa, że whoamiwykonuje podzbiór zadania idi idczyni go przestarzałym.

System nie musi mieć aktywnej tabeli sesji logowania. W systemach operacyjnych Linux i BSD, jeśli tabela nie została utworzona podczas ładowania lub została usunięta, system będzie działał bez niej. Co więcej, logowanie i wylogowanie nie tworzy go w systemach operacyjnych Linux.

Ponadto tabela nie musi być czytelna dla nieuprzywilejowanych użytkowników i ani polecenie whoani wnie zgłosi tego jako błędu.

Dalsza lektura

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.