
RHEL 10 - Permissions et ACLs
Les permissions standards
Concepts
- Catégories d'utilisateurs
- Utilisateur propriétaire →
u - Groupe propriétaire →
g - Tout autre →
o
- Niveau de permission
- Lecture →
r→4 - Ecriture →
w→2 - Exécution →
x→1
- Type de fichier
- Fichier standard →
- - Dossier →
d - Lien symbolique →
l - Périphérique d'entrée →
c - Périphérique de type bloc →
b - Fichier pipe (fifo) →
p - Fichier socket →
s
- Représentation dans le terminal
| Type de fichier | Permissions u |
Permissions g |
Permissions o |
Valeur octale | Exemple |
|---|---|---|---|---|---|
- |
rw- |
r-- |
r-- |
644 | /etc/hosts |
d |
rwx |
r-x |
r-x |
755 | /var/www |
l |
rwx |
rwx |
rwx |
777 | /dev/cdrom |
Pratique
-
Afficher les permissions appliquées sur un fichier
ls -l fichier_lab.txt-rw-r--r--. 1 root root 0 30 oct. 09:15 fichier_lab.txt -
Modifier les permissions appliquées sur un fichier
chmod 664 fichier_lab.txt ls -l fichier_lab.txt-rw-rw-r--. 1 root root 0 30 oct. 09:15 fichier_lab.txtOn a ajouté les droits en écriture pour le groupe propriétairechmod o-r fichier_lab.txt ls -l fichier_lab.txt-rw-rw----. 1 root root 0 30 oct. 09:15 fichier_lab.txtOn a retiré les droits en lecture pour tout autre utilisateur
chmod +x script_lab.sh
ls -l script_lab.sh
-rwxr-xr-x. 1 root root 0 30 oct. 09:19 script_lab.sh
On a ajouté les droits en exécution pour tous les utilisateurs
- Modifier l'utilisateur propriétaire ou le groupe propriétaire
chown labuser1: fichier_lab.txt ls -l fichier_lab.txt-rw-rw----. 1 labuser1 labuser1 0 30 oct. 09:15 fichier_lab.txtOn a défini l'utilisateur labuser1 comme propriétaire du fichier
chown :postgres fichier_lab.txt
ls -l fichier_lab.txt
Ou
chgrp postgres fichier_lab.txt
-rw-rw----. 1 labuser1 postgres 0 30 oct. 09:15 fichier_lab.txt
On a défini le groupe postgres comme propriétaire du fichier
chown root:root fichier_lab.txt
ls -l fichier_lab.txt
-rw-rw----. 1 root root 0 30 oct. 09:15 fichier_lab.txt
On a défini l'utilisateur et le groupe root comme propriétaire
Les permissions spéciales
Concepts
- SUID → set user ID →
4000→ Le fichier s'exécute avec les droits du propriétaire du fichier - SGID → set group ID →
2000→ Pour les dossiers: les nouveaux fichiers héritent des permissions du groupe parent - Sticky Bit →
1000→ Pour les dossier: restriction sur la suppression des fichiers
Pratique
- Obtenir des informations sur les permissions spéciales
ls -l /usr/bin/sudo
---s--x--x. 1 root root 297752 9 juil. 02:00 /usr/bin/sudo
Le fichier /usr/bin/sudo a une permission fixée à 4111 pour s'exécuter avec les droits de l'utilisateur propriétaire
ls -ld /run/log/journal/
drwxr-sr-x+ 3 root systemd-journal 60 30 oct. 08:07 /run/log/journal/
Le dossier /run/log/journal/ a une permission fixée à 2755 et les fichiers créés dans ce dossier hériteront de ses permissions
ls -ld /tmp/
drwxrwxrwt. 11 root root 4096 30 oct. 09:38 /tmp/
Le dossier /tmp/ a une permission fixée à 1777 qui détermine l'impossibilité de supprimer des fichiers dont on est pas le propriétaire
- Modifier les permissions spéciales
chmod 4755 script_lab.sh
ls -l script_lab.sh
-rwsr-xr-x. 1 root root 0 30 oct. 09:19 script_lab.sh
_Le fichier scriptlab.sh sera exécuté avec les droits root pour tous les utilisateurs
chmod g+s dossier_lab/
ls -ld dossier_lab/
drwxr-sr-x. 2 root root 6 30 oct. 13:48 dossier_lab/
_Le dossier dossierlab/ est maintenant défini avec un SGID
chmod 1777 sticky_dir/
ls -ld sticky_dir/
drwxrwxrwt. 2 root root 6 30 oct. 13:54 sticky_dir/
_Le dossier stickydir/ est maintenant défini avec un StickyBit
Si le marqueur de permission spéciale apparaît en majuscule: cela signifie une incohérence avec les permissions en exécution
Umask
Concept
User File Creation MASK - Le masque du mode de création de fichiers par l'utilisateur Permet de définir des droits d'accès par défaut pour l'ensemble des fichiers et des dossiers créés
- Ce masque se calcule par soustraction
Permissions fichier standard → 666 moins umask 022 → 644
Permissions dossier standard → 777 moins umask 022 → 755
umask
0022 → il s'agit du umask par défaut pour tous les utilisateurs
Pratique
-
Modifier son umask temporairement
su - labuser1 umask 077 touch testumask.txt ls -l testumask.txt-rw-------. 1 labuser1 labuser1 0 30 oct. 14:44 testumask.txtL'utilisateur labuser1 a modifié son umask jusqu'à sa prochaine déconnexion -
Modifier son umask de manière persistente
su - labuser1
vim ~/.bashrc
Ajouter une ligne umask avec la valeur choisie
umask 077 par exemple
touch testumask2.txt
ls -l testumask2.txt
-rw-------. 1 labuser1 labuser1 0 30 oct. 14:52 testumask2.txt
L'utilisateur labuser1 a modifié son umask de manière persistente
-
Modifier l'umask pour tous les nouveaux utilisateurs créés
vim /etc/login.defsModifier la ligne
UMASK 022par la définition voulueUMASK 027par exemple -
Vérification
useradd umaskuser su - umaskuser touch fichier_test.txt ls -l fichier_test.txt-rw-r-----. 1 umaskuser umaskuser 0 30 oct. 15:07 fichier_test.txtLe nouvel utilisateur umaskuser a un umask défini à027
Les ACLs
Les ACL nous permettent d'appliquer un ensemble d'autorisations plus spécifique à un fichier ou un dossier sans (nécessairement) modifier le propriétaire et les autorisations de base
2 commandes essentielles:
getfacl→ pour afficher les ACLssetfacl→ pour définir les ACLs
Créer un contexte pour le lab
- Un dossier /root/labacl/ avec les permissions
770 - Un fichier _/root/labacl/fichieracl1 avec les permissions
700 - Un fichier _/root/labacl/fichieracl2 avec les permissions
700 - Un utilisateur labuser1 membre du groupe groupallow
- Un utilisateur labuser2 membre du groupe groupdeny
ls -la /root/labacl/total 4 drwxrwx---. 2 root root 46 30 oct. 16:13 . dr-xr-x---. 11 root root 4096 30 oct. 15:54 .. -rwx------. 1 root root 0 30 oct. 15:58 fichier_acl1 -rwx------. 1 root root 0 30 oct. 16:13 fichier_acl2
Définition des ACLs à appliquer dans le lab
- Permissions pour les groupes
- Donner les permissions en lecture, écriture et exécution sur le dossier /root/labacl/ au groupe groupallow
- Donner les permissions en lecture et exécution de manière récursive sur le dossier /root/labacl/ au groupe groupdeny
- Permissions pour les utilisateurs
- Donner les permissions en lecture, écriture et exécution à l'utilisateur labuser1 sur le fichier _fichieracl1
- Donner les permissions en lecture uniquement à l'utilisateur labuser1 sur le fichier _fichieracl2
- Vérifications
- Afficher les ACLs en place pour le dossier /root/labacl/
- Afficher les ACLs en place pour les fichiers _fichieracl1 et _fichieracl2
Mise en pratique
-
Permissions pour les groupes
setfacl -m g:groupallow:rwx /root/labacl/ setfacl -R -m g:groupdeny:rx /root/labacl/ -
Permissions pour les utilisateurs
setfacl -m u:labuser1:rwx /root/labacl/fichier_acl1 setfacl -m u:labuser1:r /root/labacl/fichier_acl2 -
Vérifications
getfacl /root/labacl/getfacl : suppression du premier « / » des noms de chemins absolus # file: root/labacl/ # owner: root # group: root user::rwx group::rwx group:groupallow:rwx group:groupdeny:r-x mask::rwx other::---getfacl /root/labacl/fichier_acl1 /root/labacl/fichier_acl2getfacl : suppression du premier « / » des noms de chemins absolus # file: root/labacl/fichier_acl1 # owner: root # group: root user::rwx user:labuser1:rwx group::--- group:groupdeny:r-x mask::rwx other::--- # file: root/labacl/fichier_acl2 # owner: root # group: root user::rwx user:labuser1:r-- group::--- group:groupdeny:r-x mask::r-x other::---
Supprimer les ACLs en place
-
Pour supprimer les ACLs d'un utilisateur sur un fichier
setfacl -x u:labuser1 /root/labacl/fichier_acl2 -
Pour supprimer les ACLs d'un groupe sur un dossier
setfacl -x g:groupdeny /root/labacl/ -
Pour supprimer toutes les ACLs définies sur un fichier
setfacl -b /root/labacl/fichier_acl1 -
Vérification sur un dossier de manière récursive
getfacl -R /root/labacl/getfacl : suppression du premier « / » des noms de chemins absolus # file: root/labacl/ # owner: root # group: root user::rwx group::rwx group:groupallow:rwx mask::rwx other::--- # file: root/labacl//fichier_acl1 # owner: root # group: root user::rwx group::--- other::--- # file: root/labacl//fichier_acl2 # owner: root # group: root user::rwx group::--- group:groupdeny:r-x mask::r-x other::---
Sources principales:
- Doc Red Hat - Permissions
- Doc Red Hat - ACLs
man getfaclman setfacl
