14.12. Listes de contrôle d'accès au système de fichiers
Précédent | Chapitre 14. Sécurité | Suivant

## 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:

- L'option de montage pour les ACLs ne peut être modifiée par un simple remontage (mount(8) `-u`), mais uniquement par un umount(8) complet et suivi d'un mount(8). Cela signifie que les ACLs ne peuvent être activées sur le système de fichiers racine après le démarrage. Cela signifie également que vous ne pouvez pas modifier la disposition d'un système de fichier une fois que c'est activé.

- Positionner l'indicateur du “superblock” fera que le système de fichiers sera toujours monté avec les ACLs activées même s'il n'y a pas d'entrée dans le fichier `fstab`, ou s'il y a une réorganisation des périphériques. Cela prévient le montage accidentel du système de fichiers sans les ACLs activées, ce qui peut provoquer une activation impropre des ACLs et par conséquent des problèmes de sécurité.

### 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.

Précédent | Niveau supérieur | Suivant
14.11. OpenSSH | Sommaire | 14.13. Surveillance des problèmes de sécurité relatifs aux programmes tierce-partie

Ce document, ainsi que d'autres peut être téléchargé sur ftp://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>.