6 votes

Comment changer les permissions sur tous les fichiers d'un répertoire, et lorsque de nouveaux fichiers sont ajoutés, aux valeurs par défaut ?

J'ai un dossier /home/userName/Public/Media dans lequel je stocke tous les médias sur la machine ; ce dossier est destiné à être accessible par tous les autres utilisateurs de la machine - ne serait-ce que pour les empêcher de devoir télécharger/rater indépendamment les mêmes fichiers médias.

Y a-t-il un moyen de changer les autorisations en :

owner: userName /* my own user */
Access: read and write

group: users
Access: read only /* I'm not entirely sure I trust all my users enough to give them powers of delete */

Others
Access: read only

Idéalement, j'aimerais que les autres puissent ajouter leurs propres médias, mais que les autorisations pour les médias/fichiers/répertoires ajoutés par moi-même soient par défaut celles indiquées ci-dessus. Pour les fichiers ajoutés par mes utilisateurs, j'aimerais que les autorisations par défaut soient celles mentionnées ci-dessus, à l'exception du fait que les utilisateurs en conservent la propriété.

Je suppose que inotify et umask pourraient être utilisés, mais - et je ne peux que m'en excuser - je n'ai aucune idée de la façon de les utiliser pour trouver une solution.

Merci pour toute l'aide que vous pourrez m'apporter. Un jour, j'espère pouvoir utiliser Ubuntu sans me tromper... =)

8voto

JeremyDWill Points 2181
chown -R userName:groupname folderName
chmod -R 744 folderName

umask 022 (in .login or .profile)

chmod change les permissions sur les fichiers. C'est un peu bizarre si vous n'y êtes pas habitué, mais en résumé :

Utilisation (en octal) : chmod ABC (fichier/dossier cible)

"A" correspond aux permissions du propriétaire, "B" aux permissions du groupe propriétaire et "C" aux permissions de tout le monde.

Les permissions se décomposent comme suit

1 = Exécuter 2 = Ecriture 4 = Lecture

Additionnez-les pour déterminer le niveau de permission. Par exemple, pour donner la lecture et l'écriture mais pas l'exécution, vous utilisez (2+4) = 6. Pour lire, écrire et exécuter, vous utilisez (1+2+4) = 7. Pour l'exécution seulement, utilisez 1.

Donc "chmod -R 744 nomdossier" signifie :

Définir les permissions du propriétaire à Read+Write+Execute (7) Définissez les autorisations pour le groupe du propriétaire en Lecture (4) Définir les droits de lecture pour tout le monde (4)

Appliquez ces autorisations à folderName et de là, appliquez-les récursivement (-R) à tous les fichiers du dossier.

Ceci est assez basique ; il y a d'autres façons d'utiliser chmod, et d'autres propriétés que vous pouvez définir avec lui, etc, mais c'est un bon début.

Maintenant, umask :

Umask est essentiellement un moyen de définir les permissions par défaut pour la création de fichiers et de répertoires. Habituellement, il est défini pour chaque utilisateur dans son fichier .profile ou .login, mais vous pouvez le définir pour vous-même à différents moments en tapant umask 022 ou autre... Il restera en place jusqu'à ce que vous le changiez ou que vous vous déconnectiez.

Les permissions umask (octales) sont les suivantes inverser des permissions chmod. Je sais que c'est bizarre. Mais si vous voulez que tous les fichiers du répertoire soient créés avec la permission 777 (lecture+écriture+exécution pour le propriétaire, le groupe et tout le monde), vous devez définir le umask à 000.

Ainsi, pour que tous vos utilisateurs créent des fichiers qui sont 644 (lecture/écriture, lecture, lecture), vous devez définir le umask à 022 (ce qui semble erroné, mais les fichiers ne sont pas exécutables par défaut, donc les fichiers nouvellement créés seront 644 et les répertoires nouvellement créés seront 755).

J'espère que ce n'était pas TROP confus.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X