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.