Vous êtes sur la page 1sur 6

Les droits standards

Pour voir les droits sur un fichier ou un répertoire, il suffit d'exécuter la commande ls -l :

#ls -l

drwxr-r--- 2 intgrrci intgrrci 96 Dec 11 15:08 V29.1.0


drwxr-xr-x 2 root root 96 Jan 11 2006 lost+found

Remarquons le premier groupe de lettres, de la forme suivante : drwxrwxrwx


Il faut décomposer ce groupe en 4, un groupe de 1 lettre, et 3 goupes de trois lettres.

Le première lettre indique le type de l'objet :


- - : fichier ordinaire
- d : répertoire (directory)
- p : file nommée (named pipe)
- l : lien symbolique
- s : socket
- c : fichier spécial caractère
- b : fichier spécial bloc
- n : fichier spécial réseau

Le premier groupe de trois lettres correspond au propriétaire (u: User), le second au groupe (g:
Group), le troisième à tous les autres (o: Others).

Le premier caractère du groupe correspond aux droits de lecture (r: Read), le second d'écriture (w:
Write), le troisième aux droits d'exécution (x: eXecute).

Dans notre exemple, prenons la ligne :

drwxr-xr-x 2 root root 96 Jan 11 2006 lost+found

lost+found est un répertoire (première lettre = d), ayant pour droits d'accès
lecture/écriture/exécution (rwx) pour le propriétaire , lecture et exécution (r-x) pour le groupe et
lecture/exécution (r-x) pour les autres.

Les droits spéciaux


Dans certains cas, la commande ls -l peut retourner ceci :

#ls -l
drwxr-s--- 2 intgrrci intgrrci 96 Dec 11 15:08 V29.1.0
drwxr-s--- 2 intgrrci intgrrci 96 Jun 28 2004 admin
drwxr-s--- 2 intgrrci intgrrci 96 Jun 28 2004 bin
drwxrws---+ 2 intgrrci intgrrci 8192 Jan 9 09:59 conf
drwxr-sr-x 7 intgrrci intgrrci 8192 Jan 8 09:43 data
drwxr-sr-x 2 intgrrci intgrrci 8192 Nov 9 17:01 db
drwxrwsr-x+ 32 intgrrci intgrrci 8192 Jan 11 09:45 livr
drwxrws---+ 2 intgrrci intgrrci 606208 Jan 15 12:41 logs
drwxr-xr-x 2 root root 96 Jan 11 2006 lost+found
drwxr-s--- 2 intgrrci intgrrci 96 Jun 28 2004 macros
drwxrwsr-x 3 intgrrci intgrrci 8192 Dec 3 14:28 scripts
drwxr-s--- 3 intgrrci intgrrci 8192 Dec 4 13:47 sql
drwxr-s--- 2 intgrrci intgrrci 96 Mar 10 2006 src

On peut être étonné de voir des motifs comme drwxrwsr-x. Que représente donc ce droit s ?

Le s (ou S) représente un droit SGID ou le droit SUID en fonction de l'endroit où il est placé.

Si nous avons, par exemple rwsrwxrwx, il s'agit d'un droit SUID, si nous avons rwxrwsrwx, il s'agit
d'un droit SGID.

SUID

Le droit SUID permet d'exécuter un fichier avec les droits du propriétaire du fichier. Habituellement,
lorsqu'un utilisateur exécute un fichier, quelqu'il soit, l'exécution se réalise avec les droits de
l'utilisateur (droits d'accès aux répertoires, création, écriture ou lecture de fichiers, etc.). Dans
certains cas, il peut être utile que l'exécution se réalise avec les droits du propriétaire du fichier.

Le droit SUID est noté ---s------ dans le cas ou s remplace un - ou ---S------, dans le cas ou s cache un x.

Sur un répertoire, ce droit permet d'affecter les droits du propriétaire à tous les fichiers créés dans ce
répertoire.

SGID

La même chose que SUID mais pour le groupe. i.e :

Le droit SGID permet d'exécuter un fichier avec les droits du groupe propriétaire du fichier.
Habituellement, lorsqu'un utilisateur exécute un fichier, quelqu'il soit, l'exécution se réalise avec les
droits de l'utilisateur (droits d'accès aux répertoires, création, écriture ou lecture de fichiers, etc.)
Dans certains cas, il peut être utile que l'exécution se réalise avec les droits du groupe propriétaire du
fichier.

