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
Vus : 392
Publié par Aldevar : 37