Saídas diferentes para `w`,` who`, `whoami` e` id`

9

Nas plataformas de linha de comando online, como por exemplo a da Codecademy, quando corro

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

eu recebo

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

Note que somente whoamie idproduz algo. Quando executo a mesma coisa no meu computador, vejo resultados semelhantes para todos os comandos.

Por que o Codecademy não exibe o usuário we who? O que há de diferente nesses comandos?

Quem sou eu
fonte

Respostas:

13
  • id relatórios
    • as credenciais atuais de seu próprio processo; ou
    • as credenciais de um usuário nomeado, conforme lidas no banco de dados da conta do sistema .
  • whoami relata as credenciais atuais de seu próprio processo.
  • whoe wrelate a tabela de sessões de logon ativo do banco de dados de logon .

O BSD doco observa que whoamifaz um subconjunto do trabalho de id, e o idtorna obsoleto.

Um sistema não precisa ter uma tabela de sessões de login ativa. Nos sistemas operacionais Linux e nos BSDs, se a tabela não tiver sido criada no bootstrap ou tiver sido excluída desde então, o sistema funcionará sem uma. Efetuar login e logout não o cria implicitamente nos sistemas operacionais Linux, além disso.

Além disso, a tabela não precisa ser lida por usuários sem privilégios e whonem o wcomando nem o comando reportarão isso como um erro.

Leitura adicional

JdeBP
fonte