web-dev-qa-db-fra.com

Chmod pour autoriser les permissions en lecture et en écriture pour le répertoire

J'ai créé des répertoires à la racine. Je recherche la commande chmod pour autoriser tous les utilisateurs à lire et à écrire des autorisations sur un répertoire spécifique. J'ai fait chmod 775 pour un fichier mais j'en ai besoin pour un répertoire. Cela inclut les autorisations sur tous les fichiers et sous-répertoires.

57
chrissygormley

0775 est rarement correct pour un fichier. Les éléments suivants ajouteront les autorisations souhaitées appropriées au type approprié, sans perturber les autorisations existantes:

find somedir \( -type d -exec chmod u+rwx,g+rwx,o+rx {} \; -o -type f -exec chmod u+rw,g+rw,o+r {} \; \)

Voir la page de manuel pour trouver afin de vous aider à le déchiffrer.

32

Pour tout Les utilisateurs ayant un accès en lecture et en écriture, ce serait 0777, ce qui est un peu dangereux, surtout si vous utilisez un serveur Web. Comme @unwind a dit:

chmod -R 0777 /mydirectory Autorise tous les utilisateurs à lire et à écrire l'accès à tous les fichiers et dossiers de ce répertoire

En fonction de votre objectif, vous voudrez peut-être vous renseigner sur les éléments rémanents, qui permettent à tous les utilisateurs de créer de nouveaux fichiers, mais pas de supprimer ou de modifier les autres fichiers d'un répertoire:

chmod +t /mydirectory

De plus, si vous ne le saviez pas, man chmod affichera la page de manuel relative à la commande chmod, dans laquelle vous pourrez rechercher le texte "récursif" en tapant /recursive.

44
deadkarma

Ce n'est pas ainsi que fonctionne le modèle de protection Unix, vous ne pouvez pas définir des autorisations de manière récursive. Vous devez les définir sur chaque répertoire, complètement "en bas".

Bien sûr, vous pouvez faire le paramètre setting de manière récursive, mais cela signifie simplement "passer et définir ces autorisations sur tous les fichiers et dossiers ci-dessous", ce qui n’est pas ainsi que je comprends votre question.

Pour ce faire, utilisez l'option -R to chmod:

$ chmod -R 0755 /my-cool-directory
14
unwind