Chapitre 5. Listes de contrôle d'accès sous Linux

Table des matières

5.1. Autorisations de fichier classiques
5.2. Avantages des ACL
5.3. Définitions
5.4. Gestion des ACL
5.5. Prise en charge des ACL dans les applications
5.6. Pour plus d'informations

Résumé

Les ACL (listes de contrôle d'accès) POSIX peuvent être utilisées comme une extension du concept traditionnel d'autorisation pour les objets Système de fichiers. Les ACL permettent de définir des autorisations plus facilement que le concept d'autorisation traditionnel.

L'expression ACL POSIX laisse entendre qu'il s'agit d'une norme POSIX (interface de système d'exploitation portable) à proprement parler. Les normes en projet POSIX 1003.1e et POSIX 1003.2c ont été retirées pour plusieurs raisons. Néanmoins, les ACL telles qu'on les trouve sur de nombreux systèmes appartenant à la famille UNIX sont basées sur ces projets et l'implémentation des ACL de système de fichiers décrites dans ce chapitre suit également ces deux normes. Vous pouvez les consulter à l'adresse http://wt.xpilot.org/publications/posix.1e/.


5.1. Autorisations de fichier classiques

Les principes de base des autorisations d'accès classiques aux fichiers Linux sont décrits à la Section 3.2, « Utilisateurs et autorisations d'accès » (↑Démarrage). D'autres fonctions plus avancées sont les bits setuid, setgid et sticky.

5.1.1. Le bit setuid

Dans certaines situations, les autorisations d'accès peuvent être trop restrictives. Linux possède donc des paramètres supplémentaires permettant de modifier provisoirement l'identité actuelle de l'utilisateur et du groupe pour une action spécifique. Par exemple, le programme passwd requiert normalement des autorisations de niveau racine pour accéder à /etc/passwd. Ce fichier contient des informations importantes (par exemple, les répertoires privés des utilisateurs, ainsi que les ID des utilisateurs et des groupes). Un utilisateur ordinaire n'est donc pas en mesure de changer le fichier passwd, car cela serait trop dangereux d'accorder un accès direct à ce fichier à l'ensemble des utilisateurs. Le mécanisme setuid offre une solution à ce problème. setuid (pour « set user ID ») est un attribut de fichier spécial qui indique au système d'exécuter certains programmes sous un ID utilisateur spécifique. Imaginons la commande passwd :

-rwsr-xr-x  1 root shadow 80036 2004-10-02 11:08 /usr/bin/passwd

Le s indique que le bit setuid est défini pour l'autorisation de l'utilisateur. Grâce au bit setuid, tous les utilisateurs qui lancent la commande passwd l'exécutent en tant que root.

5.1.2. Le bit setgid

Le bit setuid s'applique aux utilisateurs. Toutefois, il existe également une propriété équivalente pour les groupes : le bit setgid. Un programme pour lequel cet attribut a été défini est exécuté sous l'ID groupe sous lequel il a été enregistré, quel que soit l'utilisateur qui le lance. Par conséquent, dans un répertoire comprenant le bit setgid, tous les fichiers et sous-répertoires nouveaux sont assignés au groupe auquel appartient le répertoire. Prenez pour exemple le répertoire suivant :

drwxrws--- 2 tux archive 48 Nov 19 17:12  backup

Le s indique que le bit setuid est défini pour l'autorisation du groupe. Le propriétaire du répertoire et les membres du groupe archive peuvent accéder à ce répertoire. Les utilisateurs qui ne sont pas membres de ce groupe sont « assignés » à leur groupe respectif. L'ID de groupe effectif de tous les fichiers écrits sera archive. Par exemple, un programme de sauvegarde qui est exécuté avec l'ID de groupe archive peut accéder à ce répertoire, même s'il n'est pas doté des privilèges de niveau racine.

5.1.3. Le bit autocollant

Il existe également le bit autocollant. Son utilisation est différente selon qu'il appartient à un programme exécutable ou à un répertoire. S'il appartient à un programme, un fichier marqué de cette façon est chargé dans la mémoire RAM pour éviter d'avoir à l'extraire du disque dur à chacune de ces utilisations. Cet attribut est rarement utilisé car les disques durs modernes sont suffisamment rapides. Si ce bit est assigné à un répertoire, il empêche les utilisateurs de supprimer leurs fichiers respectifs. Des exemples typiques sont les répertoires /tmp et /var/tmp :

drwxrwxrwt 2 root root 1160 2002-11-19 17:15 /tmp