Whoami: não é possível encontrar o nome da identificação do usuário 0

8

Quando eu corro whoami, diz:

whoami: não é possível encontrar o nome para o ID do usuário 0

Meu /etc/passwdarquivo fica assim:

root::0:0:root:/root:/bin/bash
gabemai
fonte
Seu / etc / passwd está quebrado? Você pode postar o conteúdo de
margarida
Qual é o seu id commandem current shellquando você começa whoami ?.
precisa saber é o seguinte
7
(1) Qual distribuição linux? (2) Qual é a saída de pwcke grpck? (3) Existe arquivo /etc/shadow?
John Siu
5
Além disso, você configurou (ou tentou) serviços de diretório de algum tipo (LDAP, NIS etc.)? Você tocou /etc/nsswitch.conf?
derobert
1
Estou pensando nsswitch.confcomo derobert mencionado. Mas eu já vi uma nscdporcaria estranha assim antes. Se estiver em execução, tente pará-lo. Se não estiver em execução, tente iniciá-lo (embora a coisa de iniciá-lo, se não estiver em execução, fosse um bug antigo do RHEL que não deveria mais aparecer).
Patrick

Respostas:

7

Observe que está faltando x

Este é o conteúdo meu no Linux Mint com o kernel 3.8.0-35-generic

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

Os xmeios que as informações reais da senha estão sendo armazenadas em um arquivo de senha sombra separado, tipicamente/etc/shadow

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

Jaime Agudo
fonte
6

Eu recomendaria verificar as permissões em /etc/passwde /etc/group. Se eles não estiverem configurados para 644 ( -rw-r--r--), execute:

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

Nate
fonte
ainda diz que não consegue encontrar um nome para o ID de usuário 0
gabemai
6

apenas diga minha experiência

0. problema

no dispositivo quebrado:

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

e

whoami
whoami: cannot find name for user ID 0

no dispositivo normal:

whoami
root

1. pesquisa

tente encontrar o 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

achou que precisava desses * .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

// todos vêm do libc6pacote, eu trabalho com o dispositivo arm linux.

2. resolução

copio-os para o dispositivo quebrado e, em seguida, whoamitrabalhei direito,

e prompt do bash I have no name!@localhostcorrigido.

yurenchen
fonte
1

Verifique se cada linha /etc/passwdpossui exatamente sete campos.

Flup
fonte
0

Sei que está na hora certa, mas o motivo pode ser coreutilscompilado sem o suporte da ACL. Verifique e reconstrua o pacote, se necessário.

Alexander Zhak
fonte