Linux / Commande chgrp : changer le groupe d’un fichier et vérifier l’accès
chgrp change le groupe propriétaire d'un fichier ou d'un répertoire, en conservant son utilisateur propriétaire. Cette opération peut préparer un partage entre plusieurs personnes, mais elle n'ajoute pas les permissions de lecture ou d'écriture du groupe. Vérifiez aussi les droits du fichier, ceux des répertoires parents et les groupes de la session qui l'utilisera.
Vérifier le groupe et les droits de modification
chgrp [options] groupe fichier…
Le groupe indiqué doit exister. Sur les systèmes Linux usuels, le propriétaire peut affecter un de ses propres groupes au fichier ; un autre choix ou un fichier appartenant à quelqu'un d'autre nécessite normalement des privilèges supplémentaires. Les règles exactes dépendent du système et du stockage.
groups
ls -l report.txt
stat -c '%U:%G %A %n' report.txt
GNU stat affiche ici le propriétaire, le groupe, les permissions lisibles puis le nom du fichier. Pour comparer les identifiants numériques, utilisez stat -c '%u:%g %n' report.txt. Le nombre GID, pour Group Identifier, identifie le groupe ; son nom est obtenu par une résolution qui peut dépendre de l'environnement.
Changer un fichier ou plusieurs fichiers nommés
Dans les exemples, remplacez editors par un groupe existant adapté à votre projet. Si vous êtes propriétaire et membre de ce groupe, commencez avec vos droits habituels :
chgrp editors report.txt
stat -c '%U:%G %A %n' report.txt
Après une modification réussie, le groupe doit être editors, et l'utilisateur propriétaire doit être celui relevé avant l'opération. Chgrp est généralement silencieux en cas de réussite. Le contrôle par stat permet de vérifier le résultat sans déduire un succès de la seule absence de texte.
Lorsque l'intervention nécessite réellement les droits administrateur, les formes suivantes ciblent un fichier, puis deux fichiers explicitement nommés :
sudo chgrp editors report.txt
sudo chgrp editors draft.txt final.txt
Une erreur Operation not permitted peut signaler un droit insuffisant ou une restriction du système de fichiers. Identifiez la cause avant de recourir à une élévation de privilèges. Pour revenir au groupe antérieur, relevez-le avant la modification puis réaffectez-le avec les droits nécessaires. Une arborescence dont les groupes diffèrent exige un relevé par fichier.
La forme chown :groupe peut également changer uniquement le groupe. Chgrp exprime directement cette intention ; elle ne remplace pas la modification des permissions par chmod.
Expliquer un accès toujours refusé
Si le groupe a changé mais que le partage ne fonctionne pas, contrôlez ces éléments séparément :
- Vérifiez que le groupe de la session qui accède au fichier correspond au groupe voulu. Une session déjà ouverte peut conserver une ancienne appartenance ; le guide de groups et des groupes hérités par la session explique cette différence.
- Vérifiez les bits du groupe : la lecture nécessite r et la modification du contenu nécessite w, sous réserve des autres contrôles applicables.
- Vérifiez la traversée des répertoires parents avec leur bit x. Utilisez
ls -ld chemin-du-repertoireen remplaçant le chemin par celui que vous examinez. - Si les modes ordinaires semblent corrects, examinez les listes de contrôle d'accès (ACL), la politique SELinux et les contraintes du montage concerné.
Pour les nouveaux fichiers d'un répertoire partagé, le bit setgid du répertoire permet habituellement d'hériter de son groupe sous Linux. Il ne garantit pas l'écriture pour ce groupe : le mode demandé à la création et le masque de création restent pertinents. Traitez donc l'héritage du groupe et les droits de modification comme deux réglages distincts.
Choisir les options sans élargir le périmètre
| Option GNU | Effet |
|---|---|
-R |
Change les groupes des répertoires et de leurs contenus parcourus. |
-h |
Agit sur le lien symbolique lui-même au lieu de sa cible, si le système le permet. |
--reference=fichier |
Prend le groupe du fichier de référence ; ne copie pas son propriétaire ni ses permissions ordinaires. |
-v |
Affiche un diagnostic pour chaque fichier traité. |
Avant une récursion, inspectez le chemin et ses contenus avec ls ou find. Vérifiez également les liens : hors récursion, GNU chgrp suit par défaut un lien donné comme argument. En récursion, le choix des répertoires à traverser et le choix d'agir sur les cibles des liens nécessitent une lecture attentive des options de la version installée.
La documentation officielle de GNU chgrp détaille ces options. Consultez man chgrp sur votre machine avant d'appliquer une commande à un répertoire de service.




