Whoami: 사용자 ID 0의 이름을 찾을 수 없습니다.

Whoami: 사용자 ID 0의 이름을 찾을 수 없습니다.

내가 실행하면 whoami다음과 같이 말합니다.

whoami: 사용자 ID 0의 이름을 찾을 수 없습니다.

/etc/passwd파일은 다음과 같습니다.

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

답변1

제 경험을 말씀드리자면
///etc/passwd, /etc/shadow를 확인한 후

0.질문

손상된 장치의 경우:

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

그리고

whoami
whoami: cannot find name for user ID 0

일반 장치에서:

whoami
root

1. 연구

이유를 알아보세요:

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

*.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

libc6// 패키지 전체에 arm linux 장치를 사용합니다.

2. 솔루션

고장난 기기에 복사했더니 whoami잘 되더라구요,

Bash 프롬프트 I have no name!@localhost가 수정되었습니다.

답변2

/etc/passwd및 권한을 확인하는 것이 좋습니다 /etc/group. 644( -rw-r--r--) 로 설정되지 않은 경우 다음을 실행합니다.

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

답변3

누락된 부분이 있으니 참고하세요x

이것이 커널 3.8.0-35-generic을 사용하는 Linux Mint에 있는 것입니다.

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

이는 x실제 비밀번호 정보가 일반적으로 별도의 섀도우 비밀번호 파일에 저장된다는 의미입니다./etc/shadow

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

답변4

제때에 왔다는 것을 알고 있지만 이것이 coreutilsACL 지원 없이 컴파일되는 이유입니다. 이를 확인하고 필요한 경우 패키지를 다시 빌드하십시오.

관련 정보