Gestion des droits sous GNU/Linux.
Dans ce nouveau billet, je vais tenter d’expliquer comment fonctionne les droits sur les fichiers sous GNU/Linux et surtout, comment modifier ces droits depuis un terminal.
Utilisateur, groupe et les autres
Pour chaque fichier, on va pouvoir déterminer quels sont les droits pour l’utilisateur propriétaire, le groupe propriétaire et les autres. Pour connaitre les droits actuels sur un fichier, on peut utiliser ls -l
ls -l fichier1 -rw-r--r-- 1 aldevar users 28 2009-12-20 18:13 fichier1
Ici, on voit donc que l’utilisateur propriétaire est aldevar et le groupe propriétaire est users.
Pour chaque fichier, il existe 3 propriétés : Lecture (Read), Ecriture (Write) et Execution (Execute). Chacun de ses attributs est représenté par 1 lettre (R, W et X). On peut donc définir pour l’utilisateur propriétaire, le groupe propriétaire et les autres ce à quoi ils auront accès. Le premier groupe de 3 lettres définit les droits pour l’utilisateur, le second groupe pour le groupe et le dernier groupe de 3 lettres pour tous les autres.
rw- → Lecture et écriture pour l’utilisateur aldevar
r– → Lecture pour le groupe users
r– → Lecture pour tous les autres utilisateurs. (Ceux qui ne font pas parti du groupe ‘users’ )
Modifier l’utilisateur et le groupe propriétaire
La commande chown (diminutif de Change Owner) va servir a modifier l’utilisateur propriétaire. La commande chgrp (Change Group) fera la même chose pour le groupe. Pour expliquer leur fonctionnement, voici un exemple concret.
Je possède un fichier ayant ces droits là :
-rw-r--r-- root root 28 2009-12-20 18:13 fichier1
Et je souhaite changer l’utilisateur et le groupe. Voici les commandes à utiliser :
chown aldevar fichier1 chgrp users fichier1 ls -l fichier1 -rw-r--r-- 1 aldevar users 28 2009-12-20 18:13 fichier1
Si ou souhaite modifier en même temps l’utilisateur et le groupe propriétaire, chown permet de le faire, grâce à cette syntaxe:
chown aldevar:users fichier1
Modifier les attributs RWX
La commande chmod va permettre d’ajouter ou de supprimer des droits en lecture/ecriture/exécution sur les fichiers. Si on souhaite par exemple ajouter des droits en lecture à tout le monde, on va utiliser cette syntaxe :
chmod +r fichier1
On peut également choisir qui sera affecté par les changements de droits. On utilise pour cela des diminutifs (u pour user, g pour group et enfin o pour other). Par exemple :
chmod g+w fichier1
donnera les droits en écriture pour le groupe.
Enfin, une dernière syntaxe va permettre de donner les droits grâce à des chiffres. Vous avez sans doute déjà aperçu des chmod 777 fichier ou chmod 644 fichier. Pour comprendre cette syntaxe, il est nécessaire d’avoir quelques notions de binaires. En effet, chaque groupe de rwx peut être codé de 0 a 7.
Chaque R, W ou X peut être positionné sur 0 ou 1. Donc –x équivaut a mettre un 1 binaire pour l’exécution (001). Si on souhaite ajouter les droits en lecture, ceci va nous donner r-x soit 101. Le 101 binaire correspondant au 5 décimale.
Pour résumer :
--x → 1 binaire → 1 décimal -w- → 10 binaire → 2 décimal -wx → 11 binaire → 3 décimal r-- → 100 binaire → 4 décimal r-x → 101 binaire → 5 décimal rw- → 110 binaire → 6 décimal rwx → 111 binaire → 7 décimal
Donc, d’après ce ‘tableau’, si on souhaite mettre les droits d’un fichier en rw-r–r– on utilisera cette commande :
chmod 644 fichier1 ls -l fichier1 rw-r--r-- 1 aldevar users 28 2009-12-20 18:13 fichier1
Et pour donner tous les droits à tout le monde :
chmod 777 fichier1 ls -l fichier1 rwxrwxrwx 1 aldevar users 28 2009-12-20 18:13 fichier1