Le concept de propriétaire et de groupes de fichiers est fondamental pour Linux. Chaque fichier est associé à un propriétaire et à un groupe. Vous pouvez utiliser les commandes chown et chgrp pour changer le propriétaire ou le groupe d'un fichier ou d'un répertoire particulier.
Dans cet article, nous discuterons de la commande 'chown' car elle couvre la majeure partie de 'chgrp ' également.
Même si vous connaissez déjà cette commande, l'un des exemples mentionnés ci-dessous est probablement nouveau pour vous.
1. Changer le propriétaire d'un fichier
# ls -lart tmpfile -rw-r--r-- 1 himanshu family 0 2012-05-22 20:03 tmpfile # chown root tmpfile # ls -l tmpfile -rw-r--r-- 1 root family 0 2012-05-22 20:03 tmpfile
Nous voyons donc que le propriétaire du fichier est passé de "himanshu" à "root".
2. Changer le groupe d'un fichier
Grâce à la commande chown, le groupe (auquel appartient un fichier) peut également être modifié.
# ls -l tmpfile -rw-r--r-- 1 himanshu family 0 2012-05-22 20:03 tmpfile # chown :friends tmpfile # ls -l tmpfile -rw-r--r-- 1 himanshu friends 0 2012-05-22 20:03 tmpfile
Si vous observez attentivement, le groupe du fichier est passé de « famille » à « amis ». Nous voyons donc qu'en ajoutant simplement un ':' suivi du nouveau nom de groupe, le groupe du fichier peut être modifié.
3. Modifier à la fois le propriétaire et le groupe
# ls -l tmpfile -rw-r--r-- 1 root family 0 2012-05-22 20:03 tmpfile # chown himanshu:friends tmpfile # ls -l tmpfile -rw-r--r-- 1 himanshu friends 0 2012-05-22 20:03 tmpfile
Nous voyons donc qu'en utilisant la syntaxe '
4. Utilisation de la commande chown sur le fichier de lien symbolique
Voici un lien symbolique :
# ls -l tmpfile_symlnk lrwxrwxrwx 1 himanshu family 7 2012-05-22 20:03 tmpfile_symlnk -> tmpfile
Nous voyons donc que le lien symbolique 'tmpfile_symlink' renvoie au fichier 'tmpfile'.
Voyons ce qui se passe si la commande chown est lancée sur un lien symbolique :
# chown root:friends tmpfile_symlnk # ls -l tmpfile_symlnk lrwxrwxrwx 1 himanshu family 7 2012-05-22 20:03 tmpfile_symlnk -> tmpfile # ls -l tmpfile -rw-r--r-- 1 root friends 0 2012-05-22 20:03 tmpfile
Lorsque la commande chown a été émise sur un lien symbolique pour changer le propriétaire ainsi que le groupe, c'est alors le référent du lien symbolique, c'est-à-dire "tmpfile" dont le propriétaire et le groupe ont été modifiés. C'est le comportement par défaut de la commande chown. De plus, il existe un drapeau '-dereference' pour le même.
5. Utilisation de la commande chown pour modifier de force le propriétaire/groupe du fichier symbolique.
En utilisant le drapeau '-h', vous pouvez changer de force le propriétaire ou le groupe d'un lien symbolique comme indiqué ci-dessous.
# ls -l tmpfile_symlnk lrwxrwxrwx 1 himanshu family 7 2012-05-22 20:03 tmpfile_symlnk -> tmpfile # chown -h root:friends tmpfile_symlnk # ls -l tmpfile_symlnk lrwxrwxrwx 1 root friends 7 2012-05-22 20:03 tmpfile_symlnk -> tmpfile
6. Modifier le propriétaire uniquement si un fichier appartient à un utilisateur particulier
En utilisant l'indicateur chown "-from", vous pouvez changer le propriétaire d'un fichier, uniquement si ce fichier appartient déjà à un propriétaire particulier.
# ls -l tmpfile -rw-r--r-- 1 root friends 0 2012-05-22 20:03 tmpfile # chown --from=guest himanshu tmpfile # ls -l tmpfile -rw-r--r-- 1 root friends 0 2012-05-22 20:03 tmpfile # chown --from=root himanshu tmpfile # ls -l tmpfile -rw-r--r-- 1 himanshu friends 0 2012-05-22 20:03 tmpfile
- Dans l'exemple ci-dessus, nous avons vérifié que le propriétaire/groupe d'origine du fichier "tmpfile" était root/friends.
- Nous avons ensuite utilisé l'indicateur "-from" pour changer le propriétaire en "himanshu", mais uniquement si le propriétaire existant est "invité".
- Maintenant, comme le propriétaire actuel n'était pas un "invité". Ainsi, la commande n'a pas réussi à changer le propriétaire du fichier.
- Nous avons ensuite essayé de changer le propriétaire si le propriétaire existant est "root" (ce qui était vrai) et cette fois la commande a réussi et le propriétaire a été changé en "himanshu".
Sur une note connexe, si vous souhaitez modifier l'autorisation d'un fichier, vous devez utiliser la commande chmod.
Si vous êtes débutant, vous devriez commencer par lire les bases des autorisations de fichiers.
7. Changer de groupe uniquement si un fichier appartient déjà à un certain groupe
Ici aussi le drapeau ‘–from’ est utilisé mais de la manière suivante :
# ls -l tmpfile -rw-r--r-- 1 himanshu friends 0 2012-05-22 20:03 tmpfile # chown --from=:friends :family tmpfile # ls -l tmpfile -rw-r--r-- 1 himanshu family 0 2012-05-22 20:03 tmpfile
Étant donné que le fichier 'tmpfile' appartenait en fait au groupe 'amis', la condition était donc correcte et la commande a réussi.
Nous voyons donc qu'en utilisant le drapeau '–from=:
REMARQUE :En suivant le modèle "–from=
8. Copiez les paramètres du propriétaire/groupe d'un fichier à un autre
Ceci est possible en utilisant le drapeau ‘–reference’.
# ls -l file -rwxr-xr-x 1 himanshu family 8968 2012-04-09 07:10 file # ls -l tmpfile -rw-r--r-- 1 root friends 0 2012-05-22 20:03 tmpfile # chown --reference=file tmpfile # ls -l tmpfile -rw-r--r-- 1 himanshu family 0 2012-05-22 20:03 tmpfile
Dans l'exemple ci-dessus, nous avons d'abord vérifié le propriétaire/groupe du fichier de référence "fichier", puis vérifié le propriétaire/groupe du fichier cible "tmpfile". Les deux étaient différents. Ensuite, nous avons utilisé la commande chown avec l'option '-reference' pour appliquer les paramètres de propriétaire/groupe du fichier de référence au fichier cible. La commande a réussi et les paramètres de propriétaire/groupe de 'tmpfile' ont été rendus similaires au 'fichier'.
9. Changer le propriétaire/groupe des fichiers en parcourant les répertoires de manière récursive
Ceci est rendu possible par l'option '-R'.
# ls -l linux/linuxKernel -rw-r--r-- 1 root friends 0 2012-05-22 21:52 linux/linuxKernel # ls -l linux/ubuntu/ub10 -rw-r--r-- 1 root friends 0 2012-05-22 21:52 linux/ubuntu/ub10 # ls -l linux/redhat/rh7 -rw-r--r-- 1 root friends 0 2012-05-22 21:52 linux/redhat/rh7 # chown -R himanshu:family linux/ # ls -l linux/redhat/rh7 -rw-r--r-- 1 himanshu family 0 2012-05-22 21:52 linux/redhat/rh7 # ls -l linux/ubuntu/ub10 -rw-r--r-- 1 himanshu family 0 2012-05-22 21:52 linux/ubuntu/ub10 # ls -l linux/linuxKernel -rw-r--r-- 1 himanshu family 0 2012-05-22 21:52 linux/linuxKernel
Nous voyons donc qu'après avoir vérifié le propriétaire/groupe de tous les fichiers dans le répertoire "linux" et ses deux sous-répertoires "ubuntu" et "redhat". Nous avons émis la commande chown avec l'option '-R' pour changer à la fois le propriétaire et le groupe. La commande a réussi et le propriétaire/groupe de tous les fichiers a été modifié avec succès.
10. Utilisation de la commande chown sur un répertoire de liens symboliques
Voyons ce qui se passe si nous lançons la commande 'chown' pour changer de manière récursive le propriétaire/groupe de fichiers dans un répertoire qui est un lien symbolique vers un autre répertoire.
Voici un répertoire de liens symboliques ‘linux_symlnk’ qui renvoie au répertoire ‘linux’ (déjà utilisé dans l'exemple ‘9’ ci-dessus) :
$ ls -l linux_symlnk lrwxrwxrwx 1 himanshu family 6 2012-05-22 22:02 linux_symlnk -> linux/
Maintenant, changeons le propriétaire (de himanshu à root) de ce répertoire de liens symboliques de manière récursive :
# chown -R root:friends linux_symlnk # ls -l linux_symlnk/ -rw-r--r-- 1 himanshu friends 0 2012-05-22 21:52 linuxKernel drwxr-xr-x 2 himanshu friends 4096 2012-05-22 21:52 redhat drwxr-xr-x 2 himanshu friends 4096 2012-05-22 21:52 ubuntu
Dans la sortie ci-dessus, nous voyons que le propriétaire des fichiers et des répertoires n'a pas été modifié. En effet, par défaut, la commande 'chown' ne peut pas traverser un lien symbolique. C'est le comportement par défaut mais il y a aussi un indicateur "-P" pour cela.
11. Utiliser chown pour changer de force le propriétaire/groupe d'un répertoire de liens symboliques de manière récursive
Ceci peut être réalisé en utilisant le drapeau -H
# chown -R -H guest:family linux_symlnk # ls -l linux_symlnk/ total 8 -rw-r--r-- 1 guest family 0 2012-05-22 21:52 linuxKernel drwxr-xr-x 2 guest family 4096 2012-05-22 21:52 redhat drwxr-xr-x 2 guest family 4096 2012-05-22 21:52 ubuntu
Nous voyons donc qu'en utilisant le drapeau -H, le propriétaire/groupe de tous les fichiers/dossiers a été modifié.
12. Lister toutes les modifications apportées par la commande chown
Utilisez l'option détaillée -v, qui indiquera si la propriété du fichier a été modifiée ou conservée, comme indiqué ci-dessous.
# chown -v -R guest:friends linux changed ownership of `linux/redhat/rh7' to guest:friends changed ownership of `linux/redhat' retained to guest:friends ownership of `linux/redhat_sym' retained as guest:friends ownership of `linux/ubuntu_sym' retained as guest:friends changed ownership of `linux/linuxKernel' to guest:friends changed ownership of `linux/ubuntu/ub10' to guest:friends ownership of `linux/ubuntu' retained as guest:friends ownership of `linux' retained as guest:friends