Le droit SGID est noté ------s--- dans le cas ou s remplace un - ou ------S---, dans le cas ou s cache un x.

Sur un répertoire, ce droit permet d'affecter les droits du groupe propriétaire à tous les fichiers créés
dans ce répertoire.

le sticky bit

Sur un fichier, ce droit indique que le fichier doit rester en mémoire vive, même si l'on en a plus
besoin.
Sur un répertoire, ce droit empêche de supprimer des fichiers par une autre personne que son
propriétaire.
Remarque
Si le sticky bit empêche de supprimer des fichiers, il n'empêche pas de les vider de leur contenu.
Le droit sticky bit est noté ---------t dans le cas ou t remplace un - ou ---------T, dans le cas ou t cache
un x.

s(uid) 4
s(gid) 2
t(sticky bit) 1
Les ACL

Les ACL sont notés par un + sur les droits d'accès. Par exemple :

drwxrws---+ 2 intgrrci intgrrci 8192 Jan 9 09:59 conf


drwxrwsr-x+ 32 intgrrci intgrrci 8192 Jan 11 09:45 livr
drwxrws---+ 2 intgrrci intgrrci 606208 Jan 15 12:41 logs
Les ACL (Access Control List) permettent d'avoir des droits d'accès plus évolués. En effet, avec les
droits standards, il n'est pas possible par exemple de traiter une personne extérieure au groupe
comme faisant partie du groupe, juste pour un fichier ou un répertoire. Les exceptions ne sont donc
pas permises.

Les ACL permettent d'ajouter des permissions plus exceptionnelles de façon simple.

En fonction de l'UNIX employé, les ACL seront déjà installés ou pas. Sous FreeBSD, par exemple, il
faudra recompiler le noyau pour disposer de cette fonctionnalité.

Vérifier la configuration du noyau

Tout d'abord, sachez que les ACL ne peuvent être utilisées que si le noyau le supporte, pour savoir si
c'est votre cas, loguez-vous en tant que root et Tapez ensuite :

#grep ACL /boot/config-*

CONFIG_EXT2_FS_POSIX_ACL=y
CONFIG_EXT3_FS_POSIX_ACL=y
CONFIG_EXT4DEV_FS_POSIX_ACL=y
CONFIG_REISERFS_FS_POSIX_ACL=y
CONFIG_JFS_POSIX_ACL=y
CONFIG_FS_POSIX_ACL=y
CONFIG_XFS_POSIX_ACL=y
CONFIG_GENERIC_ACL=y
CONFIG_TMPFS_POSIX_ACL=y
CONFIG_JFFS2_FS_POSIX_ACL=y
CONFIG_NFS_V3_ACL=y
CONFIG_NFSD_V2_ACL=y
CONFIG_NFSD_V3_ACL=y
CONFIG_NFS_ACL_SUPPORT=m
La ligne suivante indique que le support général des ACL est présent :

CONFIG_FS_POSIX_ACL=y

Ensuite des lignes du type suivant permettent de savoir pour quels systèmes de fichiers les ACL sont
disponibles :

CONFIG_SystemeDeFichiers_FS_POSIX_ACL=y

On remarque que chez moi, Les ACL fonctionnent sur les volumes formatés en EXT2, EXT3, EXT4 et
pleins d'autres formats exotiques :)

Les ACL ne sont pas disponibles sur les systèmes vfat (FAT16 et FAT32), vous ne pourrez donc pas
utiliser les ACL sur une clé USB formatée pour Windows, Cela ne devrait toutefois pas poser
problème .
Installation du paquet acl

Les ACL sont activées, mais nous ne pouvons toujours pas les modifier, pour cela nous devons
installer le paquet acl :

# yum install acl

Modification des ACL

Les ACL sont gérés par les deux commandes setfacl (affecter) et getfacl (afficher).

La syntaxe de base de setfacl est :

setfacl <-s/-m/-x> u:<utilisateur>:<permissions> <fichier(s)>


setfacl <-s/-m/-x> g:<groupe>:<permissions> <fichier(s)>
setfacl <-s/-m/-x> o:<permissions> <fichier(s)>

Les paramètres les plus utiles sont

-s (attribuer)
-m (modifier)
-x (supprimer)
Il y a toutes les options suivantes :

-s, --set=aclset the ACL of file(s), replacing the current ACL


