DROITS D'ACCÈS aux FICHIERS UNIX
- <table>
- <tr>
<td>Foo</td>
Block quote ends without a blank line; unexpected unindent.
</tr>
Definition list ends without a blank line; unexpected unindent.
</table>
Introduction
- Les systèmes Unix sont des systèmes multi-utilisateurs.
- Cela impose de devoir gérer les droits d'accès aux ressources (fichiers).
- Sous Unix, les ressources sont représentées par des fichiers.
- Un ensemble de règles simples définit qui peut accéder à quoi.
- Les utilisateurs autorisés peuvent modifier ces règles.
Fichier Unix
- Une entrée dans l'arborescence du système.
- Un descripteur, ou inode, mémorise ses propriétés, sauf son nom.
- L'allocation des ressources nécessaires à tout fichier est gérée de manière transparente par le système.
- Un fichier peut être
- ordinaire : manipulés et organisés par les utilisateurs,
- spécial : avec une structure interne imposée. Seul le système peut les manipuler,
- dossier, lien symbolique,...
CONTENU d'un INODE
- id du périphérique portant le fichier
- id du propriétaire, du groupe propriétaire,
- type du fichier :
- "-" ordinaire, "d" dossier, "l" lien symbolique
- "b","c" périphériques bloc ou caractère
- "p" FIFO, "s" socket
- droits d'accès,
- dates : du dernier accès, de la dernière modification et de la dernière modification de l'inode,
- taille en octets et en nombre de blocs,
- adresses des blocs du fichier,
- nombres de liens physiques pointant vers le fichier.
CLASSES D'UTILISATEURS
- Tout fichier appartient à un utilisateur propriétaire u, et un groupe propriétaire g.
- u et g ne sont pas nécessairement liés.
- généralement, à la création, u est le créateur et g le groupe primaire de u.
- hormis u et g, il existe une troisième classe d'utilisateurs : o (pour others, les autres).
DROITS D'ACCÈS
- Pour chaque fichier, des droits à chaque classe d'utilisateurs.
- Les droits d'une classe d'utilisateurs sont représentés par un triplet "rwx" binaire, que seuls le propriétaire ou le root peuvent modifier.
- r (read) : autorise la lecture d'un fichier ou du contenu d'un dossier.
- w (write) : autorise la modification du contenu d'un fichier et sa suppression. Autorise la modification de nom, la création et la suppression des fichiers d'un dossier.
- x (execute) : permet d'exécuter les fichiers qui le permettent. Permet d'ouvrir un dossier.
Consultation des droits
- Sous unix, on consulte les droits d'accès par : ls -l
- Exemple

notation numérique des droits
- Les droits d'accès à tout fichier sont représentés par un nombre composé :
- la classe u fournit le chiffre de poids fort
- la classe g fournit le chiffre de poids moyen
- la classe o fournit le chiffre de poids faible
- Chaque chiffre est la représentation décimale du nombre binaire rwx où r, w et x valent 0 ou 1 selon les droits effectifs.
- Exemples, voir diapo précédente.
Modification des droits
Changement de propriétaires
- chown [-R] utilisateur fichier
- chgrp [-R] groupe fichier
- chown [-R] utilsateur:groupe fichier
- l'option -R permet d'agir de manière récursive sur un dossier.
Modification des droits
Changement des permissions
Trois types d'altérations :
- + ajoute des droits
- - ôte des droits
- = fixe des droits
Deux techniques :
- symbolique : chmod [-R] <ugoa> <+-=> <rwx> fichier
- Numérique : chmod [-R] NUM fichier
Changement des permissions
Exemples :
- chmod ug+w fichier
- chmod go-rwx
- chmod 755 fichier
Droits étendus : SUID/SGID
- Un programme est exécuté avec les droits de l'utilisateur/groupe qui l'a lancé et non pas ceux de ses propriétaire u et g.
- Cela peut être insuffisant.
- On dispose de bits supplémentaires permettant de modifier ce comportement par défaut : SUID et SGID.
- Valeur de SUID : symbolique s, numérique 4000.
- SUID remplace le x du propriétaire u avec s si x=1, S si x=0
- Valeur de SGID : symbolique s, numérique 2000.
- SGID remplace le x du groupe propriétaire g avec s si x=1, S si x=0
- On parle alors d'identité réelle et effective.
SUID et SGID
Exemples :
- chmod u+s fichier
- chmod g-s fichier
- /usr/bin/passwd
Droits étendus : Sticky bit
- Lorsqu'un droit w est attribué à un dossier, tout utilisateur possédant ce droit peut modifier mais aussi effacer tout fichier du dossier.
- Le sticky bit empêche la suppression par tout autre que le propriétaire.
- Valeurs : symbolique t, numérique 1000
- remplace le x des autres o avec t si x=1, T si x=0
- Exemple : chmod o+t rep