Le système d'exploitation GNU-Linux/Propriétaires et droits d'accès
Les droits d'accès
modifierFonctionnement
modifierChaque 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 :
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épertoirew
(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
modifierLa 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
modifierLes 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
modifierLa commande chown
modifierLa 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
modifierComme 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)
modifierAfficher les ACL
modifierafficher 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
modifierModifier une ACL
modifierSupprimer une ACL
modifierSauvegarder les ACL
modifierPour 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.