Was würde dazu führen, dass ps uid statt username meldet?


28

Ich habe Eucalyptus auf meinem Linux-Computer installiert und festgestellt, dass bei Prozessen, die dem Eucalyptus-Benutzer gehören, ps die Benutzer-ID anstelle des Benutzernamens ausgibt. Zum Beispiel:

$ 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

Was würde dazu führen, dass dies passiert?

Beachten Sie, dass es einen richtigen Eintrag in / etc / passwd gibt:

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

Beachten Sie auch, dass die Eigenschaft ls den Besitz von Dateien durch das Eukalyptus-Konto meldet:

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

Antworten:


41

ps Verwendet die UID, wenn der Benutzername länger als 8 Zeichen ist.


Guter Anruf. Auf der Manpage: "Dies ist die Benutzer-ID in Textform, sofern verfügbar und die Feldbreite dies zulässt, oder eine Dezimaldarstellung, sofern nicht anders angegeben."
Michael Mrozek

Oder vielleicht gibt es keine Möglichkeit, die UID in einen Namen zu übersetzen.
Vonbrand

12

Sie können die Breite der Spalten steuern:

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

Dies gibt das uFormat von wieder ps u, macht das Benutzerfeld jedoch 12 Zeichen breit.


0

Sicher haben Sie ein Problem mit Ihrer / etc / passwd ... Sie haben es manuell bearbeitet, nicht wahr? :)

Trotzdem habe ich das Problem reproduziert, indem ich die Zeile des Benutzers in / etc / passwd kopiert und den Benutzernamen durch die Benutzer-ID geändert habe.

So was:

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

Beachten Sie, dass der "nummerierte Benutzer" der erste ist.

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

Versuche "whoami" auszuführen, sicher, dass es 107 ergibt :)

Es ist ein seltsames Verhalten, ps gibt die Nummer zurück und ls den normalen Namen: -m ...

Um es zu lösen:

  • Bearbeiten Sie einfach / etc / passwd und löschen Sie den falschen Eintrag
  • oder 'userdel 107' verwenden, aber alle Programme von Eukalyptus müssen gestoppt werden
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.