Только вопросительные знаки в Linux dirlisting


Я делаю список dir в моем .ssh home dir, который дает мне странный результат:

ls -lsa .ssh/
total 0
? ?--------- ? ? ? ?            ? . ·
? ?--------- ? ? ? ?            ? .. ·
? ?--------- ? ? ? ?            ? authorized_keys ·

странно то, что это происходит только для одного пользователя и только в этом конкретном каталоге. Если я делаю ls после su-l, все работает так, как ожидалось. Еще одна странная вещь заключается в том, что мой xterm показывает список dir красным мигающим шрифтом! Есть идеи, что заставляет это происходить?

спасибо!

Edit:
Вот список dir как корень:

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

Я использую ext3.

Edit2:
Thx для ответов, но я все равно получаю это:

chmod -R 600 /home/sdd/.ssh
ls -lsan _ssh.old/
total 0
? ?--------- ? ? ? ?            ? .
? ?--------- ? ? ? ?            ? ..
? ?--------- ? ? ? ?            ? authorized_keys
1   51   2009-02-12 17:37:34

1 ответ:

это происходит, когда пользователь не может выполнить stat() для файлов (что требует разрешений на выполнение), но может читать записи каталога (что требует доступа для чтения в каталоге). Таким образом, вы получаете список файлов в Каталоге, но не могу получить никакой информации о файлах, потому что они не могут быть прочитаны. :) Если у вас есть каталог, который имеет разрешение на чтение, но не выполняется, вы увидите это. Кто-то, вероятно, пытался защитить .каталог ssh неверно-он должен быть " chmod 0700 .СШ/" и принадлежит пользователю, который владеет множеством файлов. Скорее всего, кто-то следовал инструкциям по обеспечению безопасности А.ssh file но применил его к a .каталог СШ. :)

Если вы делаете chmod 0600 или 0400 в любом каталоге, вы можете легко воспроизвести это поведение. Добавьте разрешение execute в каталог, и он будет работать нормально.