Mon utilisateur, Bob, ne peut pas accéder aux fichiers qu'il possède (théoriquement). Je fais courir Fedora Core 8. Il est probablement plus facile à montrer que dire:
> ls -al .
total 32
drwxrwxr-x 7 bob bob 4096 May 18 14:33 .
drwxrwxr-x 4 bob bob 4096 May 12 15:44 ..
drwxr-xr-x 2 bob bob 4096 June 1 14:22 log
> cd ./log
-bash: cd: log/: Permission denied
> ls -al ./log
ls: cannot access log/..: Permission denied
ls: cannot access log/the.log: Permission denied
ls: cannot access log/.: Permission denied
total 0
d????????? ? ? ? ? ? .
d????????? ? ? ? ? ? ..
-????????? ? ? ? ? ? the.log
> Sudo ls -al ./log
drw-rw-r-- 3 bob bob 4096 Jun 2 04:11 .
drwxrwxr-x 7 bob bob 4096 May 18 14:33 ..
-rw-rw-r-- 1 bob bob 0 Jun 1 04:12 the.log
Les ls -al
se distingue comme très étrange. Il énumérera les fichiers que je n'ai pas les autorisations à voir, mais ne me montrera pas les autorisations?
Les questions sont donc, qu'est-ce qui pourrait causer cela? Et que puis-je faire pour le réparer?
> Sudo ls -al ./log
...
drw-rw-r-- 3 bob bob 4096 Jun 2 04:11 .
Il ne semble pas que Bob ait exécuté des autorisations pour ./log, donc il ne peut pas cd
à celui-ci.
Mais
> ls -al .
...
drwxr-xr-x 2 bob bob 4096 June 1 14:22 log
montre qu'il fait. Mais il ne semble pas que ce ne soit dirigé vers le même fichier (autorisations différentes, DIFFERENT MODTIMTIME).
Essayer Sudo ls -ail ./log
et ls -ail
Pour voir si l'inode est la même.
Les choses sont plus simples que la corruption du système de fichiers ou SELINUX. Comme vous pouvez le constater que vous manquez la permission X (exécutable) sur le répertoire de journal. En fait, pour les répertoires x signifie que quelqu'un est capable de changer dans ce répertoire. Il suffit de faire un "journal chmod + x x" pour résoudre ce problème et vous devriez pouvoir y accéder.
J'ai vu des choses comme celle-là lorsque le système de fichiers a été corrompu ou si vous avez un lecteur d'échec. Le correctif est généralement à exécuter FSCK contre le système de fichiers et laissez-le corriger les erreurs qu'il a trouvé.
Les fichiers peuvent avoir l'immuable ou l'annexe uniquement des attributs étendus définis. Je l'avais déjà arrêté et je ne pouvais même pas supprimer le fichier.
Les attributs étendus peuvent être des vues via "lsattr" et altéré via "CHATTR"
En outre, vérifiez les paramètres SE/Linux. Parfois, les autorisations sur le fichier n'ont rien à voir avec si vous pouvez y accéder ou non.
[.____]> sudo ls -al ./log drw-rw-r-- 3 Bob Bob 4096 juin 2 04:11 .. .____]
Je ne suis pas sûr de savoir pourquoi mais le "." L'entrée dans ./log/ n'a pas d'exécution d'autorisations. Les autorisations doivent être identiques à celles de ./log.
Pouvez-vous essayer chmod 755 ./log et chmod 755 ./log/. et voir si la commande corrige l'accès?
Autre que cela, je vous conseillerais d'exécuter un FSCK sur le système de fichiers, car il semble que c'est hors de synchronisation.
Avez-vous essayé de changer la propriété du répertoire à quelqu'un d'autre, puis de retour à Bob? Le conseil de Zorechetache est meilleur, mais - juste FSCK!
Une réponse plus concise imo.
Votre répertoire n'a pas d'autorisations exécutables, qui sont requises par CD.
Réparer:
$ Sudo chmod +x ./log
Récursivement:
$ Sudo chmod -R +x ./log
+ x Ajoute l'attribut exécutable. Vous pouvez toujours supprimer l'attribut en faisant - x