Linux中只有问号

SDD*_*SDD 53 linux terminal

我在我的.ssh家庭目录上做了一个dir列表给了我一个奇怪的结果:

ls -lsa .ssh/
total 0
? ?--------- ? ? ? ?            ? . ·
? ?--------- ? ? ? ?            ? .. ·
? ?--------- ? ? ? ?            ? authorized_keys ·
Run Code Online (Sandbox Code Playgroud)

奇怪的是,这只发生在一个用户身上,而且只发生在这个特定的目录中.如果我在su -l之后执行ls,一切都按预期工作.另一个奇怪的是,我的xterm以红色闪烁的字体显示目录列表!是什么导致这种情况发生?

谢谢!

编辑:
这是以root身份列出的目录:

ls -lsa
total 52
4 drw-------  2 sdd sdd 4096 Feb 10 15:57 .
4 drwx------ 16 sdd sdd 4096 Feb 10 15:57 ..
4 -rw-------  1 sdd sdd 1628 Feb 10 15:57 authorized_keys
Run Code Online (Sandbox Code Playgroud)

我正在使用ext3.

编辑2:
答案的答案,但我仍然得到这个:

chmod -R 600 /home/sdd/.ssh
ls -lsan _ssh.old/
total 0
? ?--------- ? ? ? ?            ? .
? ?--------- ? ? ? ?            ? ..
? ?--------- ? ? ? ?            ? authorized_keys
Run Code Online (Sandbox Code Playgroud)

dan*_*uer 95

当用户无法对文件执行stat()(需要执行权限)时,会发生这种情况,但可以读取目录条目(需要对目录进行读访问).因此,您将获得目录中的文件列表,但无法获取有关文件的任何信息,因为无法读取这些文件.:)如果你有一个具有读权限但没有执行的目录,你会看到这个.有人可能试图错误地保护.ssh目录 - 它应该是"chmod 0700 .ssh /"并且由拥有homedir的用户拥有.很可能有人正在遵循保护.ssh 文件的说明,但将其应用到.ssh目录.:)

如果在任何目录上执行chmod 0600或0400,则可以轻松地重现此行为.向dir添加执行权限,它将正常工作.

  • 即使在 2015 年,这仍然是一个非常有用的答案。谢谢。 (2认同)