Comment changer tous les fichiers en 644 et tous les dossiers en 755 en utilisant chmod
à partir de l'invite de commande linux
? (Terminal)
Une approche pourrait utiliser find:
find /desired_location -type d -print0 | xargs -0 chmod 0755
find /desired_location -type f -print0 | xargs -0 chmod 0644
Le plus simple est de faire:
chmod -R u+rwX,go+rX,go-w /path/to/dir
ce qui signifie fondamentalement:
pour ch
le fichier mod
es -R
cursivement en donnant:
u
ser: r
ead, w
rite et eX
ecute autorisations,g
roup et o
ther utilisateurs: r
ead et eX
autoriser les autorisations, mais pas l'autorisation -w
rite.Veuillez noter que X
rendra un répertoire exécutable, mais pas un fichier, à moins qu'il ne soit déjà interrogeable/exécutable.
+X
- permet à tout le monde de rechercher un répertoire ou un fichier s'il est déjà consultable/exécutable par quiconque.
Veuillez vérifier man chmod
pour plus de détails.
Voir aussi: Comment chmoder tous les répertoires sauf les fichiers (récursivement)? à SU
Le plus court que je pourrais trouver est:
chmod -R a=r,u+w,a+X /foo
qui fonctionne sur GNU/Linux, et je crois sur Posix en général (d'après ma lecture de: http://pubs.opengroup.org/onlinepubs/9699919799/utilities/chmod.html ).
Ce que cela fait est:
Il est important de noter que l'autorisation de l'étape 1 efface tous les bits d'exécution. Par conséquent, l'étape 3 n'ajoute que des bits d'exécution pour les répertoires (jamais les fichiers). De plus, les trois étapes ont lieu avant qu'un répertoire ne soit récursif (ce qui n’équivaut pas à ex.
chmod -R a=r /foo
chmod -R u+w /foo
chmod -R a+X /foo
puisque a = r supprime x des répertoires, chmod ne peut donc pas y retourner.)
Cela a fonctionné pour moi:
find /A -type d -exec chmod 0755 {} \;
find /A -type f -exec chmod 0644 {} \;
Le plus facile à retenir pour moi est deux opérations:
chmod -R 644 dirName
chmod -R +X dirName
Le + X n'affecte que les répertoires.
Faites les deux en un seul passage avec:
find -type f ... -o -type d ...
Comme dans, trouvez le type f OR le type d et faites le premier ... pour les fichiers et le second ... pour les répertoires. Plus précisément:
find -type f -exec chmod --changes 644 {} + -o -type d -exec chmod --changes 755 {} +
Laissez le --changes
si vous voulez que cela fonctionne en silence.
Sur https://help.directadmin.com/item.php?id=589 ils écrivent:
Si vous avez besoin d'un moyen rapide de réinitialiser vos données public_html sur 755 pour les répertoires et 644 pour les fichiers, vous pouvez utiliser quelque chose comme ceci:
cd /home/user/domains/domain.com/public_html
find . -type d -exec chmod 0755 {} \;
find . -type f -exec chmod 0644 {} \;
J'ai testé et ... ça marche!