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.
Table des matières
- 1 Comment fonctionnement les permissions de fichiers Linux
- 2 Les permissions de fichiers Linux en nombres décimaux
- 3 Comment changer les permissions sur Linux ?
- 4 Qu’est-ce que les permissions umask sur Linux?
- 5 Que sont les suid, guid et sticky bit ?
- 6 La liste complète des permissions de fichiers
- 7 Les ACL (Access Control Lists) et les permissions étendues
- 8 Liens
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.
Sur Linux, il existe trois principales autorisations de fichiers qui permettent de déterminer les accès ou les modifications de fichiers.
Permission | Description |
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 fichiers et les répertoires peuvent appartenir au propriétaire du fichier (u), du groupe (g) ou d’autres (o).
Les appartenances | Description |
u (user) | Le propriétaire du fichier ou répertoire |
g (group) | Le groupe |
o (other) | Autres |
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
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
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
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.
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 :
Permissions | Notation décimale |
r (lecture) | 4 |
w (écriture) | 2 |
x (exécution) | 1 |
Ensuite on additionne les valeur pour calculer le nombre décimal :
Permissions | Notation décimale |
rwx | 7 (4+2+1) |
rw | 6 (4+2) |
rx | 5 (4+1) |
wx | 3 (2+1) |
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
Si on applique le umask 0066, pour les fichiers nous aurons donc 0666 – 0066 : 0600 soit donc rxw–
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
Permission | Description |
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 |
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.
Liens