Droits Unix : la notation octale

Des chiffres et des lettres

Petite piqure de rappel sur les bases des droits Unix suite à la demande de San Antonio pour le billet sur les droits spéciaux. Plus précisément sur la représentation octale des droits.

Sur les systèmes Unix/Linux/BSD, les droits sur les fichiers sont définis pour le propriétaire, pour les utilisateurs appartenant au groupe et pour les autres utilisateurs. Ils sont représentés – par exemple lorsque l’on invoque la commande ls -l – par une suite de 3 lettres (r,w et x pour respectivement read/lire, write/écrire, execute/exécuter), mais peuvent être représentés par des chiffres, par exemple comme suit :

rw-r--r-- est la même chose que 644

Il s’agit de la représentation octale. Pour être expliquée, il faut partir de la forme binaire des droits, suivant ce schéma :

000 = 0
001 = 1
010 = 2
011 = 3
100 = 4
101 = 5
110 = 6
111 = 7

On peut associer chaque triplet aux trois entités (propriétaire, groupe, autres) des droits, ainsi, un fichier ayant le droit du propriétaire en lecture et écriture (r w -) sera écrit 110, 1 pour le r, 1 pour le w et 0 pour le flag x qui n’est pas attribué. Le procédé est le même pour les deux autres triplets. Pour l’exemple complet, prenons : r w – r – – r – -, soit 110 100 100.
Ensuite on part du principe que l’on ajoute les chiffres des valeurs binaires des triplets pour obtenir la valeur octale. En continuant sur l’exemple précédent : 110 en binaire vaut 6 en décimal, 100 vaut 4, ainsi nous avons 6 – 4 – 4, simplifié en 644. Notre fichier a les droits 644.

r w -  r - -  r - - = 110 100 100 = 644
rw-rw-r-- = 100 100 100 = 664
r-xr-xr-x = 101 101 101 = 555
rwxr-xr-- = 111 101 000 = 754

Les droits sous linux : setuid, setgid et sticky bit

Petit point sur les droits Unix spéciaux que sont les setuid, setgid et le sticky bit.

Lorsque l’on découvre l’univers d’Unix/Linux/Mac, il y a certaines choses qui ont du mal à passer lorsque l’on débute. Je me souviens par exemple de la difficulté à apprendre le fonctionnement du système des droits sur les fichiers et plus particulièrement n’avoir rien compris des setuid, setgid et sticky bit. Je reparle de ça parce que je viens de perdre pas mal de temps avec un problème sur un développement PHP en cours, et il s’agissait du setgid qui n’était pas accordé à un répertoire. Bref, ce qui suit est un petit rafraîchissement.

Comme dit dans le sous-titre, les setuid, setgid et sticky bit sont des droits dits spéciaux, ils s’ajoutent aux droits classiques (lecture, écriture et exécution) et fonctionnent différemment suivant qu’on les applique sur un fichier ou un répertoire.

Continue reading « Les droits sous linux : setuid, setgid et sticky bit »