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
gabemai
fuente
¿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

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

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

yurenchen
fuente
1

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

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

Alexander Zhak
fuente