J'ai essayé de nettoyer les autorisations sur quelques boîtes et j'ai parcouru l'homme chmod ainsi que toute la documentation Internet que je gère sans aucune chance - alors c'est parti.
Fondamentalement, j'ai un répertoire avec de nombreux sous-répertoires et fichiers - et je voudrais définir les autorisations suivantes:
Pour les répertoires: 770 (u + rwx, g + rwx, o-rwx)
Pour les fichiers: 660 (U + rw, g + rw, ax, o-rw)
Je voudrais essayer de le faire avec un seul chmod récursif si possible - afin d'éviter de récurer dans chaque répertoire et de définir des autorisations fichier par fichier.
J'imagine qu'il doit y avoir un moyen de le faire sans écrire mon propre script shell - mais je n'ai rien trouvé.
J'apprécie ton aide!
la source
Pas besoin de scripts.
// Répertoires:
// Des dossiers:
la source
Dans votre cas, cela pourrait ne pas être aussi compliqué que d'autres l'ont fait croire (bien qu'il s'agisse en
find
effet d'un bon outil pour ce genre de chose en général). La différence entre les modes est le bit d'exécution. S'il est vrai qu'aucun fichier n'a déjà le bit d'exécution défini, vous pouvez le faire en une seule invocation dechmod
, comme vous l'avez demandé.La clé ici est le capital
X
, que la page de manuel explique commeAinsi, si vos fichiers n'ont pas déjà le bit d'exécution défini, il ne le sera que pour les répertoires.
la source
J'ai trouvé que pour mon cas d'utilisation au moins, utiliser
rsync
pour copier le répertoire sur lui-même était beaucoup plus rapide que d'utiliserchmod
directement avec une liste de fichiersfind
.Si vous souhaitez ajouter un
chown
à la même opération,rsync
vous pouvez également le faire avec l'--chown=user:group
option.la source
Propre et simple:
la source
find ... -exec chmod ... {} \;