내가 실행하면 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
답변4
제때에 왔다는 것을 알고 있지만 이것이 coreutils
ACL 지원 없이 컴파일되는 이유입니다. 이를 확인하고 필요한 경우 패키지를 다시 빌드하십시오.