bon, aller, cours de base en linux, ultra rapide ...
droits (de base, je n'évoque pas ici les acl) sur les fichiers (les dossiers n'étant que des fichiers particuliers) :
* divisés en 3 parties : propriétaire, groupe propriétaire, reste du monde
* pour chaque partie, 3 droits possibles : lecture ( notée "r", correspond au 3ème bit de valeur 4), écriture (notée "w", correspond au 2ème bit, de valeur 2) et exécution ( notée "x", correspond au 1er bit, de valeur 1)
* il y a en fait une 4ème partie, qui correspond aux droits "spéciaux" : setuid ( notée "S", correspond au 3ème bit, valeur 4), setgid (notée "S" également, correspond au 2ème bit, valeur 2) et sticky-bit (notée "t", correspond au 1er bit, valeur 1)
Bien, maintenant à quoi ça sert tout ça :
* un fichier a les droits 644, ou autrement 110 100 100, ou encore rw- r-- r-- (en complet, avec les droits spéciaux, on noterai 0644, soit 000 110 100 100, ou --- rw- r-- r--) : le propriétaire peut lire et écrire ( "r" et "w" ), le groupe propriétaire et le reste du monde ne peuvent que lire ( "r" )
* un dossier avec des droits 755 = 111 101 101 = rwx r-x r-x : tout le monde peut lire et éxécuter, seul le propriétaire peut écrire.
Les subtilités :
* exécuter un fichier, bah c'est l'exécuter, s'il s'agit d'un script ou d'un binaire
* exécuter un dossier, c'est pouvoir "rentrer dedans". Quand tu fais cd mon_dossier, il faut que tu aies les droits d'exécution sur le dossier "mon_dossier" pour que la commande "cd" réussisse, c'est comme ça
* lire un fichier, ça me parait évident
* lire un dossier, c'est lister les fichiers qu'il contient ...
si tu as les droits d'exécution sur "mon_dossier" tu pourras faire "cd mon_dossier", par contre si tu n'as pas les droits de lecture sur "mon_dossier", la commande "ls mon_dossier" renverra une erreur ...
* le setuid, setgid sur un fichier exécutable (sur un non exécutable, je ne vois pas l'intérêt) permet de spécifier que lors de son exécution, ce programme conserve son propriétaire / groupe propriétaire. Sans cela, lorsque tu lances un programme alors que tu es identifié comme "toto", le programme tourne sous ton compte "toto", avec les droits de "toto", et ce, même si le propriétaire (au sens système de fichier) du programme est "root"
C'est grâce à cela que des commandes comme "passwd" peuvent fonctionner, et modifier le fichier /etc/shadow alors que c'est toi qui lance la commande ...
* le setuid / setgid sur un dossier, ça permet de spécifier que lorsque tu crées un sous dossier d'un dossier avec setuid / setgid, le propriétaire / groupe propriétaire du sous-dossier n'est pas toi, mais celui du dossier parent et ce paramétrage se conserve ...
* le sticky-bit sur un fichier n'a pas de sens (sauf si je dis des bêtises), sur un dossier, ça permet (exemple : /tmp) que même si tout le monde a tous les droits sur un dossier, que seul le propriétaire d'un fichier peut le supprimer, les autres ne pourront pas