Menu Fermer

Comment fonctionnement les permissions de fichiers sur Linux

Si vous êtes nouveau à Linux Administration, vous vous demandez peut-être comment fonctionnent les autorisations de fichiers Linux sur les systèmes Linux.

Peut-être avez-vous rencontré le message d’accès refusé lors de l’accès à un fichier ou répertoire.
Vous ne parvenez pas à supprimer un fichier car le système vous le refuse.

Sur Linux, pour protéger l’accès à un répertoire ou fichier ou contre sa modification ou suppression, on attribue des autorisations et permissions de fichiers.

Aujourd’hui, nous allons examiner le fonctionnement des permissions et autorisations de fichiers fonctionnent sur Linux.

Comment fonctionnement les permissions de fichiers Linux

Comment fonctionnement les permissions de fichiers Linux

Propriétaire, groupes et tes types de permissions

Le compte utilisateur vous permet de vous connecter à Linux et définit les permissions et autorisations que vous pouvez effectuer.

Ainsi on distingue :

  • Propriété: L’utilisateur et le groupe possédant le fichier, ce qui signifie qu’ils l’ont créé ou ils ont été attribués en tant que propriétaires du fichier ou du répertoire.
  • Autorisations: représentent l’ensemble des actions que vous pouvez effectuer selon lesquelles vous êtes (le compte d’utilisateur que vous êtes connecté) et le groupe à laquelle vous appartenez.

La commande whoami permet d’afficher l’utilisateur avec lequel vous êtes connecté.
La commande groups ou id affiche les groupes auquel l’utilisateur appartient.

whoami, group et id pour afficher l'utilisateur courant et les groupes auquel il appartient

Sur Linux, il existe trois principales autorisations de fichiers qui permettent de déterminer les accès ou les modifications de fichiers.

PermissionDescription
read (r)Les autorisations de lecture d’un fichier ou répertoire
write (w)Les autorisations d’écrire sur un fichier ou répertoire
execute (x)Les autorisations pour exécuter un fichier ou accéder à un répertoire
Les autorisations de fichiers sur Linux

Les fichiers et les répertoires peuvent appartenir au propriétaire du fichier (u), du groupe (g) ou d’autres (o).

Les appartenancesDescription
u (user)Le propriétaire du fichier ou répertoire
g (group)Le groupe
o (other)Autres
Les appartenances de fichiers sur Linux

Deux commandes sont utiles pour changer les permissions et propriétaire d’un fichier :

  • chmod pour changer les permissions d’un fichier ou répertoire
  • chown pour changer le propriété et group d’un fichier ou répertoire

Comment afficher et lire les permissions de fichiers

Pour afficher les permissions, on peut utiliser la commande ls avec l’option -l :

 ls -l
ls -l pour afficher les permissions de fichiers

Ce qui donne la structure suivante qui se lit de gauche à droite :

-rw-r--r--  1 www-data www-data 5.2K Jul 25 18:20 wp-config.php
Savoir lire les permissions de fichiers

Tout à gauche 1, nous avons les permissions de fichiers et répertoires qui vont par trois pour rwx.
Le signe – indique que la permission n’est pas présente.

  • rw- : correspond aux permissions du propriétaire soit donc ici lecture et écriture (pour rw) mais pas exécution (x est manquant). Lorsqu’il s’agit d’un répertoire, la première lettre est d pour directory.
  • r- : aux permissions du groupe, ici que lecture car r (w et x sont manquants)
  • r– : aux permissions pour autres

Cela est répété deux fois pour les permissions du groupe et autres qui suivent la même logique.

Puis ensuite 2 sont indiqués le propriétaire et le groupe, ici le propriétaire est www-data et le groupe porte le même nom.

Enfin, la dernière colonne correspond au nom du fichier 3

Savoir lire les permissions de fichiers
Dans cet exemple, on voit que le fichier de configuration est accessible par n’importe quel autre utilisateur Linux. D’un point de vue sécurité, ce n’est pas optimal car ils peuvent récupérer les informations de connexion à la base de données SQL.

Autre exemple avec le fichier suivant dont le propriétaire et le groupe est root.
Ainsi seul cet utilisateur peut écrire dans le fichier ou le modifier.

-rw-r--r-- 1 root root 612 Jul 27 10:33 index.nginx-debian.html

Lorsque l’on tente avec l’utilisateur debian, on obtient permissions denied (permissions refusé), ce qui est tout à fait logique.
Mais si on tente de modifier le fichier avec sudo, cela fonctionne puisque l’on exécute la commande en root.

Permissions denied et autorisations de fichiers

Les permissions de fichiers Linux en nombres décimaux

En plus de l’utilisation rwx, il existe une notation en nombre décimal.

