Linux : Permissions
Setuid / Setgid, sticky bit
La définition la plus simple de ces 3 choses:
- setuid : Un bit dans les permissions qui fait qu'un exécutable sera lancé avec les privilèges de son propriétaire
- setgid : même chose mais avec les privilèges de son groupe
- sticky bit : un bit sur les répertoires qui permet seulement au proprio d'effacer les sous-fichiers / sous-dossiers
Setuid / setgid
Setuid et setgid peuvent être utiles pour donner à quelqu'un les droits de lancer un programme en particulier sans lui donner les droits sudo, par exemple. Sans eux, lorsque un processus est lancé, il prend les droits de l'utilisateur qui le lance (logique...). Cependant on peut vouloir qu'un utilisateur puisse lancer un programme avec plus de droits que d'habitude; un cas classique est la commande passwd. Celle-ci requiert de modifier /etc/shadow, qui appartient à root; cependant on veut que les utilisateurs puissent changer leur propre password.
Comparons les droits de passwd avec ceux de ls pour comprendre:
-rwxr-xr-x 1 root root 137744 1 nov. 13:44 /bin/ls -rwsr-xr-x 1 root root 51544 5 janv. 11:33 /bin/passwd
Ici, quand on regarde les permissions de passwd, le "s" signifie que le setuid est activé.
Pour le setgid, c'est aussi un s, mais au niveau du groupe, du coup:
-rwxr-sr-x 1 root tty 22544 4 août 13:32 /usr/bin/wall
Ajouter le setuid / setgid
- Pour le setuid:
chmod u+s monsuperprogramme.sh
- En octal, il faut ajouter un "4" devant les permissions normales. Pour des perms. 755, ça donne donc:
chmod 4775 monsuperprogramme.sh
- Pour le setgid:
chmod g+s monsuperprogramme.sh
- En octal, c'est comme pour le setuid mais avec un 2 à la place du 4:
chmod 2775 monsuperprogramme.sh
Vérifier le setuid / setgid
Dans un ls -la, le setuid apparait sous la forme d'un s à la place du x au niveau des droits user. Dans un ls -la, le setgid apparait sous la forme d'un s à la place du x au niveau des droits groupe.
Sticky bit
Le sticky bit sert à restreindre les personnes pouvant supprimer des fichiers dans un dossier. Il peut être nommé "restricted deletion flag". Le /tmp est un bon exemple: tous les utilisateurs peuvent créer des fichiers dans le tmp; mais on ne peut pas supprimer les fichiers des autres, malgré les permissions très ouvertes de celui-ci (drwxrwxrwt - le t correspond au sticky bit).
Ajouter le sticky bit
On peut ajouter le sticky bit avec:
chmod +t /mondossier
Ou en octal, en ajoutant "1" devant les permissions normales du dossier. Par exemple avec des permissions en 755:
chmod 1775 /mondossier
Vérifier le sticky bit
Dans un ls -la, le sticky bit apparaît sous la forme d'un "t" dans les permissions.