-S, --set-file=file read ACL entries to set from file
-m, --modify=acl modify the current ACL(s) of file(s)
-M, --modify-file=file read ACL entries to modify from file
-x, --remove=acl remove entries from the ACL(s) of file(s)
-X, --remove-file=file read ACL entries to remove from file
-b, --remove-all remove all extended ACL entries
-k, --remove-default remove the default ACL
--maskdo recalculate the effective rights mask
-n, --no-mask don't recalculate the effective rights mask
-d, --default operations apply to the default ACL
-R, --recursive recurse into subdirectories
-L, --logical logical walk, follow symbolic links
-v, --version print version and exit
-h, --help this help text

Exemples

setfacl -s g:groupe1:r fichier.txt


Donne au groupe groupe1 le droit de lecture sur le fichier fichier.txt.
setfacl -R -m u:jean:rwx /usr/local/www
Modifie les permissions de l'utilisateur jean sur le répertoire /usr/local/www et ces permissions
s'appliquent également aux sous-dossiers de ce répertoire.
setfacl -b /etc/fichier
Retire toutes les permissions sur le fichier /etc/fichier.
getfacl /tmp | setfacl –S - /etc/fichier
Donne les mêmes permissions à /etc/fichier qu'à /tmp.

getfacl : voir les ACL en place


La commande getfacl vous permet de connaitre les ACL en place :

#getfacl reperoireDeTest/

# file: reperoireDeTest/
# owner: op414
# group: op414
user::rwx
user:bernard:rwx
user:patrick:r--
group::rwx
mask::rwx
other::---
default:user::rwx
default:user:bernard:rwx
default:user:patrick:r--
default:group::rwx
default:mask::rwx
default:other::---

Je ne m'étends pas sur les résultats, ils sont facile à comprendre, hormis une notion : le masque
(mask)

Le masque

Le masque vous permet de savoir quelles sont les autorisations maximales accordées à un fichier ou
dossier (utilisateurs et groupes confondus), les droits classiques (chmod) ne sont pas comptabilisés.

#getfacl test

# file: test
# owner: op414
# group: op414
user::rwx
user:bernard:rwx
user:patrick:r--
group::rwx
mask::rwx
other::--
Ici, le masque est rwx car bernard possède les droits rwx.
L'utilité du masque est de pouvoir enlever des permissions à tous les utilisateurs et groupes (sauf
de l'utilisateur propriétaire, dont les droits sont définis par chmod):

#setfacl -m m:r-- test


Vous remarquez qu'il faut utiliser le préfixe m: (comme mask). Refaisons un coup de getfacl sur le
fichier :) :

#getfacl test

# file: test
# owner: op414
# group: op414
user::rwx
user:bernard:rwx #effective:r--
user:patrick:r-- #effective:r--
group::rwx #effective:r--
mask::r--
other::---
On remarque que les droits de bernard, patrick et du groupe propriétaire n'ont pas été modifiés (ce
qui permet de les rétablir en ré-augentant le masque ). En revanche, il est maintenant écrit
#effective:r-- en face de leurs lignes. Cela signifie que leurs droits réellements appliqués sont r-- .

Monter les partitions avec l'option acl


Si vous lisez cette sous-partie, c'est que les commandes setfacl et getfacl n'ont pas fonctionné chez
vous.
Ces manipulations doivent effectuées en tant qu'utilisateur root
Pour que vous puissiez utiliser les ACL, les partitions doivent être montées avec l'option
correspondante...

# mount -t ext3 -o defaults,acl /dev/hda1/ /home


... pour monter la partition 2 du premier disque, formatée en ext3 dans le répertoire /home
Vous pouvez remonter un partition déjà montée :
# mount -o remount,acl /home
Si vous voulez que le volume soit monté automatiquement avec l'option acl, vous devez modifier le
fichier /etc/fstab

# nano /etc/fstab
Vous devez rajouter ,acl dans la colonne "options" de la partition concernée :

/dev/sda1 / ext3 errors=remount-ro 0 1


devient chez moi :

/dev/sda1 / ext3 errors=remount-ro,acl 0 1

Voilà, ma partition principale sera automatiquement montée avec l'option acl au démarrage Si vous
avez une partition /home séparée, vous devez bien entendu modifier sa ligne.

Il ne vous reste plus qu'à redémarrer ou remonter les partitions concernées comme vu
précédemment.

Vous aimerez peut-être aussi