Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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

Hors ligne

#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