web-dev-qa-db-fra.com

chmod: impossible de lire le répertoire `. ': autorisation refusée

J'essaie de modifier récursivement l'autorisation des répertoires et sous-répertoires pour le répertoire "data" et je rencontre l'erreur suivante .. quelqu'un peut-il fournir des informations sur l'erreur ci-dessous?

<username:/local/mnt/workspace/data>chmod -R 0644 .
chmod: cannot read directory `.': Permission denied
23
user2125827

Les répertoires ont besoin du jeu d'autorisations d'exécution pour voir leur contenu.

De http://content.hccfl.edu/pollock/AUnix1/FilePermissions.htm

Vous pouvez penser à lire et exécuter sur les répertoires de cette façon: les répertoires sont des fichiers de données qui contiennent deux informations pour chaque fichier, le nom du fichier et son numéro d'inode. Une autorisation de lecture est nécessaire pour accéder aux noms des fichiers dans un répertoire. Une autorisation d'exécution (recherche a.k.a.) est nécessaire pour accéder aux inodes des fichiers d'un répertoire, si vous connaissez déjà le nom du fichier.

Lorsque vous modifiez une autorisation de répertoire à 644, vous ne pouvez pas lire les fichiers dans ce répertoire bien que vous puissiez lire ce répertoire pour voir qu'il existe.

Vous devez faire ceci:

$ chmod -R 0755 .

Une meilleure façon pourrait être d'utiliser l'autorisation de chaîne si vous souhaitez simplement désactiver

Sinon, vous pouvez voir le répertoire, mais pas accéder aux informations de ce répertoire.

Il vaut peut-être mieux utiliser des autorisations relatives plutôt que des autorisations absolues:

$ chmod -R go-w .

Supprime l'autorisation d'écriture du groupe et des autres, mais ne touche pas l'autorisation d'exécution.

Vous pouvez également utiliser find juste pour définir les répertoires ou simplement pour définir les fichiers:

$ find . -type d -exec chmod 755 {} \;

Cela ne touchera que les répertoires, définissant les autorisations de lecture et d'exécution sur tous les répertoires et définissant les autorisations d'écriture pour le propriétaire. De cette façon, vous ne définissez pas l'autorisation d'exécution sur les fichiers eux-mêmes.

52
David W.

Je suppose que puisque vous utilisez la récursivité que vous essayez de CD sur un répertoire qui n'a pas l'autorisation d'exécution pour vous.

0
Marichyasana