Gérer les droits d’accès aux fichiers sous Raspbian


Pour pouvoir gérer les droits d’accès aux fichiers sous linux, il faut connaître et savoir manipuler les notions suivantes :
1) Les utilisateurs et les groupes;
2) Les répertoires, fichiers et droits d’accès;
3) Les commandes chmod et chown.

1) Utilisateurs et groupes

Pour autoriser l’accès aux fichiers, aux répertoires et aux périphériques du système, linux prend en compte deux notions importantes :
- les utilisateurs (personnes qui utilisent l’ordinateur)
- les groupes (ensembles d’utilisateurs ou de ressources)

Pour afficher la liste des groupes dont fait parti un utilisateur, on tape dans un terminal
grep "nom d’utilisateur" /etc/group

En effet, d'une façon générale, la commande grep "chaine" nom_de_fichier permet de rechercher tous les mots contenant "chaine" dans un fichier. En particulier, grep "pi" /etc/group affiche toutes les lignes du fichier "/etc/group" contenant "pi", c'est à dire tous les groupes dont fait partie l’utilisateur pi

1

On voit que pi est considéré par Raspbian à la fois comme un utilisateur et comme un groupe d’utilisateurs.

Pour afficher la liste des utilisateurs présents dans un groupe on tape dans un terminal grep "nom du groupe" /etc/group
Par exemple, grep "games" /etc/group affiche la liste des utilisateurs faisant partie du groupe "games"

2

On voit que pi est utilisateur du groupe games qui a pour identificateur de groupe 60. On peut bien naturellement remplacer "games" par le groupe que l’on souhaite pour aficher les utilisateurs qui en font partie.

Le fichier "/etc/passwd" contient la liste des utilisateurs du système

3

les différents champs sont séparés par le caractère ":". On distingue:
- le nom de l'utilisateur (pi par exemple en ligne 24)
- le mot de passe de l'utilisateur (masqué avec un x)
- un entier qui identifie l'utilisateur pour le système d'exploitation (User ID)
- un entier qui identifie le groupe de l'utilisateur (Group ID)
- un commentaire éventuel
- le répertoire de connexion de l’utilisateur au démarrage de l’ordinateur
- la commande exécutée après connexion de l’utilisateur au système

Le fichier /etc/group contient la liste des groupes

4

Il existe sous Linux diverses commandes (useradd, groupadd…) qui permettent de créer ou supprimer des utilisateurs et des groupes ou d’associer des utilisateur à des groupes.

Pour avoir a un accès complet au système d'exploitation et à sa configuration, il est nécessaire de se connecter en tant que superutilisateur (root), en tapant la commande su dans le terminal. 

Un utilisateur particulier, notamment l’utilisateur par défaut pi, a accès à des fonctions plus restreintes en droits mais il peut cependant utiliser la commande sudo pour accéder à des fonctions élargies.

2) Répertoires, fichiers et droits d’accès

Sous Linux tout répertoire et tout fichier appartient à un utilisateur propriétaire et à un groupe propriétaire, à savoir l’utilisateur et le groupe qui l’a créé.

Par exemple, on crée un fichier texte "essai.txt" et un répertoire "mon-dossier" dans "/home/pi/Documents", en étant connecté en tant qu’utilisateur pi.

On peut vérifier que ce fichier et ce répertoire appartiennent bien à l’utilisateur et au groupe pi en cliquant droit sur l’icône correspondant depuis le gestionnaire de fichiers. On sélectionne le menu "Propriétés" puis on clique les onglets "Général" puis "Droits d’accès".

5

Le nom pi apparaît bien dans les zone de texte "Propriétaire" et "Groupe"

6

En revanche si on examine de la même façon les droits d’accès du répertoire système usr par exemple on voit que cette fois-ci le propiétaire n’est plus pi mais root.

7

Il est utile de savoir que le système d’exploitation Linux associe un certain niveau d’abstraction à la notion de fichier, si bien que pour lui tout est fichier. Les fichiers, les répertoires, les ressources (périphériques, interfaces…) sont ainsi considérés au sens large comme des fichiers par Linux et, sous Linux, chaque fichier appartient à un utilisateur et à un groupe. 

