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.
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é.
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
.
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://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>.