Comment utiliser la commande chgrp sous Linux



La commande `chgrp` dans l’environnement Linux permet de modifier le groupe propriétaire d’un fichier ou d’un répertoire. Pourquoi opter pour cette commande plutôt que `chown`? Bien qu’un outil polyvalent soit parfois utile, quand la précision est requise, un outil spécifique comme un scalpel est préférable.

Quand recourir à `chgrp`

Vous utiliserez `chgrp` pour ajuster le groupe propriétaire d’un fichier ou d’un dossier. La commande `chown`, quant à elle, permet de changer à la fois l’utilisateur propriétaire et le groupe propriétaire d’un élément. Dès lors, pourquoi utiliser `chgrp`?

En premier lieu, sa simplicité est un atout. Utiliser `chown` pour ne modifier que le groupe propriétaire n’est pas intuitif. La syntaxe demande une attention particulière, notamment concernant l’emploi du caractère « : ». Un oubli ou une erreur dans sa position, et la modification souhaitée ne sera pas effectuée.

La syntaxe de `chgrp` est beaucoup plus directe. De plus, elle propose une fonctionnalité qui liste clairement les modifications apportées.

C’est un outil spécialisé, dédié à une tâche précise. `chgrp` incarne parfaitement le principe Unix : réaliser une chose et la réaliser bien. Explorons ses capacités.

Modifier le groupe propriétaire d’un fichier

La modification du groupe propriétaire d’un fichier est simple. `chgrp` requiert l’utilisation de `sudo`. Étant donné que les groupes ne sont pas liés à un utilisateur unique, le déplacement d’un fichier ou d’un dossier d’un groupe à un autre n’est pas une action courante pour un utilisateur lambda. C’est une tâche réservée aux administrateurs.

Prenons l’exemple d’un fichier source C, nommé « gc.c ». Nous allons assigner ce fichier au groupe « devteam ».

Pour vérifier les paramètres actuels, on peut utiliser `ls` avec l’option `-l` (liste longue).

ls -l

Voici la commande pour modifier le groupe propriétaire : `sudo`, un espace, `chgrp`, un espace, le nom du groupe, un espace, et le nom du fichier.

sudo chgrp devteam gc.c

Afin de confirmer que le changement a bien eu lieu, exécutons à nouveau `ls -l`.

ls -l

On constate que le groupe propriétaire est passé de « dave » à « devteam ».

Pour modifier le groupe propriétaire de plusieurs fichiers simultanément, on peut utiliser des caractères génériques. Modifions le groupe propriétaire de tous les fichiers source C du répertoire courant. On utilise cette commande :

sudo chgrp devteam *.c

On confirme la modification avec `ls -l`.

ls -l

Tous les fichiers source C du dossier ont désormais « devteam » comme groupe propriétaire.

Avec l’option `-c` (changes), `chgrp` affiche les modifications réalisées sur chaque fichier. Supposons une erreur, et que nous souhaitions que le groupe propriétaire des fichiers source C soit « researchlab ». Rectifions cela. Voici la commande:

sudo chgrp -c researchlab *.c

Les modifications sont réalisées et listées, ce qui permet de s’assurer que les changements correspondent aux attentes.

Modifier le groupe propriétaire d’un répertoire

La modification du groupe propriétaire d’un répertoire est tout aussi simple. Voici la commande pour changer le groupe propriétaire du répertoire « backup » :

sudo chgrp -c devteam ./backup

Il est important de préciser que cette commande modifie le groupe propriétaire du répertoire lui-même, et non pas celui des fichiers qui y sont contenus. On utilise `ls -l` avec l’option `-d` (répertoire) pour le vérifier.

ls -l -d

Le groupe propriétaire du répertoire a été modifié en « devteam ».

L’option récursive

Si l’on souhaite changer le groupe propriétaire des fichiers et répertoires contenus dans un répertoire, on peut utiliser l’option `-R` (récursive). `chgrp` modifiera alors le groupe propriétaire de tous les fichiers et sous-répertoires du répertoire cible.

Essayons cela avec le répertoire « backup ». Voici la commande :

sudo chgrp -R devteam ./backup

Nous examinons les fichiers d’un des sous-répertoires avec `ls`, et les paramètres d’un des sous-répertoires avec `ls` également.

ls -l ./backup/images
ls -l -d ./backup/images

Le groupe propriétaire a été modifié aussi bien pour les fichiers que pour les sous-répertoires.

Utilisation d’un fichier de référence

Jusqu’à présent, nous avons indiqué explicitement le nom du groupe à utiliser. Il est également possible d’indiquer à `chgrp` de « définir le groupe propriétaire d’un fichier comme étant le même que celui d’un autre fichier ».

Attribuez le même groupe propriétaire à « gc.h » qu’à « gc.c ».

Vérifions les paramètres actuels de « gc.c » et « gc.h » avec `ls`.

ls -l gc.c
ls -l gc.h

L’option à utiliser est `–reference`. Le groupe propriétaire est copié du fichier de référence vers l’autre fichier. Assurez-vous de l’ordre des fichiers.

sudo chgrp --reference=gc.c gc.h

Utilisons `ls` pour vérifier que les paramètres ont bien été transférés vers « gc.h ».

ls -l gc.h

Le fichier « gc.h » a désormais le même groupe propriétaire que « gc.c ».

Utilisation de `chgrp` avec des liens symboliques

On peut utiliser `chgrp` pour modifier le groupe propriétaire des liens symboliques, ou du fichier pointé par le lien.

Dans cet exemple, un lien symbolique nommé « button_link » a été créé. Il pointe vers le fichier « ./backup/images/button_about.png ». Pour modifier le groupe propriétaire du fichier, il faut utiliser l’option `–dereference`. Ceci modifiera les paramètres du fichier et laissera le lien symbolique inchangé.

Vérifions les paramètres du lien symbolique avec `ls -l`.

ls -l button_link

La commande pour modifier le fichier est:

sudo chgrp --dereference devteam button_link

Nous vérifions que le lien symbolique est inchangé avec `ls`, et les paramètres de propriété du groupe du fichier.

ls -l button_link
ls -l ./backup/images/button_about.png

Le lien symbolique est resté inchangé, et le groupe propriétaire du fichier « button_about.png » a été modifié.

Pour modifier le groupe propriétaire du lien symbolique, il faut utiliser l’option `–no-dereference`.

La commande à utiliser est:

sudo chgrp --no-dereference devteam button_link

On vérifie avec `ls -l` que le nouveau groupe propriétaire est bien défini pour le lien symbolique.

ls -l button-link

Cette fois, la modification a affecté le lien symbolique et non pas le fichier qu’il désigne.

Simple et efficace

La simplicité est un atout. Moins d’éléments à retenir signifie moins de confusion. Cela devrait également se traduire par moins d’erreurs.