existe aussi en version
guide de programmation

2.Les droits utilisateurs

2.1.Les utilisateurs

Tout utilisateur d'un système Linux doit utiliser un compte avec un identifiant donné (dans le pire des cas, il s'agira d'un compte "invité"). Chaque compte est associé à un ou plusieurs groupes (d'utilisateurs).

2.2.Les droits

Par défaut, tout fichier créé par un utilisateur lui appartient. Ce dernier pourra alors décider si tous les autres utilisateurs peuvent accéder ou non à ce fichier (et plus précisement, s'ils peuvent le lire, le modifier et/ou l'executer). Il pourra également donner des droits particuliers à un groupe donnée (i.e. tous les membres du groupe).
Cela se visualise bien en tapant la commande "ls -al" (pour avoir le contenu détaillé d'un répertoire). Exemple:
drwxr-xr-x 3 toto toutestf 2300 mai 16 21:00 monrepertoire
-rw-rw-r-- 1 toto toutestf 4500 mai 16 21:00 monscript.php
-r-x--x--x 1 toto toutestf 6000 mai 16 21:00 unexecutable.sh
  • La première colonne précise les droits (nous y reviendrons plus tard)
  • La seconde colonne ...euh... oups... je ne sais plus... mais bon c'est pas important
  • La troisième colonne indique l'identifiant du possesseur du fichier (ici toto)
  • La quatrième colonne indique le groupe possesseur (ici toutestf)
  • La cinquième colonne indique la taille (en octets) du fichier (ou répertoire)
  • Les colonnes suivantes la date de dernière modification du fichier (ou répertoire)
  • Et enfin, le nom du fichier ou répertoire
Tel qu'affiché par un "ls", les droits utilisateurs sont représentés par 10 caractères. Que l'on peut décomposer en 1 caractère + 3*3 caractères.
  • Le premier caractère n'est pas à proprement parler lié aux droits puisqu'il indique si le fichier est un répertoire ou non. S'il y a un "d" c'est un répertoire (directory) sinon, il s'agit d'un fichier (je passe les détails concernant les liens symboliques - des racourcis mais en 100 fois plus intéressant que la version microsoft-)
  • Le premier groupe de 3 caractères indique les droits pour le possesseur du fichier (ici toto).
  • Le second groupe de 3 caractères indique les droits pour les utilisateurs appartenant au groupe du fichier (ici groupe toutestf)
  • Le troisième groupe de 3 caractères indique les droits pour les autres (le reste du monde)
Chaque groupe de 3 caractères se décompose ainsi:
  • Le premier caractère concerne les droits en lecture. "r" l'utilisateur est autorisé à lire le contenu du fichier, sinon "-" il n'est pas autorisé.
  • Le second caractère concerne les droits en écriture. "w" l'utilisateur est autorisé à modifier le contenu du fichier, sinon "-" il n'est pas autorisé.
  • Le troisième caractère concerne les droits en execution (ou accès au répertoire). "x" l'utilisateur est autorisé à executer le programme (ou à accéder au répertoire), sinon "-" il n'est pas autorisé.
Remarques:
  • Il existe d'autres droits très particuliers qui ne nécessitent pas pour le moment d'être exposés ici
Si nous reprenons le résultat du "ls" précédent, on en déduit que:
  • L'utilisateur toto est autorisé à lister et modifier le contenu du répertoire monrepertoire ainsi qu'à accéder au répertoire. Par contre tous les autres utilisateurs (y compris ceux appartenant au même groupe que phpfacile) ne pourront pas modifier le contenu du répertoire.
  • L'utilisateur toto et les membres de son groupe sont autorisés à lire et modifier monscript.php (mais pas à l'executer, mais comme il ne s'agit pas d'un executable cela n'a pas d'impact). Par contre les autres n'ont pas le droit de le modifier.
  • L'utilisateur toto peut lire et executer unexecutable.sh (mais il ne pourra pas le modifier sans modifier les droits ce qui le prémuni contre un effacement par mégarde). Par contre tous les autres ne pourront que l'executer (ouf! ils ne pourront pas lire les mots de passe que j'ai mis dans le code).

2.3.Représentation octale des droits

Comme nous l'avons vu, à l'affichage, les droits sont représenté (la plupart du temps) par 3 groupes de lettres rwx (remplacées par - si le droit n'est pas attribué). Chaque groupe peut être représenté par une valeur comprise entre 0 et 7. Où 7 signifie que tous les droits sont attribués et 0 aucun. Plus exactement si le droit 'x' est attribué on affecte la valeur 1 (2 puissance 0). Si le droit 'w' est attribué on affecte la valeur 2 (2 puissance 1). Si le droit 'r' est attribué on affecte la valeur 4 (2 puissance 2). Pour connaître la valeur associée au groupe 'rwx' il suffit de faire la somme des valeurs. Ainsi le droit 'r-x' est représenté par 4+1=5.
Puisqu'il y a 3 types de droits à définir (utilisateur, groupe et autres) il y a 3 valeurs à calculer et l'on représente le tout par une valeur dite octale en concatenant les 3 valeurs et faisant précéder le tout d'un 0. Ainsi 0777 signifie que le fichier est accessible à tous pour toutes les opérations et 0754 est équivalent à 'rwxr-xr--'.