J'ai un dossier avec un contenu (trois fichiers et un dossier) qui ressemble à ceci:
-rwxr-xr-x 1 max max 14504 2011-05-31 16:55 main.css
-rwxr-xr-x 1 max max 2504 2011-05-31 16:55 reset.css
-rwxr-xr-x 1 max max 916 2011-05-31 16:55 scaffold.css
drwxrwxr-x 3 max max 4096 2011-05-31 16:55 ui-lightness
Je veux ajouter un groupe d'écriture à tous et supprimer le statut d'exécutable pour tous les utilisateurs. Je fais les fichiers d'abord:
$ chmod g+w main.css reset.css scaffold.css
$ chmod a-x main.css reset.css scaffold.css
$ ls -l
total 28
-rw-rw-r-- 1 max max 14504 2011-05-31 16:55 main.css
-rw-rw-r-- 1 max max 2504 2011-05-31 16:55 reset.css
-rw-rw-r-- 1 max max 916 2011-05-31 16:55 scaffold.css
drwxrwxr-x 3 max max 4096 2011-05-31 16:55 ui-lightness
Jusqu'ici tout va bien. Maintenant, le dossier ui-lightness a déjà écrit en groupe, je veux donc simplement supprimer le statut exe de celui-ci et de tous les fichiers et sous-dossiers qu'il contient.
$ ls -l ui-lightness/
total 40
drwxrwxr-x 2 max max 4096 2011-05-31 16:55 images
-rwxrwxr-x 1 max max 34146 2011-05-31 16:55 jquery-ui-1.8.11.custom.css
$ chmod -R a-x ui-lightness/
chmod: cannot access `ui-lightness/jquery-ui-1.8.11.custom.css': Permission denied
chmod: cannot access `ui-lightness/images': Permission denied
$ ls -l ui-lightness/
ls: cannot access ui-lightness/jquery-ui-1.8.11.custom.css: Permission denied
ls: cannot access ui-lightness/images: Permission denied
total 0
d????????? ? ? ? ? ? images
-????????? ? ? ? ? ? jquery-ui-1.8.11.custom.css
$
Mon premier instinct est de paniquer un peu. Mais, rajouter le statut x le corrige!
$ chmod -R a+x ui-lightness/
$ ls -l ui-lightness/
total 40
drwxrwxr-x 2 max max 4096 2011-05-31 16:55 images
-rwxrwxr-x 1 max max 34146 2011-05-31 16:55 jquery-ui-1.8.11.custom.css
Quelqu'un peut-il expliquer ce qui se passe ici? Et comment je supprime le statut de l'exécutable sans tout casser? Ceci est dans Ubuntu 9.10 au cas où cela serait pertinent.
à la vôtre, max
chmod -R a-x ui-lightness/*
, et il y a un autre sous-répertoire à l'intérieur de cela, alors cette subdir va se faire cogner, non?find . -type f -exec chmod -x {} \;
sélectionner uniquement les fichiers normaux.Pour supprimer le statut de l'exécutable uniquement pour les fichiers, utilisez:
le
+X
l'option est définie (voirman chmod
) à:Donc, les minuscules
-x
Cette option supprime d’abord le statut de l’exécutable de tous les fichiers (et des répertoires, bien sûr), puis de la majuscule.+X
L'option la réinitialise uniquement pour les répertoires.Il a un inconvénient mineur: il définit le statut de l’exécutable sur tout sous-répertoires, même à ceux qui ne l’avaient pas défini avant la
chmod
invocation. Si ce n'est pas ce que vous voulez, utilisez simplement Keithfind
Solution.la source