Les droits sous Linux
Sommaire
I. Présentation
Pour les systèmes d'exploitation multi-utilisateurs tel que Linux il est primordial de mettre en place une politique de permissions contrôlant les actions autorisées sur les fichiers, répertoires et sur l’ensemble des ressources du système.
Sous Linux les droits s'appliquent sur les fichiers en fonction de 3 identités : le propriétaire du fichier, le groupe (qui contient un ou plusieurs utilisateurs) et les autres utilisateurs qui ne sont ni propriétaires, ni présents dans le groupe.
Les droits sont propres à chaque fichier et sont représentés par 3 séries de 3 lettres. Ces lettres peuvent prendre comme valeurs r, w, x ainsi que s et t qui peuvent parfois être en majuscule S, T.
II. Les droits sous Linux
A.Visualisation
La commande ls -l permet de lister le contenu d'un dossier et de fournir un certain nombre d'informations. Elle permet notamment de connaître le propriétaire et le groupe propriétaire d'un fichier ainsi que leurs droits respectifs, elle renseigne également sur les droits accordés aux autres utilisateurs. De plus, cette commande indique le type de fichier, identifié par une lettre ou un tiret en début de ligne.
Exemple : Listing du dossier /usr
[root@server:~]# ls -l /usr […] drwxr-xr-x 75 root root 12288 sept. 1 04:00 lib drwxrwsr-x 13 root staff 4096 sept. 1 13:04 local -rw-rw-r-- 1 aline aline 0 sept. 4 10:47 testDroit01.txt -rw-rw-r-- 3 aline aline 0 sept. 5 15:59 fichier1.jpg
Ici nous avons le dossier /local appartenant à root qui possède les droits rwx. Le groupe propriétaire de ce dossier est staff et possède quant à lui les droits rws. Tous les autres utilisateurs ont seulement les droits r-x, ici le tiret indique l’absence du droit w.
B. Signification des droits
Il est important de distinguer les dossiers (représentés par la lettre d) des autres fichiers car les droits n'ont pas la même signification.
1- Pour les fichiers
- r : Lecture - Permet de lire, ouvrir, visualiser (cas d'une image)
Exemple de commande permise : cat
- w : Écriture - Permet de modifier le fichier
Exemple de commandes permises : utilisation des sorties standards > ou >> pour écrire dans le fichier.
Il est possible d'écrire dans un fichier sans qu'il possède le droit de lecture comme le demande la plupart des éditeurs de texte.
- x : Exécution - Autorise l'utilisateur à exécuter le fichier
Programmes, scripts shell.
- s : SetUID - Exécution avec les droits du propriétaire.
Exemples : /bin/mount, /bin/ping, /usr/bin/passwd s'exécutent avec le droit setUID.
Ainsi un simple utilisateur pourra changer son mot de passe en lançant la commande passwd qui appartient à root et écrire dans le fichier /etc/sadow qui appartient également à root.
-rwsr-xr-x 1 root root 51096 mai 25 2012 /usr/bin/passwd
- s : SetGID - Exécution avec les droits du groupe.
Exemples : /usr/bin/wall, /usr/bin/crontab s'exécutent avec le droit setGID
-rwxr-sr-x 1 root crontab 35984 févr. 9 2013 /usr/bin/crontab
- t : sticky bit - Mise en zone de swap.
Exemples : /dev/ptya0, /dev/mem, /dev/port, /dev/ram0
crw-rw-rwT 1 root tty 2, 176 mai 6 05:03 /dev/ptya0
Le but est que le fichier puisse être stocké en mémoire pour pouvoir être relancé plus rapidement.
2 - Pour les dossiers
- r : Lecture - Permet de lire le contenu du dossier (listage des fichiers, arborescence)
Exemple de commande permise : ls
- w : Écriture - Permet de modifier le contenu du dossier (créer, copier, renommer, supprimer)
Exemples de commandes permises : mkdir, touch, cp, rm
- x : Exécution - Autorise l'utilisateur à traverser le dossier ou à accéder à un fichier dans le dossier
Exemple de commande permise : cd
- s : SetUID - N'est pas utilisé sous UNIX.
Il est cependant possible (avec chmod) de positionner ce droit mais reste sans effet.
- s : SetGID - Tout fichier crée dans ce dossier héritera du groupe du dossier parent. Les sous-dossiers crées hériteront quant à eux du droit setGID
Exemples : /usr/local, /usr/local/bin, /usr/local/lib
drwxrwsr-x 13 root staff 4096 sept. 1 13:04 local
Utile lorsque plusieurs utilisateurs travaillent sur un projet commun
- t : sticky bit - Tout fichier crée ne pourra être supprimé que par son propriétaire et par root.
Exemple : /var/tmp, /dev/sda, /dev/port, /var/spool/cron/crontabs
drwxrwxrwt 2 root root 4096 sept. 11 08:45 tmp
C'est aussi le principe utilisé par les wikis.
III - Modifier les droits
A. La commande Change Mod (chmod)
La commande permettant de changer les permissions est chmod. Son utilisation est la suivante :
chmod (-R) [u g o a] [+ - =] [r w x (X) s t] fichier(dossier)
Les options u, g, o et a spécifient l'attribution des droits pour le propriétaire (u : user), le groupe (g : group), les autres utilisateurs (o : other). L'option a : all permet d'appliquer les droits à tous les utilisateurs. Les symboles +, -, = indiquent l'ajout d'un droit, le retrait et enfin l'égalité.
chmod ugo=rwx fichier
est équivalent à :
chmod a=rwx fichier
Le X majuscule permet, dans le cas d'une attribution récursive des droits (option -R), de spécifier uniquement le droit d’exécution sur les dossiers contenus dans un répertoire sans toucher aux autres fichiers.
chmod -R g=rwX dossier/
B. Utilisations des valeurs octales
Il est possible avec la commande chmod d'utiliser les valeurs octales correspondantes aux droits r, w, x, s et t.
Tableaux des équivalences des droits (binaire, octal, lettres) :
Lorsque les droits s et t sont activés ils viennent se positionner sur les droits d'exécutions :
Important : Lorsque les droits s ou t sont appliqués le droit x n'est plus visible.
- Si le droit x est absent alors les droits setUID, setGID, stickyBit seront en majuscule
- Si le droit x est présent alors les droits setUID, setGID, stickyBit seront en minuscule
Exemple de calcul de la valeur octale :
Vérification :
chmod 2744 fichier1 & chmod 2754 fichier2
ls -l fichier
-rwxr-Sr-- 1 aline aline 0 sept. 23 16:58 fichier1
-rwxr-sr-- 1 aline aline 0 sept. 23 16:58 fichier2
C. Exemples
Les commandes suivantes sont équivalentes :
chmod 777 fichier
chmod ugo=rwx fichier
//résultat de ls -l :
-rwxrwxrwx 1 user group 0 sept. 8 09:54 fichier
chmod 600 fichier
chmod u=rw fichier & chmod go=- fichier
//résultat de ls -l :
-rw------- 1 user group 0 sept. 8 09:56 fichier
chmod 42 fichier
chmod u=- fichier & chmod g=r fichier & chmod o=w fichier
//résultat de ls -l :
----r---w- 1 user group 0 sept. 8 09:59 fichier
chmod 1337 fichier
chmod ug=wx fichier & chmod o=rwxt fichier
//résultat de ls -l :
--wx-wxrwt 1 user group 0 sept. 8 10:01 fichier
chmod 2016 fichier
chmod g=xs fichier & chmod o=rw fichier
//résultat de ls -l :
------srw- 1 user group 0 sept. 8 10:03 fichier
chmod 7000 fichier
chmod ugo=st
//résultat de ls -l :
---S--S--T 1 user group 0 sept. 8 10:05 fichier
Il est parfois bien plus rapide d'utiliser les valeurs octales mais elles restent néanmoins plus difficiles à appréhender.
IV. Conclusion
La gestion des droits sur Linux est simple et permet d'avoir une bonne maîtrise du système. Cependant cette simplicité ne permet pas toujours de couvrir l’ensemble des besoins en entreprise. Chaque fichier appartient en effet à un utilisateur et un groupe unique, ce qui peut être problématique et restrictif.
Pour permettre une gestion plus fine des permissions d'accès il existe les ACL (Acess Control List) qui accordent des privilèges à plusieurs utilisateurs ou plusieurs groupes pour un même fichier.
C’est super bien écrit, j’ai tout compris.
Merci 😉
Bonjour, merci pour ce très bon article qui résume bien les droits sous Linux. 2 petites remarques cependant:
1) il manque peut-être un petit mot sur la commande « umask », qui concerne également les droits…
2) concernant les fichiers, le noyau Linux ignore totalement le sticky bit. C’est un mécanisme qui existait sur les « vieux » Unix, mais les OS récents ont tous des mécanismes « intelligents » qui rendent celui-là inutile (beaucoup gardent la trace des exécutables les plus récemment lancés, et les gardent en zone de swap autant que possible, un peu comme si le sticky bit était positionné par défaut, en fait).
bonjour, c’est vraiment bien présenter. grand merci.
Très bien je suis satifait, Merci!
Cour sur les droits Linux clair, direct. Sa ma aidé a comprendre les cours de SEN Merci !
bravo cours parfait, simple a comprendre.
merci
Merci très juste et limpide.jai aimé