Configuration et utilisation de bash: Les droits

Extrait du site Linuxtricks.fr

Introduction

Les permissions constituent un système simple de définition des droits d'accès aux fichiers. Elles restent le moyen le plus utilisé pour définir les droits des utilisateurs. Cet article présente simplement leur lecture, et leur attribution.

Quelques notions

Avant tout, quelques termes qui seront rencontrés dans la suite de la lecture :

Fonctionnement des permissions

Quels sont les droits

Les différents droits disponibles sont les suivants :

Ces droits ont deux sens différents s'ils sont appliqués à des fichiers ou des dossiers :

Pour les fichiers

Pour les dossiers

On appelle parfois r, w et x des flags. Sur un fichier donné, ils doivent être définis pour son propriétaire, son groupe, mais aussi les autres utilisateurs (différents du propriétaire et n'appartenant pas au groupe).

Seuls root et le propriétaire d'un fichier peuvent changer ses permissions d'accès.

L'utilisateur root outrepasse tous les droits. Il a accès à la lecture et la modification de tous les fichiers.

Lire ses droits

Les droits sont représentés par une suite de 9 caractères. Les trois premiers sont les permissions de l'utilisateur, Les trois suivants celles du groupe, Les trois dernières celles des autres utilisateurs.

 rwxr-xr--
 \ /\ /\ /
  v  v  v
  |  |  droits des autres utilisateurs (o)
  |  |
  |  droits des utilisateurs appartenant au groupe (g)
  |
 droits du propriétaire (u)

Ici, le propriétaire peut lire, écrire et exécuter le fichier, mais les utilisateurs du groupe attribué au fichier ne peuvent que le lire et l'exécuter, et enfin que les autres utilisateurs ne peuvent que lire le fichier. Une autre manière de représenter ces droits est sous forme binaire, où r = 4 si actif ou 0 si inactif w = 2 si actif ou 0 si inactif x = 1 si actif ou 0 si inactif

Et ce pour u, g et o.

rwxr-xr--

Ainsi, rwx « vaut » 7 (4+2+1), r-x « vaut » 5 (4+1) et r-- « vaut » 4. Les droits complets (rwxr-xr--) sont donc équivalent à 754.

Exemple

On peut voir les droits attribués avec la commande ls -l :

ls -l
-rw-r--r-- 1 adriencl users 8  1 janv. 12:56 fichier

Ici, on a donc plus d'informations.

La sortie signifie que le fichier fichier (de taille 8) appartient à « adriencl », qu'on lui a attribué le groupe « users », et que les droits sont rw-r--r--. On remarque qu'il y a en fait 10 caractères sur la zone de droits. Le premier - n'est pas un droit, c'est un caractère réservé pour indiquer le type de fichier. Il peut prendre les valeurs suivantes :

Changer les droits

Seuls root et le propriétaire d'un fichier peuvent changer ses permissions d'accès.

Pour cela, on peut utiliser la commande chmod.

Cette commande fonctionne de plusieurs façons.

Définir des droits

Si on veut attribuer les droits rwx------ (seul l'utilisateur à tous les droits sur le fichier, et pas les autres) on peut utiliser la commande avec les valeurs octales : chmod 700 fichier

Voici ce que cela donne :

ls -l fichier
-rw-r--r-- 1 adriencl users 8  1 janv. 12:56 fichier

on applique le chmod

chmod 700 fichier

on vérifie

ls -l fichier
-rwx------ 1 adriencl users 8  1 janv. 12:56 fichier

Ajouter ou ôter des droits

La commande suivante oblige à attribuer tous les droits d'un coup. Mais il est possible de n'ajouter un droit que pour un type d'utilisateur spécifique. Pour cela, on utilise toujours la commande chmod mais avec les attributs u g o a pour "qui" et r w x pour "quoi" et le symbole + ou - pour ajouter ou ôter des droits

Pour ajouter le droit de lecture à tout le monde sur mon fichier :

chmod a+r fichier

Pour ajouter le droit de modification au groupe :

chmod g+w fichier

Pour retirer le droit de lecture aux autres :

chmod o-r fichier

On peut aussi combiner les opérations :

Ajouter le droit de lecture écriture au groupe et aux autres

chmod go+rw fichier

Et pour finir, on peut combiner deux opérations différentes en séparant par une virgule, pour par exemple, ajouter le droit x au groupe et retirer le droit w aux autres

chmod g+x,o-w fichier

Voici en exemple la synthèse des commandes précédentes, avec affichage des permissions entre chaque :

ls -l fichier
-rwx------ 1 adriencl users 8  1 janv. 12:56 fichier

On applique le chmod ajouter tout le monde en lecture:

chmod a+r fichier

On vérifie:

ls -l fichier
-rwxr--r-- 1 adriencl users 8  1 janv. 12:56 fichier

On applique le chmod ajouter les groupes en écriture:

chmod g+w fichier

On vérifie:

ls -l fichier
-rwxrw-r-- 1 adriencl users 8  1 janv. 12:56 fichier

On applique le chmod supprimer tous les autres en lecture:

chmod o-r fichier

On vérifie:

ls -l fichier
-rwxrw---- 1 adriencl users 8  1 janv. 12:56 fichier

On applique le chmod ajouter les groupes et les autres en lecture et écriture:

chmod go+rw fichier

On vérifie:

ls -l fichier
-rwxrw-rw- 1 adriencl users 8  1 janv. 12:56 fichier

On applique le chmod ajouter les groupes en exécution et supprimer les autres en écriture:

chmod g+x,o-w fichier

On vérifie:

ls -l fichier
-rwxrwxr-- 1 adriencl users 8  1 janv. 12:56 fichier

Changer les utilisateurs et groupes sur les fichiers

Pour changer le possesseur du fichier, on utilise la commande chown :

chown adrien monfichier

Si on veut le faire de manière récursive, on utilise -R :

chown -R adrien mondossier

chown a la capacité de changer le possesseur (utilisateur) et le groupe :

chown adrien:users monfichier

Pour changer le groupe uniquement, c'est la commande chgrp :

chgrp users monfichier

Pour un dossier de manière récursive :

chgrp -R users mondossier

Gérer les utilisateurs et groupes

Pour ajouter un utilisateur, on utilise la commande useradd :

useradd -m -G lp,wheel,audio,cdrom,video,cdrw,usb,users,cron,crontab -s /bin/bash adriencl

Le -m permet de créer le dossier personnel (par défaut /home/nomdelutilisateur), le -G permet d'ajouter des groupes au nouvel utilisateur, et -s pour définir le shell de connexion.

Pour supprimer un utilisateur :

userdel -r adriencl

Ici, le -r permet de supprimer son dossier personnel et le spool du courrier.

Pour modifier un utilisateur existant c'est la commande usermod .

Pour voir les différents usages (changement d'UID, ajout de groupes, ...) se référer au manuel court :

usermod --help

Quelques exemples :

Ajouter adrien dans le groupe wheel sans supprimer ses autres groupes :

usermod -G wheel -a adrien

Changer l'identifiant et le /home de l'utilisateur adriencl en adrien2 :

usermod -m -d /home/adrien2 -l adrien2 adriencl

Pour ajouter un utilisateur à un groupe, avec gpasswd :

gpasswd -a utilisateur groupe

Et pour supprimer l'utilisateur du groupe :

gpasswd -d utilisateur groupe

Pour créer un groupe :

groupadd legroupe

Et pour le supprimer :

groupdel legroupe