Menu Fermer

Les permissions de fichiers sur Linux : tout comprendre

Si vous êtes nouveau dans l’administration Linux, 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 étudier les droits de fichiers dans Linux, comme cela fonctionne, quelle commande pour changer les permissions de fichiers.
En fin d’article, j’évoquerai aussi les permissions de fichiers spéciales de Linux.

Les permissions de fichiers sur 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 ?

Pour modifier les droits d’un fichier, on utilise la commande chmod.
On peut utiliser les permissions décimales ou avec les lettres.
La syntaxe est la suivante :

chmod <permissions> <fichier/répertoire>

Par exemple :

chmod g+rw /home/mak/monsuperepertoire

ou encore :

chmod 0644 /home/mak/monsuperrepertoire

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.

Setuid et setgid permettent aux utilisateurs d’exécuter un exécutable avec les autorisations de l’utilisateur (setuid) ou du groupe (setgid) propriétaire du fichier. Par exemple, si vous souhaitez qu’un utilisateur soit en mesure d’effectuer une tâche spécifique nécessitant les privilèges de root/superuser, mais que vous ne souhaitez pas lui donner l’accès sudo ou root.

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

Les ACL (Access Control Lists) et les permissions étendues

ACL (Access Control Lists) est un mécanisme permissions de fichiers disponible dans Linux.
Vous pouvez gérer des autorisations de fichiers étendues grâce aux commandes getfacl et setfacl.

Dans ce tutoriel, je vous explique tout ce qu’il faut savoir et comment utiliser les ACL dans Linux.

Les ACL (Access Control Lists) dans Linux