Whoami: no se puede encontrar el nombre para la identificación de usuario 0


8

Cuando corro whoamidice:

whoami: no se puede encontrar el nombre para la identificación de usuario 0

Mi /etc/passwdarchivo se ve así:

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

¿Su / etc / passwd está roto? ¿Puedes publicar el contenido
Daisy

¿Cuál es tu id commanden current shellcuando llegue whoami ?.
PersianGulf

77
(1) ¿Qué distribución de Linux? (2) ¿Cuál es la salida de pwcky grpck? (3) ¿Existe el archivo /etc/shadow?
John Siu

55
Además, ¿ha configurado (o ha intentado) servicios de directorio de algún tipo (LDAP, NIS, etc.)? Has tocado /etc/nsswitch.conf?
derobert

1
Estoy pensando nsswitch.confcomo mencionó derobert. Pero he visto nscdporque una mierda extraña como esta antes. Si se está ejecutando, intente detenerlo. Si no se está ejecutando, intente iniciarlo (aunque iniciarlo si no se está ejecutando era un viejo error RHEL que ya no debería existir).
Patrick

Respuestas:


7

Observe que falta un x

Este es el contenido mío en Linux Mint con kernel 3.8.0-35-generic

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

Esto xsignifica que la información de la contraseña real se almacena en un archivo de contraseña oculta, por lo general/etc/shadow

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


6

Recomendaría verificar los permisos en /etc/passwdy /etc/group. Si no están configurados en 644 ( -rw-r--r--), ejecute:

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


todavía dice que no se puede encontrar el nombre para la identificación de usuario 0
gabemai

6

solo di mi experiencia

0. problema

en dispositivo roto:

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

y

whoami
whoami: cannot find name for user ID 0

en dispositivo normal:

whoami
root

1. investigación

intenta encontrar la razón:

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

encontré que necesita esos * .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

// todo viene del libc6paquete, trabajo con el dispositivo arm linux.

2. resolución

Los copié en el dispositivo roto, luego whoamifuncionó correctamente,

y bash prompt I have no name!@localhostarreglado.


1

Verifique que todas y cada una de las líneas /etc/passwdtengan exactamente siete campos.


0

Sé que es justo a tiempo, pero la razón podría coreutilscompilarse sin el soporte de ACL. Compruébelo y reconstruya el paquete si es necesario.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.