Whoami:ユーザーID 0の名前が見つかりません


8

私がwhoamiそれを実行すると言う:

whoami:ユーザーID 0の名前が見つかりません

私の/etc/passwdファイルは次のようになります:

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

/ etc / passwdが壊れていますか?内容を投稿できますか
デイジー2013年

あなたがwhoamiを手に入れるとき、あなたid commandは何ですかcurrent shell
PersianGulf 2013年

7
(1)どのLinuxディストリビューション?(2)pwckandの出力は何grpckですか?(3)ファイルは/etc/shadow存在しますか?
John Siu 2013年

5
また、何らかの種類のディレクトリサービス(LDAP、NISなど)をセットアップ(または試行)しましたか?触れました/etc/nsswitch.confか?
derobert 2013年

1
nsswitch.confデロベルトが言ったように私は考えています。しかし、私はnscd以前にこのような奇妙ながらくたの原因を見てきました。実行中の場合は、停止してみてください。実行されていない場合は、起動してみてください(実行されていない場合の起動は、RHELの古いバグであり、これ以上回避することはできません)。
Patrick、

回答:


7

不足していることに注意してください x

これは、カーネル3.8.0-35-genericを使用するLinux Mint上の私のコンテンツです。

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

x実際のパスワード情報がtipically、別個のシャドウパスワードファイルに格納されていることを意味/etc/shadow

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


6

との権限を確認することをお勧め/etc/passwd/etc/groupます。それらが644(-rw-r--r--)に設定されていない場合は、以下を実行します。

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


それでもユーザーID 0の名前が見つからないと言う
gabemai 2013年

6

私の経験を言ってください

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修正されました。


1

のすべての行に/etc/passwd正確に7つのフィールドがあることを確認します。


0

私はそれが時間通りに正しいことを知っていますが、理由はcoreutilsACLサポートなしでコンパイルされる可能性があります。それを確認し、必要に応じてパッケージを再ビルドします。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.