'quem sou eu' depois de 'su' não mostrar o novo ID de usuário?

7

Por que quando eu alterno o usuário su <username> e, em seguida, executo who am i , é gerado o usuário anterior no qual eu estava logado e não aquele com o qual eu mudei?

    
por user1091856 16.11.2012 / 07:40

3 respostas

11

Você provavelmente está executando o comando errado.

  • who destina-se a mostrar quem está conectado, ou seja, qual usuário é o proprietário do terminal. Ele retorna uma linha como esta:

    ckhan    pts/1        2012-11-05 03:06 (c-21-13-25-10.ddw.ca.isp.net)
    
  • whoami significa para mostrar a você qual é o ID de usuário efetivo da pessoa que o está executando. Ele retorna apenas um único nome, como este (e equivale a executar id -un ):

    ckhan
    

Acho que você pode ter digitado literalmente who am i no terminal, que executou who com dois argumentos ignorados ( am , i ).

Veja man who e man whoami para mais detalhes.

    
por 16.11.2012 / 09:08
3

Por minha página de manual do Ubuntu 12.04.2 para o comando 'who', 'who am i' (ou com dois argumentos) é o mesmo que 'who -m' e deve fornecer o nome do host e o usuário associado STDIN. No entanto, não obtenho saída com 'quem sou eu'. A página man está errada ou o comando tem um erro. Independentemente disso, como anteriormente respondido pelo ckhan, o comando 'whoami' lhe dará o nome de usuário para o seu ID de usuário efetivo. Pelo menos no Ubuntu 12.04.2, nenhum dos id, 'who am i', ou 'whoami' vai te dar apenas o nome de usuário da pessoa logada no terminal atual. Como solução alternativa, você pode conseguir isso com:

who | sed 's/ .*//'
    
por 23.03.2013 / 19:10
3

Solução alternativa :

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

que funciona como substituto de who am i | awk '{print $1}' . Explicação abaixo:

Em muitos sistemas, " who am i " é equivalente a " who -m ". O problema aqui é que com alguns terminais , " who -m " não retorna nada!

Exemplo # 1 executado a partir de um terminal xfce4

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 ~ # 

mas Exemplo # 2 de um terminal gnome (mesmo computador, mesmos comandos)

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 ~ # 

Isto parece ser uma consequência do gnome-terminal não adicionar entradas utmp…

    
por 20.08.2017 / 20:39

Tags