Whoami: impossible de trouver le nom de l'ID utilisateur 0

8

Quand je cours, whoamiil dit:

whoami: impossible de trouver le nom de l'ID utilisateur 0

Mon /etc/passwdfichier ressemble à ceci:

root::0:0:root:/root:/bin/bash
gabemai
la source
Votre / etc / passwd est cassé? Pouvez-vous publier le contenu
marguerite
Quelle est votre id commanddans current shellquand vous obtenez whoami ?.
PersianGulf
7
(1) Quelle distribution Linux? (2) Quelle est la sortie de pwcket grpck? (3) Le fichier /etc/shadowexiste-t-il?
John Siu
5
De plus, avez-vous configuré (ou tenté) de créer des services d'annuaire (LDAP, NIS, etc.)? Avez-vous touché /etc/nsswitch.conf?
derobert
1
Je pense nsswitch.confcomme Derobert l'a mentionné. Mais j'ai déjà vu nscddes conneries bizarres comme ça avant. S'il fonctionne, essayez de l'arrêter. S'il n'est pas en cours d'exécution, essayez de le démarrer (bien que le démarrage s'il ne fonctionne pas était un ancien bogue RHEL qui ne devrait plus être présent).
Patrick

Réponses:

7

Remarquez qu'il manque un x

Ceci est le contenu du mien sur Linux Mint avec le noyau 3.8.0-35-generic

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

Les xmoyens que les informations de mot de passe réel est stocké dans un fichier de mot de passe de l' ombre séparée, typiquement/etc/shadow

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

Jaime Agudo
la source
6

Je recommanderais de vérifier les autorisations sur /etc/passwdet /etc/group. S'ils ne sont pas définis sur 644 ( -rw-r--r--), exécutez:

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

Nate
la source
dit toujours ne peut pas trouver le nom de l'ID utilisateur 0
gabemai
6

dis juste mon expérience

0. problème

sur un appareil cassé:

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

et

whoami
whoami: cannot find name for user ID 0

sur un appareil normal:

whoami
root

1. recherche

essayez de trouver la raison:

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

a trouvé qu'il avait besoin de ces * .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

// tous viennent du libc6paquet, je travaille avec le périphérique arm linux.

2. résolution

je les copie sur l'appareil cassé, puis j'ai bien whoamitravaillé,

et l'invite bash I have no name!@localhostcorrigée.

yurenchen
la source
1

Vérifiez que chaque ligne /etc/passwdcontient exactement sept champs.

Flup
la source
0

Je sais que c'est juste à temps, mais la raison pourrait être coreutilscompilée sans le support ACL. Vérifiez-le et reconstruisez le package si nécessaire.

Alexander Zhak
la source