Comment spécifier un groupe avec chmod?

34

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

Je crois que ce que je dois faire est d'exécuter chmod 771 -R directorynamedans le répertoire parent. Ce que je ne trouve nulle part sur les tubes, c'est comment spécifier à quel groupe je veux donner ces autorisations. Je suis personnellement dans un certain nombre de groupes, et dans un groupe que je ne connais pas en tant que root.

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

joe_young
la source

Réponses:

37

L' chmod()appel système, et par extension le chmodprogramme, n'affecte pas le groupe d'un fichier ou d'un répertoire (ou tout 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 accordée sera le groupe auquel appartient le fichier ou le répertoire.

Pour ajouter des rwxautorisations de groupe , vous devez utiliser:

chmod -R g+rwx DirectoryName

Cependant, cela ajoute les autorisations à chaque fichier ainsi qu'à chaque répertoire, et tous les fichiers ne doivent pas être exécutables. Personnellement, je serais très mécontent si quelqu'un fournissait une autorisation d'écriture de groupe sur tous (ou n'importe lequel) de mes répertoires, mais c'est une autre histoire.

Pour affecter uniquement les répertoires, utilisez findplutôt:

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

(La +notation est POSIX 2008; tous les systèmes Unix ne le prennent pas en charge, bien que Linux le fasse.)

Jonathan Leffler
la source
1
Si vous utilisez + X (X majuscule), vous n'ajouterez l'autorisation d'exécution (ou «recherche») que si le fichier est un répertoire ou s'il avait déjà l'autorisation d'exécution pour un utilisateur. linux.die.net/man/1/chmod
Dave
@Dave: chmod +Xest également pris en charge sur BSD (Mac OS X). Un examen attentif de POSIX chmodindique que +Xc'est une fonctionnalité POSIX après tout: le symbole permanent X doit représenter la partie exécution / recherche des bits de mode de fichier si le fichier est un répertoire ou si les bits de mode de fichier actuels (non modifiés) ont au moins l'un des l'ensemble de bits d'exécution (S_IXUSR, S_IXGRP ou S_IXOTH). Il doit être ignoré si le fichier n'est pas un répertoire et qu'aucun des bits d'exécution n'est défini dans les bits du mode fichier actuel. Notez la justification ci-dessous.
Jonathan Leffler
12

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 tout le monde.

Si vous définissez des autorisations de groupe rwx sur un fichier, seul le groupe propriétaire de ce fichier peut le lire / écrire / 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 étendus du système de fichiers, c'est-à-dire les ACL (listes de contrôle d'accès) sur Mac OS X, mais comme je ne suis pas un expert Linux, vous devriez probablement demander cela dans Server Fault .

Marian Theisen
la source
"donc si vous définissez des permissions de groupe rwx sur un fichier, seul le groupe propriétaire de ce fichier peut le lire / écrire / l'exécuter" je me rends compte, cela peut être trompeur, tout d'abord si vous êtes l'utilisateur propriétaire, bien sûr les règles d'utilisateur propriétaire ont priorité, si vous n'êtes ni l'utilisateur propriétaire, ni dans le groupe de propriétaires, les règles pour les autres s'appliquent.