Configurez des listes de contrôle d'accès (ACL) POSIX afin de définir des autorisations granulaires sur les fichiers et les répertoires d'un système de fichiers NFSv3.
Prérequis
Le système de fichiers NFSv3 est monté. Pour plus d'informations, consultez la rubrique Monter un système de fichiers NFS.
Commandes
Le tableau suivant présente les commandes POSIX ACL courantes.
|
Commande |
Description |
|
|
getfacl <filename> |
Affiche l'ACL d'un fichier. |
|
|
setfacl -m g::w <filename> |
Accorde l'autorisation d'écriture ( |
|
|
setfacl -m u:player:w <filename> |
Accorde l'autorisation d'écriture à l'utilisateur player. |
|
|
setfacl -m g:players:rwx <filename> |
Accorde les autorisations de lecture, d'écriture et d'exécution au groupe players. |
|
|
setfacl -x g:players <filename> |
Révoque les autorisations du groupe players. |
|
|
getfacl file1 |
setfacl --set-file=- file2 |
Copie l'ACL de file1 vers file2. |
|
setfacl -b file1 |
Supprime toutes les ACE étendues de file1. Les ACE de base pour le propriétaire, le groupe et les autres utilisateurs sont conservées. |
|
|
setfacl -k file1 |
Supprime toutes les ACE par défaut de file1. |
|
|
setfacl -R -m g:players:rw dir |
Accorde les autorisations de lecture et d'écriture sur tous les fichiers et sous-répertoires contenus dans dir au groupe players. |
|
|
setfacl -d -m g:players:rw dir1 |
Accorde les autorisations par défaut de lecture et d'écriture sur les nouveaux fichiers et sous-répertoires créés dans dir1 au groupe players. |
Configurer les ACL POSIX
Pour configurer les ACL POSIX afin de contrôler l'accès :
-
Créez des utilisateurs et des groupes.
Cet exemple crée trois utilisateurs (player, admini, anonym) et deux groupes (players, adminis), puis assigne player au groupe players et admini au groupe adminis.
sudo useradd player sudo groupadd players sudo usermod -g players player sudo useradd admini sudo groupadd adminis sudo usermod -g adminis admini sudo useradd anonym -
Configurez les ACL POSIX pour contrôler l'accès aux fichiers et aux répertoires.
Les commandes suivantes créent un répertoire
dir0et définissent ses ACL :Le groupe
playersobtient les autorisations de lecture et d'exécution (r-x).Le groupe
adminisobtient les autorisations de lecture, d'écriture et d'exécution (rwx).L'utilisateur propriétaire et les « autres » n'ont aucune autorisation (
---).
sudo umask 777 sudo mkdir dir0 sudo setfacl -m g:players:r-x dir0 sudo setfacl -m g:adminis:rwx dir0 sudo setfacl -m u::--- dir0 sudo setfacl -m g::--x dir0 sudo setfacl -m o::--- dir0 sudo setfacl -d -m g:players:r-x dir0 sudo setfacl -d -m g:adminis:rwx dir0 sudo setfacl -d -m u::--- dir0 sudo setfacl -d -m g::--x dir0 sudo setfacl -d -m o::--- dir0Exécutez
sudo getfacl dir0pour vérifier la configuration.# file: dir0 # owner: root # group: root user::--- group::--x group:players:r-x group:adminis:rwx mask::rwx other::--- default:user::--- default:group::--x default:group:players:r-x default:group:adminis:rwx default:mask::rwx default:other::--- -
Vérifiez les autorisations.
-
Vérifiez que l'utilisateur admini dispose des autorisations de lecture et d'écriture :
sudo su admini -c 'touch dir0/file'sudo su admini -c 'echo 123 > dir0/file' -
Vérifiez que l'utilisateur player ne dispose que de l'autorisation de lecture.
-
Vérifiez que l'utilisateur player ne peut pas créer le fichier file.
Tentez de créer un fichier nommé
filedansdir0en tant qu'utilisateurplayer.-
Exécutez la commande suivante :
sudo su player -c 'touch dir0/file' -
Résultat attendu si l'autorisation est refusée :
touch: cannot touch 'dir0/file': Permission denied
-
-
Vérifiez que l'utilisateur player peut lire dir0/file.
-
Exécutez la commande suivante :
sudo su player -c 'cat dir0/file' -
Résultat attendu si l'autorisation de lecture est accordée :
123
-
-
Vérifiez que l'utilisateur player ne peut pas écrire dans le fichier.
-
Exécutez la commande suivante :
sudo su player -c 'echo 456 >> dir0/file' -
Résultat attendu si l'autorisation d'écriture est refusée :
bash: dir0/file: Permission denied
Exécutez
sudo su player -c 'getfacl dir0/file'pour consulter les autorisations de l'utilisateur player sur dir0/file.# file: dir0/file # owner: admini # group: adminis user::--- group::--- group:players:r-x group:adminis:rwx mask::rwx other::--- -
-
-
Vérifiez que l'utilisateur anonym ne dispose d'aucune autorisation sur dir0.
-
Vérifiez que l'utilisateur anonym ne peut pas lister les fichiers dans dir0.
-
Exécutez la commande suivante :
sudo su anonym -c 'ls dir0' -
Résultat attendu si l'autorisation est refusée :
ls: cannot open directory dir0: Permission denied
-
-
Vérifiez que l'utilisateur anonym ne peut pas lire le fichier.
-
Exécutez la commande suivante :
sudo su anonym -c 'cat dir0/file' -
Résultat attendu si l'autorisation de lecture est refusée :
cat: dir0/file: Permission denied
-
-
Vérifiez que l'utilisateur anonym ne peut pas accéder à l'ACL du fichier.
-
Exécutez la commande suivante :
sudo su anonym -c 'getfacl dir0/file' -
Résultat attendu si l'accès est refusé :
getfacl: dir0/file: Permission denied
-
-
-
Révoquer les autorisations d'un utilisateur
L'exemple suivant révoque les autorisations d'un utilisateur en le réassignant à un autre groupe.
Bonne pratique : accordez les autorisations aux groupes plutôt qu'aux utilisateurs individuels. Pour révoquer l'accès, déplacez l'utilisateur vers un autre groupe. Les étapes suivantes déplacent l'utilisateur admini du groupe adminis vers adminis2.
-
Créez le groupe adminis2 :
sudo groupadd adminis2 -
Déplacez l'utilisateur admini du groupe adminis vers adminis2 :
sudo usermod -g adminis2 admini -
Vérifiez l'appartenance de l'utilisateur au groupe.
-
Exécutez la commande suivante :
id admini -
Le système renvoie les informations suivantes :
uid=1057(admini) gid=1057(admini) groups=1061(adminis2)
-
-
Vérifiez les autorisations de l'utilisateur admini.
-
Vérifiez que l'utilisateur admini ne peut pas accéder à dir0.
-
Exécutez la commande suivante :
sudo su admini -c 'ls dir0' -
Résultat attendu si l'utilisateur admini ne peut pas accéder à dir0 :
ls: cannot open directory dir0: Permission denied
-
-
Vérifiez que l'utilisateur admini ne peut pas lire dir0/file.
-
Exécutez la commande suivante :
sudo su admini -c 'cat dir0/file' -
Résultat attendu si l'utilisateur admini ne peut pas lire dir0/file :
cat: dir0/file: Permission denied
-
-
Vérifiez que l'utilisateur admini ne peut pas accéder à dir0/file.
-
Exécutez la commande suivante :
sudo su admini -c 'getfacl dir0/file' -
Résultat attendu si l'utilisateur admini ne peut pas accéder à dir0/file :
getfacl: dir0/file: Permission denied
-
-