Linux utilise le système binaire pour stocker les permissions dans le système de fichiers.
Ainsi, il est possible de faire correspondre un nombre décimal.
Chaque catégorie calcule le nombre symbolique en convertissant les autorisations existantes à sa forme décimale attribuant un “un” si vous avez la permission et un “zéro” si vous n’avez pas la permission.

Ainsi on obtient ceci :

PermissionsNotation décimale
r (lecture)4
w (écriture)2
x (exécution)1
Correspondance permissions en nombre décimal

Ensuite on additionne les valeur pour calculer le nombre décimal :

Permissions Notation décimale
rwx7 (4+2+1)
rw6 (4+2)
rx5 (4+1)
wx3 (2+1)
Correspondance permissions en nombre décimal

Les commandes chmod, umask utilisent ce système de notations.
Ainsi ces deux utilisations de la commande sont équivalentes :

chmod 770 fichier
chmod ug+rxw,o-rwx fichier

Comment changer les permissions sur Linux ?

On utilise la commande chmod.
Le tutoriel suivant vous guide pour modifier les autorisations en donnant plusieurs exemples.

Qu’est-ce que les permissions umask sur Linux?

Le umak définit les permissions lors de la création d’un fichier.
Cela est important, si vous ne désirez par exemple que le fichier à la création soit accessible pour le groupe notamment dans le cas d’un accès distant FTP, SSH ou NFS.

  • Pour afficher le umask en décimal :
umask
  • Pour afficher le umask en octal :
umask -S

Ici nous avons donc 0022 qui se calcule de la manière suivante pour obtenir les permissions :

  • fichier :  0666 – 0022 = 0644
  • répertoire : 0777 – 0022 = 0755
Afficher le umask courant

Si on applique le umask 0066, pour les fichiers nous aurons donc 0666 – 0066 : 0600 soit donc rxw–

Comprendre le umask

Le umask peut se configurer dans le système au niveau du Shell.
Par exemple pour bash, il peut être défini dans /etc/bashrc
Et donc on peut aussi l’appliquer au niveau d’un utilisateur dans ~/.bashrc
Enfin certaines applications (LVM, SSH, VSFTP) peut aussi avoir une configuration umask spécifique.

Que sont les suid, guid et sticky bit ?

SUID, GUID et Sticky Bit sont des concepts plus avancés d’autorisations Linux.

Le suid, guid : comment ça marche

L’attribut suid qui te note (s) est utilisé pour exécuter une commande comme propriétaire du fichier au lieu de l’utilisateur qui a émis la commande en premier lieu.

Comprendre le suid sur Linux

Sur Linux, les mots de passe sont stockés chiffrés dans le fichier /etc/shadow.
J’en parle dans cet article : Comment cracker le mot de passe d’un utilisateur Linux.

Si on jéte un coup d’oeil aux permissions :

-rw-r----- 1 root shadow 1.1K Jul 27 10:40 /etc/shadow
-rwsr-xr-x 1 root root 63736 Jul 27  2018 /usr/bin/passwd
  • seul root peut écrire dans le fichier /etc/shadow
  • le binaire passwd a des permissions suid indiqué par le s à la place de x
Comprendre le suid sur Linux

Or la commande passwd peut être exécuté par n’importe quel utilisateur pour modifier son mot de passe.
Alors comment le fichier /etc/shadow se met à jour puisque seul root peut écrire dedans ?
Grâce au suid sur le binaire passwd.
En réalité, ce dernier s’exécute en root même si appelé par un utilisateur Linux :

Comprendre le suid sur Linux

Voila tout l’intérêt du suid.
On peut attribuer ou supprimer le suid avec chmod de la manière suivante :

chmod u+s fichier
chmod u-s fichier

Le guid fonctionne dans la même logique pour le groupe et se note (S).

Le sticky bit

Enfin le sticky bit qui se note (t) est la dernière forme de permissions de fichiers.
Il permet d’interdire la suppression ou déplacement de fichiers dans un répertoire créé par un autre utilisateur.
L’utilisateur ne pourra supprimer que ses propres fichiers.

Cet attribut est utile par exemple dans un dossier partagé NFS, vous désirez que les utilisateurs puissent créer des fichiers dans un répertoire mais ne puissent pas les supprimer.

Enfin sur Linux, le dossier /tmp possède cet attribut t pour éviter les suppressions de fichiers entre applications qui utilisent un utilisateur différent ou entre utilisateurs locaux.

La liste complète des permissions de fichiers

PermissionDescription
read (r)Les autorisations de lecture d’un fichier ou répertoire
write (w)Les autorisations d’écrire sur un fichier ou répertoire
execute (x)Les autorisations pour exécuter un fichier ou accéder à un répertoire
suid (s) Le fichier ou binaire possède le bit suid
guid (S)Le fichier ou binaire possède le bit guid
sticky bit (t)Le fichier ou binaire possède sticky bit
La liste complète des permissions de fichiers