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
gabemai
quelle
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

Jaime Agudo
quelle
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

Nate
quelle
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.

Yurenchen
quelle
1

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

Flup
quelle
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.

Alexander Zhak
quelle