Comment changer tous les fichiers en 644 et tous les dossiers en 755 à l'aide chmod
de l' linux
invite de commande? (Terminal)
http://superuser.com
:: P mais cette question m'a aidé ici, merci.
chmod -R u+rwX,go+rX,go-w /foo
Comment changer tous les fichiers en 644 et tous les dossiers en 755 à l'aide chmod
de l' linux
invite de commande? (Terminal)
http://superuser.com
:: P mais cette question m'a aidé ici, merci.
chmod -R u+rwX,go+rX,go-w /foo
Réponses:
Une approche pourrait être d'utiliser find:
find /desired_location -type d -print0 | xargs -0 chmod 0755
find /desired_location -type f -print0 | xargs -0 chmod 0644
sudo find /your/location -type f -exec chmod 644 {} \;
pour les fichiers et sudo find /your/location -type d -exec chmod 755 {} \;
pour les répertoires
chmod -R a=r,u+w,a+X /foo
?
unable to execute /bin/chmod: Argument list too long
Le moyen le plus simple est de faire:
chmod -R u+rwX,go+rX,go-w /path/to/dir
ce qui signifie essentiellement:
à ch
ange fichier mod
es -R
ecursively en donnant:
u
ser: r
ead, w
rite et e X
ecute permissions,g
roup et o
autres utilisateurs: r
lisez et X
exécutez les autorisations, mais pas les -w
autorisations de rite.Veuillez noter que X
cela rendra un répertoire exécutable, mais pas un fichier, à moins qu'il ne soit déjà interrogeable / exécutable.
+X
- rendre un répertoire ou un fichier consultable / exécutable par tout le monde s'il est déjà consultable / exécutable par n'importe qui.
Veuillez vérifier man chmod
pour plus de détails.
Voir aussi: Comment chmod 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, de sorte que l'étape 3 n'ajoute que des bits d'exécution pour les répertoires (jamais les fichiers). De plus, les trois étapes se produisent avant qu'un répertoire ne soit récuré dans (donc ce n'est pas équivalent à eg
chmod -R a=r /foo
chmod -R u+w /foo
chmod -R a+X /foo
puisque le a = r supprime x des répertoires, alors chmod ne peut pas les rentrer.)
Le plus facile à retenir pour moi, ce sont deux opérations:
chmod -R 644 dirName
chmod -R +X dirName
Le + X n'affecte que les répertoires.
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 à 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!
Cela a fonctionné pour moi:
find /A -type d -exec chmod 0755 {} \;
find /A -type f -exec chmod 0644 {} \;
find /A -type X -exec chmod Y '{}' \;
Faites les deux en un seul passage avec:
find -type f ... -o -type d ...
Comme dans, recherchez le type f OU tapez 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 qu'il fonctionne silencieusement.
Si vous avez besoin d'un moyen rapide de réinitialiser vos données public_html à 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 {} \;
de plus, si vous savez que PHP fonctionne en tant qu'utilisateur et non en tant que "apache", vous pouvez définir les fichiers PHP sur 600, pour un niveau de sécurité supplémentaire, par exemple:
find . -type f -name '*.php' -exec chmod 600 {} \;
Vous pouvez trouver cette source ici: https://help.directadmin.com/item.php?id=589
Cela peut aussi fonctionner:
chmod -R 755 * // All files and folders to 755.
chmod -R 644 *.* // All files will be 644.