14.12. Listes de contrôle d'accès au système de fichiers

Contribution de Tom Rhodes.

Avec les améliorations des systèmes de fichiers comme les “snapshots”, FreeBSD 5.0 et versions suivantes offrent une nouveauté en matière de sécurité: les listes de contrôle d'accès au système de fichiers (ACLs - “Access Control Lists”).

Les listes de contrôle d'accès étendent le système de permission standard d'UNIX d'une manière hautement compatible (POSIX.1e). Cette caractéristique permet à un administrateur d'utiliser avantageusement un modèle de sécurité plus sophistiqué.

Pour activer le support ACL pour les systèmes de fichiers UFS, ce qui suit:

options UFS_ACL

doit être compilé dans le noyau. Si cette option n'a pas été ajoutée, un avertissement sera affiché lors d'une tentative de montage d'un système de fichiers supportant les ACLs. Cette option est présente dans le noyau GENERIC. Les ACLs reposent sur des attributs étendus rajoutés au système de fichiers. Les attributs étendus sont nativement supportés par la prochaine génération du système de fichiers UNIX, UFS2.

Note : Un supplément de travail d'administration est requis pour configurer les attributs étendus sous UFS1 par rapport à UFS2. Les performances des attributs étendus sous UFS2 sont sensiblement meilleures également. Il en résulte donc, que l'UFS2 est généralement recommandé par rapport à l'UFS1 pour une utilisation des listes de contrôle d'accès.

Les ACLs sont activés grâce l'option utilisée lors du montage, acls, qui peut être ajouté dans le fichier /etc/fstab. Cette option de montage peut être également automatiquement fixée d'une manière définitive en utilisant tunefs(8) pour modifier l'indicateur ACL du “superblock” dans l'entête du système de fichiers. Il est en général préférable d'utiliser cet indicateur pour plusieurs raisons:

Note : Nous pourrions modifier le comportement des ACLs pour permettre l'activation de l'indicateur sans le besoin d'un nouveau mount(8) complet, mais nous considérons qu'il est préférable d'éviter un montage accidentel sans les ACLs activées, parce que vous pouvez vous “tirer facilement dans les pieds” si vous activez les ACLs, puis les désactivez, et ensuite les réactivez à nouveau sans réinitialiser les attributs étendus. En général, une fois que vous avez activé les ACLs sur un système de fichiers, elles ne devraient pas être désactivées étant donné que les protections de fichiers résultantes peuvent ne pas être compatible avec celles prévues par les utilisateurs du système, et réactiver les ACLs peut réaffecter les précédentes ACLs aux fichiers qui ont depuis eût leur permissions modifiées, avec pour résultat un comportement imprévisible.

Les systèmes de fichiers avec les ACLs activées présenteront un signe + au niveau de leurs permissions quand elles seront affichées. Par exemple:

drwx------  2 robert  robert  512 Dec 27 11:54 private
drwxrwx---+ 2 robert  robert  512 Dec 23 10:57 directory1
drwxrwx---+ 2 robert  robert  512 Dec 22 10:20 directory2
drwxrwx---+ 2 robert  robert  512 Dec 27 11:57 directory3
drwxr-xr-x  2 robert  robert  512 Nov 10 11:54 public_html

Ici nous voyons que les répertoires directory1, directory2, et directory3 utilisent les ACLs. Ce n'est pas le cas du répertoire public_html.

14.12.1. Utilisation des ACLs

Les ACLs peuvent être affichées par l'utilitaire getfacl(1). Par exemple pour voir les ACLs sur le fichier test, on utilisera la commande:

% getfacl test
	#file:test
	#owner:1001
	#group:1001
	user::rw-
	group::r--
	other::r--

Pour modifier le paramétrage des ACLs sur ce fichier, invoquez la commande setfacl(1). Intéressons-nous à la ligne:

% setfacl -k test

L'indicateur -k supprimera toutes les ACLs actuellement définies pour un fichier ou un système de fichiers. Une méthode plus adaptée est d'utiliser l'option -b étant donné qu'elle conserve les champs de base nécessaires au bon fonctionnement des ACLs.

% setfacl -m u:trhodes:rwx,group:web:r--,o::--- test

Dans la commande ci-dessus, l'option -m a été utilisée pour modifier les entrées ACL par défaut. Comme il n'y avait pas d'entrées pré-définies, puisqu'elles ont été supprimées par la commande précédente, cela restaurera les options par défaut et prendra en compte les options précisées. Prenez soin de noter que si vous ajoutez un utilisateur ou un groupe qui n'existe pas sur le système, une erreur “Invalid argument” sera affichée sur la sortie standard.

Ce document, ainsi que d'autres peut être téléchargé sur ftp.FreeBSD.org/pub/FreeBSD/doc/.

Pour toutes questions à propos de FreeBSD, lisez la documentation avant de contacter <questions@FreeBSD.org>.
Pour les questions sur cette documentation, contactez <doc@FreeBSD.org>.