Whoami: tidak dapat menemukan nama untuk id pengguna 0

8

Ketika saya menjalankannya whoamitertulis:

whoami: tidak dapat menemukan nama untuk id pengguna 0

/etc/passwdFile saya terlihat seperti ini:

root::0:0:root:/root:/bin/bash
gabemai
sumber
/ Etc / passwd Anda rusak? Bisakah Anda memposting konten
daisy
Apa Anda id commanddi current shellsaat Anda mendapatkan whoami ?.
PersianGulf
7
(1) Distribusi linux apa? (2) Apa itu output dari pwckdan grpck? (3) Apakah file /etc/shadowada?
John Siu
5
Juga, sudahkah Anda mengatur (atau mencoba) layanan direktori semacam (LDAP, NIS, dll.)? Sudahkah Anda menyentuh /etc/nsswitch.conf?
derobert
1
Saya berpikir nsswitch.confseperti disebutkan derobert. Tapi aku pernah melihat hal nscdaneh seperti ini sebelumnya. Jika sedang berjalan, coba hentikan. Jika tidak berjalan, coba mulai (meskipun memulainya jika tidak berjalan adalah bug RHEL lama yang seharusnya tidak ada lagi).
Patrick

Jawaban:

7

Perhatikan ada yang hilang x

Ini adalah konten saya di Linux Mint dengan kernel 3.8.0-35-generik

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

The xberarti bahwa informasi password sebenarnya disimpan dalam file password shadow terpisah, tipically/etc/shadow

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

Jaime Agudo
sumber
6

Saya akan merekomendasikan memeriksa izin pada /etc/passwddan /etc/group. Jika tidak disetel ke 644 ( -rw-r--r--), jalankan:

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

Nate
sumber
masih mengatakan tidak dapat menemukan nama untuk id pengguna 0
gabemai
6

katakan saja pengalaman saya

0. masalah

pada perangkat yang rusak:

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

dan

whoami
whoami: cannot find name for user ID 0

pada perangkat normal:

whoami
root

1. penelitian

coba cari alasannya:

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

merasa perlu * .so jadi:

/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

// semua berasal dari libc6paket, saya bekerja dengan perangkat linux arm.

2. resolusi

saya menyalinnya ke perangkat yang rusak, kemudian whoamibekerja dengan benar,

dan bash prompt I have no name!@localhostdiperbaiki.

yurenchen
sumber
1

Pastikan setiap baris di dalam /etc/passwdmemiliki tepat tujuh bidang.

Flup
sumber
0

Saya tahu ini tepat waktu, tetapi alasannya dapat coreutilsdikompilasi tanpa dukungan ACL. Periksa dan buat kembali paket jika perlu.

Alexander Zhak
sumber