Les droits sous Linux

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.

tableau01

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) :

tableau02

Lorsque les droits s et t sont activés ils viennent se positionner sur les droits d'exécutions :

tableau03

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 :

tableau04b

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.

 

Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Partager sur Google+ Envoyer par mail

Aline

Administratrice réseaux et systèmes (Linux). Entre deux maintenances serveur, j'écris des articles dans le but de partager mon expérience professionnelle sur Linux, les réseaux informatiques, la sécurité et le scripting.

Nombre de posts de cet auteur : 4.Voir tous les posts

7 thoughts on “Les droits sous Linux

  • C’est super bien écrit, j’ai tout compris.

    Merci 😉

    Répondre
  • 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).

    Répondre
  • bonjour, c’est vraiment bien présenter. grand merci.

    Répondre
  • Cour sur les droits Linux clair, direct. Sa ma aidé a comprendre les cours de SEN Merci !

    Répondre
  • bravo cours parfait, simple a comprendre.
    merci

    Répondre

Répondre à Geoffrey Annuler la réponse

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.