De plus, il existe trois types d'autorisations d'accès à ces fichiers: lecture (r comme read), écriture (w comme write) et exécution (x comme execute)
r : droit de lecture (read)
w : droit d'écriture (write)
x : droit d'exécution (execute)

3) Commandes chmod et chown

3.1) La commande chmod

La commande chmod (abrev. change mode) permet de modifier les permissions (droits) associés à un fichier (ou à un dossier). Le tableau suivant montre la correspondance entre les codes passés en paramètre à chmod et les droits correspondants sur les répertoires et fichiers considérés.

8

Chaque fichier (ou dossier) a trois types d’utilisateurs qui peuvent interagir avec lui:
- le propriétaire (utilisateur qui a créé le dossier ou répertoire)
- le groupe (tous les utilisateurs qui sont membres du même groupe que le propriétaire)
- les autres (tous les autres utilisateurs qui ne sont ni propriétaires ni les membres du groupe).

Le tableau suivant montre un exemple de droits (775), associé à un fichier ou à un dossier, fréquemment rencontré. Le propriétaire et le groupe dont fait partie le propriétaire ont tous les droits mais les autres utilisateurs ne peuvent que lire ou exécuter le fichier (ou les fichiers du répertoire) mais pas les modifier.

9

3.2) La commande chown

La commande chown (abrev. change owner)) permet de changer les propriétaires d’un fichier ou d’un dossier.
chown [propriétaire:nom de groupe] [nom du fichier ou nom du dossier]

Par exemple si on a créé le fichier "essai.txt" dans le répertoire "/home/pi/Documents", on tape dans le terminal "cd /home/pi/Documents" pour se rendre dans le répertoire "/home/pi/Documents" puis on tape ls -l essai.txt pour voir les droits d'accès au fichier essai.txt.

10

On voit que les droits du propriétaire sont rw-, les droits du groupe et les droits des autres sont r-- le fichier étant un fichier texte ne peut pas être exécuté. On peut également vérifier ces droits d'accès en cliquant droit sur l'icône du fichier depuis le gestionnaire de fichier

La commande chown doit être utilisée avec les droits root et possède la syntaxe suivante:
chown [propriétaire:nom de groupe] [nom du fichier ou nom du dossier]

On se rend dans le répertoire "/opt/minecraft-pi" par exemple et on regarde les droits associés au fichier "HOW_TO_RUN.txt" par exemple. On voit que ce fichier appartient au système (root) qui seul peut modifier son contenu.

11

En tant qu'utilisateur pi, on ouvre ce fichier et on modifie son contenu

12

Quand on clique le menu Fichier/Enregistrer, pour enregistrer le fichier avec les modifications, on obtient le message d'erreur "impossible d'ouvrir le fichier en écriture". En effet, on a pas le droit en tant qu'utilisateur pi de modifier le contenu de ce fichier.

13

Depuis le Terminal, on se rend dans le répertoire ou se trouve ce fichier
cd /opt/minecraft-pi

14

On tape chown pi HOW_TO_RUN.txt

15

La modification est refusée car pour pouvoir la faire il faut être connecté en tant que superutilisateur (root)
On tape donc su

16

Cette fois ci la commande est acceptée. On peut vérifier, à l'aide du gestionnaire de fichier, que le propriétaire du fichier est désormais pi.

17

La commande Fichier/Enregistrer peut alors être effectuée sur ce fichier avec succès par l'utilisateur pi. Comme on peut le remarquer, le fichier appartient toujours au groupe root. On aussi changer le groupe propriétaire du fichier en tapant par exemple
chown pi:pi HOW_TO_RUN.txt

18

On peut alors vérifier, à l'aide du gestionnaire de fichier, que dans ce cas, pour ce fichier, le propriétaire est pi et le groupe est également pi.

19

Remarque : l'option -R de chown permet d'affecter récursivement un nouveau propriétaire et/ou un nouveau groupe à tous les sous-dossiers et fichiers contenus dans un répertoire.On tape
chown -R pi:pi /opt/minecraft-pi

20

Tous les fichiers du répertoire et de tous les sous-répertoires se voient alors attribuer les droits de propriétaire et de groupe pi

21

la commande chown -R root:root /opt/minecraft-pi réattribue les droits précédents

22

23