Souvent, lorsqu'ils utilisent Linux, les utilisateurs ne se posent pas la question de savoir à qui appartient un fichier. Cependant, lorsqu'il s'agit de faire fonctionner un serveur, la situation change. Pour renforcer la sécurité, le serveur dispose de son propre utilisateur. Il n'est pas rare que les serveurs utilisent le même groupe, comme www-data
. Voyons maintenant comment cette fonction fonctionne avec les fichiers et les répertoires. Nous accorderons une attention particulière aux liens symboliques, car ils peuvent causer des problèmes lors de l'utilisation de paramètres non sécurisés.
La norme relative aux autorisations de fichiers a été introduite dans Linux par Unix. Chaque objet a donc un utilisateur
, un groupe et
décrit les droits desautres
utilisateurs(other
). Les permissions se composent de trois éléments : lecture, écriture, exécution. La commande umask
est utilisée pour modifier les permissions, mais les commandes chown
sont utilisées pour modifier directement le propriétaire et le groupe. La commande ls
peut être utilisée pour afficher les permissions actuelles.
Vue générale de la commande chgrp
:
$ chgrp [options] new_group file_name
Liste des options courantes de la commande chgrp
:
-h
- travailler directement avec les liens symboliques eux-mêmes ;--dereference
- travaille avec les fichiers, et non avec les liens symboliques eux-mêmes. Utilisée par défaut ;-R
- traitement récursif d'un répertoire avec tout son contenu ;-H
- suit le lien symbolique et modifie les attributs du fichier/répertoire. Utilisé conjointement avec le paramètre -R
;-L
- suit le lien symbolique et poursuit le traitement récursif. Utilisé avec le paramètre -R
;-P
- lors de la rencontre d'un lien symbolique, ne traiter que celui-ci. Utilisé avec le paramètre -R
, c'est la valeur par défaut ;--reference=nom_du_fichier
- utilise le groupe d'échantillons ;-c
- la sortie ne change que lors du traitement ;-v
- affiche des informations sur chaque objet traité.L'exemple le plus simple d'utilisation de la commande chgrp
. L'exemple suivant modifie l'ensemble de l'objet www-data
pour le fichier
dans le dossier actuel :
$ sudo chgrp www-data file.txt
Et celui-ci change le groupe en www-data
pour le dossier
:
$ sudo chgrp www-data folder
La commande fonctionne de manière très prévisible, en changeant le groupe. Les objets du dossier restent inchangés. Si des liens symboliques sont traités, leurs attributs restent inchangés, mais l'objet reçoit un nouveau groupe. Ce comportement est similaire à la gestion du paramètre --dereference
.
Par exemple, ces commandes appliquées aux liens symboliques fonctionneront comme indiqué dans la capture d'écran :
$ sudo chgrp www-data sym_file.txt
Voyons comment fonctionne le paramètre -h
qui modifie les attributs d'un lien symbolique :
$ sudo chgrp -h www-data sym_file
Le groupe a été défini non seulement pour le répertoire, mais aussi pour tous les fichiers qu'il contient. Notez que le comportement a changé : désormais, lors du traitement d'un lien symbolique, les attributs sont définis pour le lien lui-même, et non pour l'objet.
Pour comprendre la différence entre les paramètres -H
et -L
, examinons quelques exemples supplémentaires. Rappelons qu'ils doivent être utilisés avec -R :
$ sudo chgrp -RH www-data folder
En utilisant -H
, le comportement lors du traitement des liens symboliques a changé, ils sont maintenant traités comme si les fonctions étaient exécutées séparément. Les attributs des références ne changent pas, mais les attributs des objets eux-mêmes changent, et le traitement récursif s'arrête lorsque vous passez à un répertoire.
$ sudo chgrp -RL www-data folder
Le traitement récursif s'arrête lorsque vous passez à un répertoire. Il ne remplit qu'une seule fonction : il modifie le groupe de fichiers et de répertoires.
Lorsque vous traitez des liens symboliques, vous devez être extrêmement prudent pour ne pas endommager le système.