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