Whoami: impossibile trovare il nome per l'id utente 0


8

Quando corro whoamidice:

whoami: impossibile trovare il nome per l'id utente 0

Il mio /etc/passwdfile è simile al seguente:

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

Il tuo / etc / passwd è rotto? Puoi pubblicare il contenuto
daisy

Qual è il tuo id commanda current shellquando si ottiene whoami ?.
Golfo Persico

7
(1) Quale distribuzione di Linux? (2) Qual è l'output di pwcke grpck? (3) Esiste un file /etc/shadow?
John Siu,

5
Inoltre, hai impostato (o tentato di) servizi di directory di qualche tipo (LDAP, NIS, ecc.)? Hai toccato /etc/nsswitch.conf?
derobert

1
Sto pensando nsswitch.confcome ha detto Derobert. Ma ho visto nscdcausa strane cazzate come questa prima. Se è in esecuzione, prova a fermarlo. Se non è in esecuzione, prova ad avviarlo (anche se l'avvio se non è in esecuzione era un vecchio bug RHEL che non dovrebbe più esistere).
Patrick

Risposte:


7

Si noti che manca x

Questo è il mio contenuto su Linux Mint con kernel 3.8.0-35-generico

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

Ciò xsignifica che le informazioni sulla password effettiva vengono archiviate in un file di password shadow separato, in genere/etc/shadow

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


6

Consiglierei di controllare le autorizzazioni su /etc/passwde /etc/group. Se non sono impostati su 644 ( -rw-r--r--), eseguire:

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


dice ancora non riesco a trovare il nome per l'id utente 0
gabemai

6

dì solo la mia esperienza

0. problema

su dispositivo rotto:

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

e

whoami
whoami: cannot find name for user ID 0

sul dispositivo normale:

whoami
root

1. ricerca

prova a trovare il motivo:

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

trovato necessario quei * .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

// provengono tutti dal libc6pacchetto, lavoro con il dispositivo arm linux.

2. risoluzione

li copio sul dispositivo rotto, poi ha whoamifunzionato bene,

e il prompt di bash è stato I have no name!@localhostrisolto.


1

Verifica che ogni riga /etc/passwdabbia esattamente sette campi.


0

So che è giusto in tempo, ma il motivo potrebbe essere coreutilscompilato senza il supporto ACL. Controllalo e ricostruisci il pacchetto, se necessario.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.