web-dev-qa-db-fra.com

Comment spécifier un groupe avec chmod?

On m'a demandé d'ajouter des autorisations de groupe-wrx à un répertoire du dossier de départ d'un autre utilisateur.

Je crois que ce que je devrais faire est d’exécuter chmod 771 -R directoryname dans le répertoire parent. Ce que je ne trouve nulle part sur les tubes, c'est comment spécifier le groupe auquel je souhaite accorder ces autorisations. Personnellement, je suis dans plusieurs groupes et dans un groupe que je ne connais pas en tant que root.

Si cela compte, le système exécute Redhat 5.4.

31
malenkylizards

L'appel système chmod() et, par extension, le programme chmod n'affectent pas le groupe d'un fichier ou d'un répertoire (ou un autre type de fichier: bloc spécial, caractère spécial, socket, ... le lien symbolique est un cas particulier). Ainsi, le groupe auquel l'autorisation est donnée sera le groupe auquel appartient le fichier ou le répertoire.

Pour ajouter des autorisations de groupe rwx, vous devez utiliser:

chmod -R g+rwx DirectoryName

Toutefois, cela ajoute les autorisations à chaque fichier ainsi qu'à chaque répertoire, et tous les fichiers ne doivent pas nécessairement être exécutables. Personnellement, je serais très malheureux si quelqu'un fournissait une permission d'écriture à tous les répertoires (ou à tous les autres), mais c'est une autre histoire.

Pour n'affecter que les répertoires, utilisez find à la place:

find DirectoryName -type d -exec chmod g+rwx {} +

(La notation + correspond à POSIX 2008; tous les systèmes Unix ne la prennent pas en charge, contrairement à Linux.)

32
Jonathan Leffler

Chaque fichier sur un système de fichiers ext a:

  1. Un utilisateur propriétaire
  2. Un groupe de propriétaires
  3. Autorisations pour cet utilisateur, ce groupe et tous les autres.

Si vous définissez des autorisations de groupe rwx sur un fichier, seul le groupe propriétaire de ce fichier peut le lire, l'écrire ou l'exécuter. Vous pouvez cependant changer d'utilisateur et de propriétaire avec:

chown username file1 file2 ...
chown -R username somedir
chgrp groupname file1 file2 ....
chgrp -R groupname somedir
chown username:groupname file1 file2 ...

Il existe différentes implémentations pour les privilèges de système de fichiers étendus, à savoir les ACL (listes de contrôle d'accès) sur Mac OS X, mais comme je ne suis pas un expert de Linux, vous devriez probablement demander une erreur de serveur pour ça.

10
Marian Theisen