Configurez des listes de contrôle d'accès POSIX (ACL) afin de définir des autorisations granulaires sur les fichiers et les répertoires au sein d'un système de fichiers NFSv3.
Prérequis
Un système de fichiers NFSv3 est monté. Pour plus d'informations, consultez la rubrique Monter un système de fichiers NFS.
-
La fonctionnalité NFS ACL est activée pour le système de fichiers. Si cette fonctionnalité n'est pas activée, vous ne pouvez pas utiliser la commande
setfaclpour configurer les listes de contrôle d'accès POSIX.Connectez-vous à la console NAS, accédez à la page des détails du système de fichiers, cliquez sur l'onglet Access Control et activez l'interrupteur NFS ACL ; ou bien appelez l'opération EnableNfsAcl.
Commandes
Le tableau suivant présente les commandes POSIX ACL courantes.
|
Commande |
Description |
|
|
getfacl <filename> |
Affiche la liste de contrôle d'accès d'un fichier. |
|
|
setfacl -m g::w <filename> |
Accorde des droits en écriture au groupe GROUP. |
|
|
setfacl -m u:player:w <filename> |
Accorde des droits en écriture à l'utilisateur player. |
|
|
setfacl -m g:players:rwx <filename> |
Accorde les droits 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 la liste de contrôle d'accès 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 droits de lecture et d'écriture sur tous les fichiers et sous-répertoires de dir au groupe players. |
|
|
setfacl -d -m g:players:rw dir1 |
Définit les droits par défaut de lecture et d'écriture pour les nouveaux fichiers et sous-répertoires créés dans dir1 au profit du groupe players. |
Configurer les listes de contrôle d'accès POSIX
Pour configurer des listes de contrôle d'accès POSIX afin de gérer 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 affecte l'utilisateur player au groupe players et l'utilisateur 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 listes de contrôle d'accès POSIX pour contrôler l'accès aux fichiers et aux répertoires.
Dans cet exemple, nous partons du principe que vous avez créé un répertoire nommé dir0. Pour tous les fichiers situés dans le répertoire dir0, vous accordez des droits en lecture seule au groupe players, des droits de lecture, d'écriture et d'exécution au groupe adminis, et aucun droit aux autres utilisateurs.
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 droits 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 des droits de lecture.
-
Vérifiez que l'utilisateur player ne peut pas créer le fichier file.
Par exemple, tentez de créer un fichier file dans le répertoire dir0.
-
Exécutez la commande suivante :
sudo su player -c 'touch dir0/file' -
Si un message similaire à celui ci-dessous s'affiche, cela signifie que l'utilisateur player n'est pas autorisé à créer le fichier file.
touch: cannot touch ‘dir0/file’: Permission denied
-
-
Vérifiez que l'utilisateur player peut lire le fichier dir0/file.
-
Exécutez la commande suivante :
sudo su player -c 'cat dir0/file' -
Si les informations suivantes s'affichent, l'utilisateur player est autorisé à consulter le contenu du fichier dir0/file.
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' -
Sortie attendue si les droits d'écriture sont refusés :
bash: dir0/file: Permission denied
Exécutez
sudo su player -c 'getfacl dir0/file'pour afficher les autorisations de l'utilisateur player sur le fichier 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 contenus dans dir0.
-
Exécutez la commande suivante :
sudo su anonym -c 'ls dir0' -
Sortie attendue si l'accès est refusé :
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' -
Sortie attendue si les droits de lecture sont refusés :
cat: dir0/file: Permission denied
-
-
Vérifiez que l'utilisateur anonym ne peut pas accéder à la liste de contrôle d'accès du fichier.
-
Exécutez la commande suivante :
sudo su anonym -c 'getfacl dir0/file' -
Sortie attendue si l'accès est refusé :
getfacl: dir0/file: Permission denied
-
-
-
Révoquer les autorisations d'un utilisateur
L'exemple suivant montre comment révoquer les autorisations d'un utilisateur en le réaffectant à un autre groupe.
Bonnes pratiques : attribuez les autorisations à des groupes plutôt qu'à des utilisateurs individuels. Pour révoquer l'accès, déplacez l'utilisateur vers un autre groupe. Les étapes suivantes permettent de déplacer l'utilisateur admini du groupe adminis vers le groupe adminis2.
-
Créez le groupe adminis2 :
sudo groupadd adminis2 -
Déplacez l'utilisateur admini du groupe adminis vers le groupe adminis2 :
sudo usermod -g adminis2 admini -
Vérifiez l'appartenance de l'utilisateur aux groupes.
-
Exécutez la commande suivante :
id admini -
Les informations suivantes s'affichent :
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' -
Sortie attendue 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 le fichier dir0/file.
-
Exécutez la commande suivante :
sudo su admini -c 'cat dir0/file' -
Sortie attendue si l'utilisateur admini ne peut pas lire le fichier dir0/file :
cat: dir0/file: Permission denied
-
-
Vérifiez que l'utilisateur admini ne peut pas accéder au fichier dir0/file.
-
Exécutez la commande suivante :
sudo su admini -c 'getfacl dir0/file' -
Sortie attendue si l'utilisateur admini ne peut pas accéder au fichier dir0/file :
getfacl: dir0/file: Permission denied
-
-