O que faria o ps reportar uid em vez de nome de usuário?

28

Eu tenho o Eucalyptus instalado na minha máquina Linux e notei que, para processos de propriedade do usuário do eucalyptus, o ps reporta o ID do usuário em vez do nome de usuário. Por exemplo:

$ sudo -i -u eucalyptus
$ ps u
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
107      29764  0.0  0.0  19376  2104 pts/2    S    11:43   0:00 -bash
107      30198  0.0  0.0  15256  1180 pts/2    R+   11:44   0:00 ps u

O que faria com que isso acontecesse?

Observe que há uma entrada adequada no / etc / passwd:

$ grep eucalyptus /etc/passwd
eucalyptus:x:107:115::/var/lib/eucalyptus:/bin/bash

Observe também que a propriedade ls relata a propriedade dos arquivos pela conta de eucalipto:

$ touch foo
$ ls -l foo
-rw-r--r-- 1 eucalyptus eucalyptus 0 2010-09-23 11:47 foo
Lorin Hochstein
fonte

Respostas:

41

ps usa o uid quando o nome de usuário tiver mais de 8 caracteres.

Seth L
fonte
Boa decisão. Na página do manual: "Este será o ID do usuário em texto, se puder ser obtido e a largura do campo permitir, ou uma representação decimal caso contrário."
Michael Mrozek
Ou talvez não haja maneira de traduzir o UID para o nome.
vonbrand
12

Você pode controlar a largura das colunas:

ps o user:12,pid,%cpu,%mem,vsz,rss,tty,stat,start,time,comm

isso reproduz o uformato de ps u, mas torna o campo do usuário com 12 caracteres de largura.

Pausado até novo aviso.
fonte
0

Claro que você tem um problema com o seu / etc / passwd ... você o editou manualmente, não é? :)

de qualquer maneira, reproduzi o problema copiando a linha do usuário em / etc / passwd e alterando o nome do usuário pelo ID do usuário.

Como isso:

root@juice:/etc/# grep 129 /etc/passwd
129:x:129:137:Puppet configuration management daemon,,,:/var/lib/puppet:/bin/false
puppet:x:129:137:Puppet configuration management daemon,,,:/var/lib/puppet:/bin/false

Observe que o "usuário numerado" é o primeiro.

root@juice:/etc/# sudo -u puppet -s
129@juice:/etc/$ whoami
129

129@juice:/etc/$ touch /tmp/a
129@juice:/etc/$ ls -l /tmp/a
-rw-r--r-- 1 129 puppet 0 2010-09-23 19:12 /tmp/a

129@juice:/etc/$ ps u
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
129      12443  2.2  0.1   7112  4380 pts/1    S    19:12   0:00 /bin/bash
129      12490  0.0  0.0   2716  1068 pts/1    R+   19:12   0:00 ps u

Tente executar "whoami", com certeza ele retorna 107 :)

É um comportamento estranho, ps retorna o número e é o nome normal: -m ...

Para resolvê-lo:

  • basta editar / etc / passwd e excluir a entrada incorreta
  • ou use 'userdel 107', mas todos os programas do eucalipto devem ser interrompidos
Keymon
fonte