Le système d'exploitation GNU-Linux/Propriétaires et droits d'accès

Un livre de Wikilivres.



Les droits d'accès[modifier | modifier le wikicode]

Fonctionnement[modifier | modifier le wikicode]

Chaque fichier du système est associé à des droits d'accès. Ceux-ci sont affichés par la commande ls en utilisant le format long : ls -l.

Ces droits d'accès sont résumés en 10 caractères de la forme suivante :

type u_read u_write u_exec g_read g_write g_exec o_read o_write o_exec

Exemple :

drwxr-xr-x

Le premier caractère représente le type de fichier :


Types de fichier
Type Description
- Regular file : fichier normal
d Directory : répertoire
l Link : lien
b Block device : périphérique bloc (périphérique à accès direct)
c Character device : périphérique caractère (périphérique à accès séquentiel)
s Socket
p Pipe (tube nommé)

Le reste de la chaîne est scindé en 3 blocs de 3 caractères qui représentent les différents niveaux de droit :

  • user(u) : droits concernant le propriétaire du fichier,
  • group(g) : droits concernant les autres membres du même groupe que le propriétaire du fichier,
  • other(o) : droits concernant tous les autres utilisateurs.

Les trois caractères d'un bloc sont les suivants, dans l'ordre :

  • r (read) : droit de lire le fichier / lister le contenu du répertoire
  • w (write) : droit d'écrire dans le fichier / modifier le répertoire (créer/supprimer des fichiers)
  • x (execute) : droit d'exécuter le fichier (programme ou script) / ou de traverser le répertoire (changer le répertoire courant).

Si l'un des droits n'est pas accordé, un tiret est affiché à sa place.

Exemple :

-rwxrw-r--  ...  script.sh

Le fichier script.sh est un fichier normal (-) et est associé aux droits suivants :

  • Le propriétaire peut lire, écrire et exécuter ce fichier (rwx),
  • Les membres du même groupe que le propriétaire peuvent lire et écrire, mais pas exécuter ce fichier (rw-),
  • Les autres utilisateurs peuvent seulement lire ce fichier (r--).


Pour plus de détails voir : w:Permissions_Unix#Droits étendus.

Modifier les droits d'accès[modifier | modifier le wikicode]

La commande chmod permet de modifier les droits associés à un fichier.

Enlever le droit de lecture (r) aux autres (o)

~$ chmod o-r nom_de_fichier

Ajouter un droit d'écriture (w) au groupe (g)

~$ chmod g+w nom_de_fichier

Combinaison des deux commandes :

~$ chmod o-r,g+w nom_de_fichier

Spécifier tous les droits avec une valeur numérique :

~$ chmod 0754 nom_de_fichier

Les droits par défaut et la commande umask[modifier | modifier le wikicode]

Les droits par défaut d'un nouveau fichier sont définis par rapport à un masque des droits défini pour chaque utilisateur avec la commande umask.

Afficher le masque courant :

~$ umask
0022

Exemples :

  • Un fichier est créé avec les droits par défaut 666 (rw-rw-rw-) filtré par le masque 022 :
666 & ~022 = 644  rw- r-- r--
  • Un >répertoire est créé avec les droits par défaut 777 (rwxrwxrwx) filtré par le masque 022 :
777 & ~022 = 755  rwx r-x r-x


Les propriétaires et les groupes[modifier | modifier le wikicode]

La commande chown[modifier | modifier le wikicode]

La commande chown permet de changer le propriétaire d'un fichier ou d'un répertoire. Il faut être propriétaire du fichier ou répertoire, ou root selon la ressource que l'on souhaite modifier.

La commande chown est suivie du nouveau propriétaire puis du nom du fichier ou du répertoire:
$ chown alex toto  => donne la propriété du fichier toto à alex.

La commande chgrp[modifier | modifier le wikicode]

Comme la commande chown, la commande chgrp change le groupe propriétaire d'un fichier ou d'un répertoire.

La commande chgrp est suivie du nom du groupe puis du nom du fichier ou du répertoire :
$ chgrp etudiant toto  => donne la propriété du fichier toto au groupe etudiant.


On peut aussi changer le propriétaire et le groupe en une seule commande :

$ chown suivit du nom du propriétaire.nom du groupe suivit du nom du fichier
$ chown alex.prof toto  => donne la propriété du fichier toto à alex et au groupe prof.


Le raccourci suivant existe également :

$ chown alex. toto  => donne la propriété du fichier toto à alex et au groupe alex.

Les Access Control List (ACL)[modifier | modifier le wikicode]

À faire...link={{{link}}}

chapitre à écrire

Afficher les ACL[modifier | modifier le wikicode]

afficher tous les droits, y compris dans les sous-répertoires : $ getfacl -R *

afficher tous les droits sauf les droits de base : $ getfacl --skip-base -R *

Ajouter une ACL[modifier | modifier le wikicode]

Modifier une ACL[modifier | modifier le wikicode]

À faire...link={{{link}}}

manipulation de la commande setfacl

Supprimer une ACL[modifier | modifier le wikicode]

Sauvegarder les ACL[modifier | modifier le wikicode]

À faire...link={{{link}}}

manipulation de la commande star

Pour les systèmes de fichier XFS, il convient également de sauvegarde les ACLs. La sauvegarde des ACLs doit être effectuée dans un fichier avant la sauvegarde sur bande.

$ getfacl --skip-base -R /home/acl.sauv

ou

$ getfacl --skip-base -absolute_name -R /home > /home/acl.sauv 

si la sauvegarde se fait en chemin absolu.

Le fichier /home/acl.sauv sera également sauvegardé sur bande.