Généralités système Linux

Droits sous Linux : Utilisateurs, Groupes, Permissions

Cet article a été mis à jour, vous consultez ici une archive de cet article!
Table des matières


Introduction





Les permissions constituent un système simple de définition des droits d'accès aux fichiers. Elles restent le moyen le plus utilisé pour définir les droits des utilisateurs.

Cet article présente simplement leur lecture, et leur attribution.





Quelques notions





Avant tout, quelques termes qui seront rencontrés dans la suite de la lecture :

  • Utilisateur :Utilisateur connecté au système. La liste des utilisateurs est disponible dans le fichier /etc/passwd
  • Groupe :Groupe appartenant au système. La liste des groupes est disponible dans le fichier /etc/group
  • Utilisateur Propriétaire (noté [b]u comme user) :[/b]Utilisateur qui est en possession du fichier
  • Groupe Propriétaire (noté [b]g comme group):[/b]Groupe d'utilisateurs qui est en possession du fichier
  • Autres Utilisateurs (noté [b]o comme other):[/b]Utilisateurs qui ne sont ni propriétaire du fichier, ni faisant partie du groupe propriétaire.
  • Tous (noté [b]a comme all):[/b]Utilisateur propriétaire + Groupe propriétaire + Autres utilisateurs.









Fonctionnement des permissions







Quels sont les droits





Les différents droits disponibles sont les suivants :

  • Lecture (noté r comme read).
  • Écriture (noté w comme write).
  • Exécution (noté x comme eXecution).





Ces droits ont deux sens différents s'ils sont appliqués à des fichiers ou des dossiers :





Pour les fichiers







  • Lecture (noté r) : on peut par exemple lire le fichier avec un logiciel.
  • Écriture (noté w) : on peut modifier le fichier et le vider de son contenu.
  • Exécution (noté x) : on peut exécuter le fichier s'il est prévu pour, c'est-à-dire si c'est un fichier exécutable (script, programme).







Pour les dossiers







  • Lecture (noté r) : il autorise l'affichage du contenu du répertoire (la liste des fichiers présents à la racine de ce répertoire).
  • Écriture (noté w) : il autorise la création, la suppression et le changement de nom des fichiers qu'il contient, quels que soient les droits d'accès des fichiers de ce répertoire (même s'ils ne possèdent pas eux-mêmes le droit en écriture). Néanmoins le droit spécial sticky bit permet de passer outre ce comportement.
  • Exécution (noté x) : il autorise l'accès (le traverser) au répertoire.







On appelle parfois r, w et x des « flags » ou « drapeaux ». Sur un fichier donné, ils doivent être définis pour son propriétaire, son groupe, mais aussi les autres utilisateurs (différents du propriétaire et n'appartenant pas au groupe).

Seuls root et le propriétaire d'un fichier peuvent changer ses permissions d'accès.



L'utilisateur root outrepasse tous les droits. Il a accès à la lecture et la modification de tous les fichiers.





Lire ses droits





Les droits sont représentés par une suite de 9 caractères.

Les trois premiers sont les permissions de l'utilisateur,

Les trois suivants celles du groupe,

Les trois dernières celles des autres utilisateurs.



Code BASH :
 
 rwxr-xr--
 \ /\ /\ /
  v  v  v
  |  |  droits des autres utilisateurs (o)
  |  |
  |  droits des utilisateurs appartenant au groupe (g)
  |
 droits du propriétaire (u)




Ici, le propriétaire peut lire, écrire et exécuter le fichier,

mais les utilisateurs du groupe attribué au fichier ne peuvent que le lire et l'exécuter,

et enfin que les autres utilisateurs ne peuvent que lire le fichier.



Une autre manière de représenter ces droits est sous forme binaire, où

r = 4 si actif ou 0 si inactif

w = 2 si actif ou 0 si inactif

x = 1 si actif ou 0 si inactif



Et ce pour u, g et o.



Code BASH :
 rwxr-xr--


Ainsi, rwx « vaut » 7 (4+2+1), r-x « vaut » 5 (4+1) et r-- « vaut » 4. Les droits complets (rwxr-xr--) sont donc équivalent à 754.



Exemple





On peut voir les droits attribués avec la commande ls -l :



Code BASH :
ls -l
 
-rw-r--r-- 1 adriencl users 8  1 janv. 12:56 fichier
 




Ici, on a donc plus d'informations.



La sortie signifie que le fichier fichier (de taille 8) appartient à « adriencl », qu'on lui a attribué le groupe « users », et que les droits sont rw-r--r--. On remarque qu'il y a en fait 10 caractères sur la zone de droits. Le premier - n'est pas un droit, c'est un caractère réservé pour indiquer le type de fichier. Il peut prendre les valeurs suivantes :



  • d : répertoire
  • l : lien symbolique
  • c : périphérique de type caractère
  • b : périphérique de type bloc
  • p : fifo
  • s : socket
  • - : fichier classique







Changer les droits





Seuls root et le propriétaire d'un fichier peuvent changer ses permissions d'accès.



Pour cela, on peut utiliser la commande chmod.



Cette commande fonctionne de plusieurs façons.





Définir des droits







Si on veut attribuer les droits rwx------ (seul l'utilisateur à tous les droits sur le fichier, et pas les autres) on peut utiliser la commande avec les valeurs octales :



Code BASH :
chmod 700 fichier




Voici ce que cela donne :

Code BASH :
 
ls -l fichier
-rw-r--r-- 1 adriencl users 8  1 janv. 12:56 fichier
 
chmod 700 fichier
 
ls -l fichier
-rwx------ 1 adriencl users 8  1 janv. 12:56 fichier
 








Ajouter ou ôter des droits







La commande suivante oblige à attribuer tous les droits d'un coup. Mais il est possible de n'ajouter un droit que pour un type d'utilisateur spécifique.



Pour cela, on utilise toujours la commande chmod mais avec les attributs u g o a pour "qui" et r w x pour "quoi" et le symbole + ou - pour ajouter ou ôter des droits



Pour ajouter le droit de lecture à tout le monde sur mon fichier :



Code BASH :
chmod a+r fichier




Pour ajouter le droit de modification au groupe :



Code BASH :
chmod g+w fichier




Pour retirer le droit de lecture aux autres :



Code BASH :
chmod o-r fichier




On peut aussi combiner les opérations :



Ajouter le droit de lecture écriture au groupe et aux autres



Code BASH :
chmod go+rw fichier




Et pour finir, on peut combiner deux opérations différentes en séparant par une virgule, pour par exemple, ajouter le droit x au groupe et retirer le droit w aux autres



Code BASH :
chmod g+x,o-w fichier




Voici en exemple la synthèse des commandes précédentes, avec affichage des permissions entre chaque :



Code BASH :
ls -l fichier
-rwx------ 1 adriencl users 8  1 janv. 12:56 fichier
 
chmod a+r fichier
 
ls -l fichier
-rwxr--r-- 1 adriencl users 8  1 janv. 12:56 fichier
 
chmod g+w fichier
 
ls -l fichier
-rwxrw-r-- 1 adriencl users 8  1 janv. 12:56 fichier
 
chmod o-r fichier
 
ls -l fichier
-rwxrw---- 1 adriencl users 8  1 janv. 12:56 fichier
 
chmod go+rw fichier
 
ls -l fichier
-rwxrw-rw- 1 adriencl users 8  1 janv. 12:56 fichier
 
chmod g+x,o-w fichier
 
ls -l fichier
-rwxrwxr-- 1 adriencl users 8  1 janv. 12:56 fichier








Changer les utilisateurs et groupes (a venir)









Les droits étendus (à venir)