#1 Le 04/12/2005, à 17:21
- bruno
[HOW-TO] Doits d'accès sur le fichiers et les dossiers
Principes des droits d'accès sur les fichiers
Groupes et utilisateurs
Chaque utilisateur se voit affecter un numéro d'utilisateur : UID et un numéro de groupe principal : GID. En plus de son groupe principal, un utilisateur peut être membre d'autres groupes.
La correspondance entre les noms d'utilisateurs et leur UID est assurée par le fichier /etc/passwd. La correspondance entre les noms de groupes et leur GID, ainsi que les membres d'un groupe sont définis dans /etc/group.
Le superutilisateur se voit affecter l'UID 0 (utilisateur root) et le GID 0 (groupe root). Avec Ubuntu, le premier utilisateur créé lors de l'installation se voit affecter l'UID 1000 et le GID 1000. Par exemple vous créez un utilisateur bruno qui sera automatiquement membre du groupe bruno. Tous les utilisateurs créés ensuite recevront un UID supérieur à 1000.
Pour connaître vos UID et GID vous pouvez utiliser la commande id :
$ id
uid=1000(bruno) gid=1000(bruno) groupes=4(adm),20(dialout),24(cdrom),25(floppy),29(audio),30(dip),40(src),44(video),46(plugdev),104(lpadmin),105(scanner),106(admin),1000(bruno)
Les fichiers et les répertoires
Tout fichier ou répertoire appartient à un utilisateur particulier. Lorsque vous tentez d'accéder a un fichier le système compare votre UID et votre GID à ceux qui se trouvent inscrits dans l'en-tête du fichier. Trois cas peuvent alors se présenter :
- votre UID est identique a celui inscrit dans l'en-tête de fichier : vous êtes propriétaire du fichier ;
- votre UID est différent de celui inscrit dans l'en-tête de fichier, mais votre GID est identique à celui du fichier : vous appartenez au même groupe que le fichier ;
- votre UID et votre GID sont différents de ceux définis dans l'en-tête de fichier : vous appartenez au reste du monde.
Pour chaque fichier il existe donc trois catégories essentielles d'utilisateurs pouvant se voir affecter ou refuser des droits d'accès :
- le propriétaire
- le groupe
- le reste du monde
Pour chaque catégorie on peut affecter trois types de droits :
- lecture (read) r
- écriture (write) w
- exécution (eXecute) x
Pour voir de manière très explicite quels sont les droits d'accès sur les fichiers vous pouvez utilisez la commande ls -l :
$ ls -l
-rwxr-xr-x 1 bruno bruno 34861 2005-11-26 15:53 usplash-fix.so
drwxrwx--- 5 bruno bruno 4096 2005-11-20 18:46 Vidéo
Les colonnes du début indiquent les droits d'accès, le propriétaire et le groupe auxquels appartiennent les fichiers, voici la signification de la première colonne :
| d | rwx | r-x | r-x
| | | |
|type de fichier | droits du propriétaire | droits des membres du groupe | droits du reste du monde
Les colonnes suivantes indiquent respectivement le nombre de liens, le propriétaire, le groupe, la taille du fichier en octets, la date et enfin le nom.
Le type de fichier peut être :
- fichier
d dossier
l lien
b périphérique de type bloc
c périphérique de type caractère
p pipe (redirection)
N.B.: avec Linux tout est fichier : les fichiers, les répertoires, les périphériques, etc.
Suivant qu'il s'agit d'un dossier ou d'un fichier la signification des droits n'est pas tout a fait la même.
Pour un fichier :
r : le fichier est accessible en lecture, on peut l'éditer ;
w : le fichier est accessible en écriture, on peut le modifier ;
x : le fichier est exécutable (par exemple un script ou un binaire).
Pour un dossier :
r : le dossier est accessible en lecture, on peut lister le contenu du dossier ;
w : le dossier est accessible en écriture, on peut y créer de nouveau fichier ou dossier ;
x: le dossier est accessible, en l'absence d'autorisation x sur un dossier vous ne pouvez ni entrer dans ce dossier ni lister son contenu
Modifier les droits d'accès
Seul le propriétaire du fichier peut modifier les droits d'accès, à l'exception de root (superutilisateur) qui peut modifier tous les droits de tous les fichiers. Pour gérer les droits en ligne de commande, vous pouvez utiliser chmod.
Utilisation de chmod avec la forme symbolique
La commande chmod doit être suivie d'un indicateur des droits à modifier :
u pour l'utilisateur
g pour le groupe
o pour le reste du monde (other)
ainsi que de la modification a apporter + (r, w ou x) pour ajouter de nouveaux droits, - (r, w, ou x) pour en enlever.
Toutes les combinaisons chmod ugo(+/-)rwx sont possibles.
Exemple 1:
$ ls -l
-rwxr-xr-x 1 bruno bruno 2 2005-12-04 16:02 script
$ chmod go-x script
On enlève le droit d'exécution au groupe et au reste du monde, résultat :
$ ls -l
-rwxr--r-- 1 bruno bruno 2 2005-12-04 16:02 script
Exemple 2:
$ ls -l
-rw-r--r-- 1 bruno bruno 2 2005-12-04 16:01 document1
$ chmod g+w document1
On accorde un droit d'écriture au groupe, résultat :
$ ls -l
-rw-rw-r-- 1 bruno bruno 2 2005-12-04 16:01 document1
Exemple 3:
$ chmod -w document1
On enlève a tout le monde (l'indicateur est omis) le droit d'écriture :
$ ls -l
-r—r--r-- 1 bruno bruno 2 2005-12-04 16:01 document1
Utilisation de chmod en mode octal
La commande chmod est suivi d'un nombre en octal (base huit) pour indiquer les nouveaux droits. Voici comment se caculent ces valeurs octales :
| Utilisateur | Groupe | Reste du monde |
| | | |
| r | w | x | r | w | x | r | w | x |
| | | | | | | | | |
| 400 | 200 | 100 | 040 | 020 | 010 | 004 | 002 | 001 |
Pour attribuer les droits il suffit “d'additionner” ces valeurs.
Exemples :
chmod 700 attribue tous les droits (lecture, ecriture, execution) au seul propriétaire du fichier, les membres du groupe et le rest du monde n'ont aucun droit.
chmod 644 attribue les droits en lecture et en écriture pour le propriétaire, et uniquement un droit en lecture pour le groupe et le rest du monde
NB: l'exemple à proscrire est le fameux chmod 777 qui attribue tous les droits a tout le monde !
chmod récursif
Pour changer les droits sur l'ensemble d'un dossier, de ses sous dossiers et de ses fichiers (changement récursif, il suffit de faire suivre la commande chmod de l'option -R.
Exemples :
chmod -R o-rw mon_dossier enlèvera les droits en écriture pour le reste du monde sur tous les fichiers et dossiers contenus dans mon_dossier.
chmod -R 660 mon_dossier, attribuera les droits en lecture et en écriture pour l'utilisateur et le groupe, aucun droit pour le reste du monde sur tous les fichiers et dossiers contenus dans mon_dossier.
Modifier le propriétaire et le groupe
Pour changer le propriétaire et/ou le groupe d'un fichier on peut utiliser la commande chown. Il faut être superutilisateur pour pouvoir changer cela.
$sudo chown bruno document1
le propriétaire du fichier document1 devient bruno.
$sudo chown -R bruno:bruno dossier1
le propriétaire devient bruno et le groupe bruno pour l'ensemble des fichiers et sous dossiers du dossier1 (-R mode récursif)
On peut également utiliser la commande chgrp si l'on veut modifier uniquement le groupe d'appartenance :
$sudo chgrp users dossier1
NB : les commandes chown et chgrp peuvent indifféremment utiliser les noms d'utilisateurs et de groupes ou les UID/GID.
TODO :
Droits d'accès avancés : SUID et SGID
#2 Le 04/12/2005, à 17:23
- All My Family Is MUSIC
Re : [HOW-TO] Doits d'accès sur le fichiers et les dossiers
nice one broda' !
Hors ligne
#3 Le 10/01/2008, à 14:28
- bmens
Re : [HOW-TO] Doits d'accès sur le fichiers et les dossiers
super HOW TO
merci bien de la part d'un novice
Hors ligne
#4 Le 01/08/2014, à 17:10
- NinJoDo
Re : [HOW-TO] Doits d'accès sur le fichiers et les dossiers
Merci pour ce petit cours.
$ chmod g+w document1
On accorde les droits d'écriture au groupe plutôt, non ?
Hors ligne