Changer toutes les permissions de fichiers et dossiers d'un répertoire en 644/755
7 réponses
une approche pourrait utiliser find:
pour annuaires
find . -type d -print0 | xargs -0 chmod 0755
pour les fichiers
find . -type f -print0 | xargs -0 chmod 0644
la façon la plus facile est de faire:
chmod -R u+rwX,go+rX,go-w /foo
qui signifie essentiellement:
à ch
fichier ange mod
es -R
ecursively by giving:
-
u
ser:r
ead,w
rite and eX
ecute permissions, -
g
roupe eto
ther utilisateurs:r
ead et eX
ecute des autorisations, mais pas-w
rite de l'autorisation.
veuillez noter que X
rendra un répertoire exécutable, mais pas un fichier, à moins qu'il ne soit déjà consultable/exécutable.
+X
- faire un répertoire ou un fichier searchable/executable par tout le monde si elle est déjà searchable/executable par n'importe qui.
s'il vous Plaît cochez la case man chmod
pour plus de détails.
voir aussi: Comment chmod tous les répertoires sauf les fichiers (récursivement)? à la LIGUE
le plus court que j'ai pu trouver est:
chmod -R a=r,u+w,a+X /foo
qui fonctionne sur GNU / Linux, et je crois en Posix en général (d'après ma lecture de: http://pubs.opengroup.org/onlinepubs/9699919799/utilities/chmod.html ).
ce n'est:
- définir fichier / répertoire à r _ _ r _ _ r _ _ (0444)
- ajouter w pour le propriétaire, pour obtenir rw _ _ r _ _ _ (0644)
- exécute pour tous si un répertoire (0755 pour dir, 0644 pour Fichier).
fait important, la permission de l'étape 1 efface tous les bits d'exécution, donc l'étape 3 ajoute seulement en arrière des bits d'exécution pour les répertoires (jamais des fichiers). En outre, les trois étapes se produisent avant qu'un répertoire soit recursed dans (Donc ce n'est pas équivalent à par exemple
chmod -R a=r /foo
chmod -R u+w /foo
chmod -R a+X /foo
puisque l'a=r supprime x des répertoires, alors chmod ne peut pas y revenir.)
cela a fonctionné pour moi:
find /A -type d -exec chmod 0755 {} \;
find /A -type f -exec chmod 0644 {} \;
Faire les deux en un seul passage:
find -type f ... -o -type d ...
comme dans, Trouver le type f ou le type d, et faire le premier ... pour les fichiers et la seconde ... pour les dirs. Plus précisément:
find -type f -exec chmod --changes 644 {} + -o -type d -exec chmod --changes 755 {} +
arrêtez le --changes
si vous voulez que ça marche silencieusement.
le plus facile pour moi de me souvenir est deux opérations:
chmod -R 644 dirName
chmod -R +X dirName
le + X n'affecte que les répertoires.
Cela peut fonctionner aussi:
chmod -R 755 * // All files and folders to 755.
chmod -R 644 *.* // All files will be 644.