Droits d'accès aux fichiers
Concepts de comptes utilisateur et de groupes
Le système GNU/Linux étant multiutilisateur, les personnes employant celui-ci doivent être identifiées afin d’assurer la confidentialité des informations contenues dans les fichiers. En effet, il ne serait pas acceptable que l’utilisateur "Nicolas" puisse consulter les fichiers personnels de "Richard" sans l’accord de ce dernier.
Ces personnes possèdent donc chacune un "compte utilisateur" sur le système ; elles peuvent utiliser ce dernier tout en étant clairement identifiées. Cependant, il est permis de partager des fichiers entre collaborateurs et une notion de "groupe d’utilisateurs" existe sous GNU/Linux.
Un utilisateur doit obligatoirement être membre d’un groupe d’utilisateurs sur un système Unix comme GNU/Linux : c’est son groupe principal qui est utilisé lors de la création des fichiers. Par contre, il peut éventuellement appartenir à plusieurs autres groupes : ses groupes secondaires déterminent ses droits d’accès aux fichiers créés par d’autres membres des groupes.
Par exemple, si l’on représente les différents services d’une société avec leurs personnels, bien que chaque individu ait une fonction première (indiquée entre parenthèses)...
Droits Unix
Les permissions d’accès aux fichiers déterminent les actions que peuvent entreprendre les utilisateurs.
La majorité des problèmes d’installation, de configuration et de fonctionnement des applications sous GNU/Linux est due à des droits d’accès mal positionnés.
En premier lieu, il est nécessaire de savoir que les droits d’accès sous Linux sont définis pour :
-
Un compte utilisateur : propriétaire du fichier, c’est en principe l’utilisateur qui a créé celui-ci.
-
Un groupe : ce groupe est généralement le groupe principal du propriétaire du fichier mais peut être modifié par ce dernier et prendre la valeur d’un de ses groupes secondaires.
-
Les autres : cette entité représente toute personne autre que le propriétaire et qui n’est pas membre du groupe cité précédemment.
Les droits d’accès à un fichier sont aussi appelés "modes" sous Unix.
Les droits, l’utilisateur et le groupe propriétaires d’un fichier sont affichés avec la commande ls -l :
Dans ce dernier exemple, le fichier appartient à l’utilisateur willy et au groupe tech ; les neuf caractères rw-r--r-- définissent les droits d’accès à ce fichier pour l’utilisateur willy (user ou u), les membres du groupe tech (group ou g) et les autres (other ou o). Plus précisément, ces caractères sont répartis comme suit :
Tout utilisateur est donc associé à l’une de ces entités pour déterminer les permissions en vigueur.
Attention, si l’utilisateur est propriétaire du fichier, ce sont les droits du propriétaire qui s’appliquent et non ceux du groupe, même si cet utilisateur est aussi membre de ce groupe.
La commande GNU ls peut ajouter un caractère supplémentaire à la suite des neuf droits Unix standards lorsque des autorisations particulières sont positionnées. Un point . indique alors un contexte sécurité SELinux spécifique et un + indique qu’une autre méthode d’autorisation telle que des ACL (Access Control Lists) est utilisée.
1. Droits standards
Les droits d’accès...
Gestion des droits
1. chgrp
Le groupe par défaut attribué aux nouveaux fichiers est le groupe principal de l’utilisateur qui l’a créé, à moins que le droit SGID soit positionné sur le répertoire d’accueil.
La commande chgrp (change group) permet de modifier ce groupe ; l’utilisateur peut céder ce fichier à n’importe quel groupe auquel il appartient. La syntaxe de la commande est :
chgrp [-R] <groupe> <fichier ...>
L’option principale -R indique à la commande d’appliquer la modification de façon récursive (c’est-à-dire à tous les fichiers et sous-répertoires du répertoire passé en argument).
À l’inverse de l’administrateur, l’utilisateur ordinaire ne peut modifier que les fichiers dont il est le propriétaire.
Par exemple :
[alain]$ id
uid=1006(alain) gid=1002(vente) groupes=1002(vente),1003(compta)
[alain]$ touch fichier
[alain]$ ls -l fichier
-rw-r--r-- 1 alain vente 0 jun 3 03:58 fichier
[alain]$ chgrp compta fichier
[alain]$ ls -l fichier
-rw-r--r-- 1 alain compta 0 jun 3 03:58 fichier
La commande similaire chown (change owner) permet également de modifier le propriétaire d’un fichier mais seul l’administrateur possède les autorisations requises.
2. chmod
La commande chmod permet de modifier les droits (ou "modes") des fichiers. Seuls le propriétaire du fichier et l’administrateur système (root) peuvent utiliser cette commande.
La syntaxe générale de la commande est la suivante :
chmod [-R] <droits> <fichier...>
Comme pour la commande chgrp, l’option -R indique à la commande d’appliquer la modification de façon récursive.
Il y a deux manières d’indiquer les droits d’accès d’un fichier sous Unix : en notation symbolique et en notation octale.
Notation symbolique
La notation symbolique s’appuie sur les caractères r (lecture), w (écriture) et x (exécution) pour désigner les droits et u (utilisateur), g (groupe) et o (autres) pour symboliser les entités concernées.
Dans la notation symbolique, le caractère a est équivalent...
Exercices
Exercice 1
Déterminez les droits des fichiers /usr/bin/passwd et /usr/bin/write, et du répertoire /tmp. Qu’ont-ils de particulier ?
Solution
La commande ls -l permet de lister les fichiers demandés en affichant leurs droits. Dans le cas d’un répertoire, l’option -d supplémentaire évite d’afficher l’intérieur du répertoire.
[nicolas]$ ls -l /usr/bin/passwd
-rwsr-xr-x. 1 root root 27864 18 juin 2015 /usr/bin/passwd
[nicolas]$ ls -l /usr/bin/write
-rwxr-sr-x. 1 root tty 19584 7 sept. 13:05 /usr/bin/write
[nicolas]$ ls -ld /tmp
drwxrwxrwt. 14 root root 320 25 févr. 14:55 /tmp
Le caractère s au niveau des droits utilisateur sur le fichier /usr/bin/passwd indique qu’il est exécuté systématiquement sous l’identité de son propriétaire, en l’occurrence root.
Le caractère s au niveau des droits du groupe sur le fichier /usr/bin/write indique qu’il est exécuté systématiquement sous l’identité de son groupe, en l’occurrence tty.
Le caractère t au niveau des droits des autres sur le répertoire /tmp signifie que seuls le propriétaire de ce répertoire (root ici) et le propriétaire d’un fichier créé dans ce répertoire peuvent supprimer un fichier de /tmp.
Exercice...