2009-02-12 7 views
50

je fais une liste de dir dans mon répertoire personnel .ssh qui me donne un résultat étrange:seulement questionmarks sous Linux dirlisting

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

La chose étrange est que cela ne se produit que pour un utilisateur et seulement ce répertoire spécifique. Si je fais le l après un su -l, tout fonctionne comme prévu. Une autre chose étrange est que mon xterm montre la liste dir dans une police clignotante rouge! Des idées sur ce qui est en train de se produire?

thx!

Edit:
Voici la liste dir en tant que 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 

J'utilise ext3.

Edit2:
Thx pour les réponses, mais je reçois encore ceci:

chmod -R 600 /home/sdd/.ssh 
ls -lsan _ssh.old/ 
total 0 
? ?--------- ? ? ? ?   ? . 
? ?--------- ? ? ? ?   ? .. 
? ?--------- ? ? ? ?   ? authorized_keys 
+0

Cet utilisateur a-t-il un environnement local bizarre ou une police de terminal bizarre? – gnud

+0

non c'est une police "normale", c'est-à-dire pas de trucs UTF8 ou quoi que ce soit – SDD

+1

Pourriez-vous mettre à jour edit2? Cela n'a aucun sens, vous êtes en train de chmodding avec le mauvais mode (pas d'exécution), puis en listant un répertoire différent ... – wds

Répondre

90

qui se produit lorsque l'utilisateur ne peut pas faire une stat() sur les fichiers (ce qui nécessite des autorisations d'exécution) , mais peut lire les entrées du répertoire (ce qui nécessite un accès en lecture sur le répertoire). Vous obtenez donc une liste de fichiers dans le répertoire, mais vous ne pouvez pas obtenir d'informations sur les fichiers car ils ne peuvent pas être lus. :) Si vous avez un répertoire qui a l'autorisation de lecture mais ne s'exécute pas, vous verrez ceci. Quelqu'un a probablement essayé de protéger le répertoire .ssh de manière incorrecte - il devrait être "chmod 0700 .ssh /" et appartenant à l'utilisateur qui possède le homedir. Plus que probablement, quelqu'un suivait les instructions pour sécuriser un fichier .ssh mais l'a appliqué à un répertoire .ssh. :)

Si vous faites un chmod 0600 ou 0400 sur n'importe quel répertoire, vous pouvez facilement reproduire ce comportement. Ajoutez l'autorisation d'exécution au répertoire, et tout ira bien.

+0

THX, qui a résolu le problème :) – SDD

+0

Cette solution n'a pas fonctionné pour nous puisque l'utilisateur root ne pouvait pas fonctionner sur le fichier. Aucune suggestion? [root @ lxxxxx1 TeamSite] # chmod 0777 privé chmod: ne peut pas accéder 'privé ': Aucun fichier ou répertoire [root @ lxxxxxx1 TeamSite] # chmod -R 0777 privé Chmod: impossible d'accéder 'private ': aucun fichier ou répertoire – TroyP

+0

Troy - ce guillemet simple est impair, m'indiquant que vous pouvez avoir une sorte de nom de fichier impair sur le système de fichiers ou un problème différent de celui-ci. Posez une question distincte à ce sujet, s'il vous plaît. – dannysauer