web-dev-qa-db-fra.com

«Autorisation refusée» à un fichier que je possède?

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?

13
Gordon Wilson
> 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.

18
CoverosGene

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.

10
user7643

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é.

6
Zoredache

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"

2
Haakon

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.

2
David Mackintosh
[.____]> 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.

1
Russell Heilling

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!

1
RainyRat

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

1
Justin Fortier