Whoami: Name für Benutzer-ID 0 kann nicht gefunden werden


8

Wenn ich laufe whoami, heißt es:

whoami: Name für Benutzer-ID 0 kann nicht gefunden werden

Meine /etc/passwdDatei sieht folgendermaßen aus:

root::0:0:root:/root:/bin/bash

Dein / etc / passwd ist kaputt? Können Sie den Inhalt posten
Gänseblümchen

Was ist Ihr id commandin , current shellwenn Sie whoami bekommen ?.
PersianGulf

7
(1) Welche Linux-Distribution? (2) Was ist die Ausgabe von pwckund grpck? (3) Existiert eine Datei /etc/shadow?
John Siu

5
Haben Sie auch Verzeichnisdienste (LDAP, NIS usw.) eingerichtet (oder versucht)? Hast du berührt /etc/nsswitch.conf?
Derobert

1
Ich denke, nsswitch.confwie derobert es erwähnt hat. Aber ich habe schon mal nscdso komischen Mist gesehen . Wenn es läuft, versuchen Sie es zu stoppen. Wenn es nicht läuft, versuchen Sie es zu starten (obwohl das Starten, wenn es nicht läuft, ein alter RHEL-Fehler war, der nicht mehr auftreten sollte).
Patrick

Antworten:


7

Beachten Sie, dass ein Fehler vorliegt x

Dies ist der Inhalt von mir unter Linux Mint mit Kernel 3.8.0-35-generic

root:x:0:0:root:/root:/bin/zsh

Die xbedeutet , dass die tatsächlichen Kennwortinformationen in einer separaten Schattenkennwortdatei gespeichert werden, tipically/etc/shadow

https://en.wikipedia.org/wiki/Passwd


6

Ich würde empfehlen, die Berechtigungen für /etc/passwdund zu überprüfen /etc/group. Wenn sie nicht auf 644 ( -rw-r--r--) eingestellt sind, führen Sie Folgendes aus:

chmod 644 /etc/passwd; chmod 644 /etc/group


sagt immer noch, kann den Namen für die Benutzer-ID 0 nicht finden
gabemai

6

Sag einfach meine Erfahrung

0. Problem

bei defektem Gerät:

cat /etc/passwd
root:x:0:0:root:/root:/bin/bash

und

whoami
whoami: cannot find name for user ID 0

auf normalem Gerät:

whoami
root

1. Forschung

versuche den Grund zu finden:

strace whoami 2>&1 | grep -E '/etc|/lib'
...
open("/lib/arm-linux-gnueabi/libnss_compat.so.2", O_RDONLY) = 3
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/lib/arm-linux-gnueabi/libnsl.so.1", O_RDONLY) = 3
open("/etc/ld.so.cache", O_RDONLY)      = 3
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/lib/arm-linux-gnueabi/libnss_nis.so.2", O_RDONLY) = 3
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/lib/arm-linux-gnueabi/libnss_files.so.2", O_RDONLY) = 3
open("/etc/passwd", O_RDONLY|O_CLOEXEC) = 3

fand es braucht die * .so:

/lib/arm-linux-gnueabi/libnss_compat.so.2
/lib/arm-linux-gnueabi/libnsl.so.1
/lib/arm-linux-gnueabi/libnss_nis.so.2
/lib/arm-linux-gnueabi/libnss_files.so.2

// Alle kommen aus dem libc6Paket, ich arbeite mit Arm Linux Gerät.

2. Auflösung

Ich kopiere sie auf das kaputte Gerät und whoamiarbeite dann richtig.

und Bash-Eingabeaufforderung I have no name!@localhostbehoben.


1

Überprüfen Sie, ob jede Zeile /etc/passwdgenau sieben Felder enthält.


0

Ich weiß, dass es pünktlich ist, aber der Grund könnte coreutilsohne ACL-Unterstützung kompiliert werden. Überprüfen Sie es und erstellen Sie das Paket bei Bedarf neu.

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.