SUID et SGID sous Linux expliqués avec des exemples
On octobre 1, 2021 by adminImaginez une situation où vous avez un script ou un fichier exécutable qui doit toujours être exécuté par un utilisateur particulier, simplement parce que cet utilisateur a les droits d’accès appropriés pour les actions prises par le script. Aussi, vous souhaitez que d’autres utilisateurs puissent exécuter ce script, mais en fin de compte, cela doit être exécuté par l’utilisateur d’origine du script(car cet utilisateur a seulement les ensembles de permissions nécessaires pour les actions prises).
Par défaut, les applications et les programmes Linux s’exécutent avec les mêmes permissions exactes de l’utilisateur qui l’exécute. En raison de cette raison, nous avons besoin d’une bonne solution pour la situation mentionnée ci-dessus (ie : Tous les utilisateurs devraient être en mesure d’exécuter un programme appartenant à un utilisateur particulier comme si le propriétaire lui-même l’a exécuté).
C’est là que SUID entre en scène. SUID n’est rien d’autre qu’un bit de permission spécial disponible dans Linux, qui réalise cela avec beaucoup de facilité.
Si vous êtes le propriétaire d’un fichier exécutable, avec l’aide de la permission SUID définie, les autres utilisateurs exécuteront l’exécutable avec votre permission et non la leur.
SUID est normalement utilisé dans Linux, pour fournir des privilèges élevés temporairement pendant l’exécution. Cette élévation de privilèges n’est pas du tout permanente. C’est une élévation temporaire uniquement lorsque le programme/script est en cours d’exécution.
Exemples de fichiers exécutables dans Linux ayant le bit de permission SUID activé
Comprenons cela en considérant un exemple. De la liste des exécutables ci-dessus,/usr/bin/passwd est quelque chose qui devrait être exécutable par tous les utilisateurs du système(c’est parce que tous les utilisateurs devraient être en mesure de changer leur propre mot de passe). Si vous ne savez pas comment les mots de passe fonctionnent sous linux, je vous recommande de lire l’article ci-dessous.
Lire : Comment fonctionnent les mots de passe dans Linux
La mise à jour du mot de passe d’un utilisateur nécessite que l’utilisateur modifie le fichier /etc/passwd, /etc/shadow dans linux. Cependant, cela n’est autorisé que pour l’utilisateur root. C’est la raison pour laquelle le bit SUID est appliqué sur le fichier /usr/bin/passwd. Comme root est le propriétaire de ce fichier, et que SUID est appliqué à ce fichier, tout utilisateur exécutant la commande /usr/bin/passwd l’exécutera en tant qu’utilisateur root. Voyons cela de manière pratique.
Vous trouverez ci-dessous la commande passwd lancée par l’utilisateur nommé sarath. Voyons si ce processus de commande passwd est exécuté en tant qu’utilisateur root.
$ passwdChanging password for user sarath.Changing password for sarath.(current) UNIX password:
Ouvrons un autre terminal, et lançons ps aux commad et voyons si le processus de commande passwd est exécuté avec l’utilisateur root. Cela peut être fait comme indiqué ci-dessous.
$ ps aux | grep passwdroot 24531 0.0 0.0 156928 1664 pts/0 S+ 07:24 0:00 passwd
Vous pouvez clairement voir que le processus de commande passwd est exécuté avec l’utilisateur root (visible dans le premier champ de la sortie ci-dessus.). Semblable à la commande passwd, n’importe quelle commande de la liste précédemment montrée de fichiers appliqués SUID, sera toujours exécutée avec la permission du propriétaire du fichier, indépendamment de l’utilisateur qui l’exécute.
Notez également le fait que même la commande ping est SUID(Voir la liste initiale donnée ci-dessus), c’est parce que l’exécution de PING nécessite plusieurs opérations réseau, qui ne peuvent être exécutées que par root.
Comment configurer SUID sous Linux?
Configurer SUID sur vos fichiers/script requis est à une seule commande CHMOD.
$ chmod u+s /path/to/file/or/executable
Remplacez « /path/to/file/or/executable », dans la commande ci-dessus, par le chemin absolu du script sur lequel vous avez besoin du bit SUID. Ceci peut être réalisé en utilisant également la méthode numérique de chmod.
$ chmod 4755 /path/to/file/or/executable
Le premier « 4 » dans « 4755 » indique SUID. Un autre exemple de méthode numérique est présenté ci-dessous.
$ chmod 4750 /path/to/file/or/executable
Basiquement, dans la méthode numérique, il suffit de faire précéder 4 aux autres ensembles de permission qui sont nécessaires sur ce fichier.
Comment vérifier si SUID est appliqué sur un fichier ou non ?
Vous pouvez vérifier si le bit SUID est appliqué sur un fichier ou non en utilisant la commande ls comme indiqué ci-dessous.
root@ip-10-12-2-217:# cd /usr/binroot@ip-10-12-2-217:/usr/bin# ls -l passwd-rwsr-xr-x 1 root root 47032 Jul 15 2015 passwd
La commande ls -l devrait vous montrer si SUID est appliqué ou non. Il suffit de regarder le premier champ de la sortie de ls -l. Le s dans -rwsr-xr-x indique le bit SUID. Dans certains cas, vous verrez un S majuscule au lieu du petit s que nous avons vu ci-dessus. Le S majuscule indique qu’il n’y a pas de permission d’exécution appliquée à ce fichier/ script.
root@ip-10-12-2-217:/usr/bin# chmod -x passwdroot@ip-10-12-2-217:/usr/bin# ls -l passwd-rwSr--r-- 1 root root 47032 Jul 15 2015 passwd
Vous pouvez clairement voir dans la sortie ci-dessus que, la suppression de l’autorisation d’exécution du fichier /usr/bin/passwd a transformé la sortie de ls -l en un S majuscule. En ajoutant à nouveau l’autorisation d’exécution sur ce fichier, on obtient un petit s comme indiqué ci-dessous.
root@ip-10-12-2-217:/usr/bin# chmod +x passwdroot@ip-10-12-2-217:/usr/bin# ls -l passwd-rwsr-xr-x 1 root root 47032 Jul 15 2015 passwd
Comment trouver tous les fichiers, qui a le bit SUID activé dans linux?
Vous pouvez utiliser la commande find ci-dessous pour rechercher tous les fichiers dans le système qui a le bit SUID activé. Si vous êtes nouveau à la commande find, je vous recommande de lire l’article ci-dessous.
Lire : La commande find sous Linux avec des exemples
root@ip-10-12-2-217:~# find / -perm -4000 -exec ls -l {} \;
Remplacez le premier / dans la commande ci-dessus avec l’emplacement requis pour trouver tous les fichiers SUID dans cet emplacement. Par exemple, pour trouver tous les fichiers avec SUID à l’intérieur de /usr/bin, exécutez la commande ci-dessous.
Veuillez vous rappeler le fait que le bit SUID est ignoré sur les répertoires sous Linux.
SGID est très similaire à SUID. La seule différence est que le script/fichier ayant SGID configuré, s’exécutera avec la même permission du propriétaire du groupe.
Si vous configurez SGID sur des répertoires, tous les fichiers ou répertoires créés à l’intérieur de ce répertoire seront possédés par le même groupe commun(groupe propriétaire du répertoire où SGID est configuré).
Exemples de fichiers SGID sous linux
Comment configurer SGID sous Linux ?
Similaire à SUID, SGID peut être configuré en utilisant la commande chmod comme indiqué ci-dessous.
root@localhost:~# chmod g+s /path/to/file
Remplacez « /path/to/file », dans la commande ci-dessus, par le chemin absolu du script sur lequel vous avez besoin du bit SGID. Ceci peut être réalisé en utilisant la méthode numérique de chmod aussi bien(montré ci-dessous).
root@localhost:~# chmod 2755 /path/to/file
Comment vérifier si SGID est appliqué sur un fichier ou un script?
Similaire à SUID, vous pouvez facilement exécuter la commande ls -l sur un fichier/répertoire pour trouver si SGID est activé ou non. L’exemple ci-dessous montre la même chose.
root@ip-10-12-2-217:# cd /usr/binroot@ip-10-12-2-217:/usr/bin# ls -l chage-rwxr-sr-x 1 root shadow 54968 Jul 15 2015 chage
La petite partie s du premier champ dans la sortie about (-rwxr-sr-x) indique le bit SGID. Semblable à SUID, si vous n’avez pas la permission exécutable appliquée sur le groupe, il sera S majuscule au lieu de petit comme montré ci-dessous.
root@ip-10-12-2-217:/usr/bin# chmod g-x chageroot@ip-10-12-2-217:/usr/bin# ls -l chage-rwxr-Sr-x 1 root shadow 54968 Jul 15 2015 chage
Et l’activation de la permission exécutable sur le groupe, le rendra petit s (montré ci-dessous.)
root@ip-10-12-2-217:/usr/bin# chmod g+x chageroot@ip-10-12-2-217:/usr/bin# ls -l chage-rwxr-sr-x 1 root shadow 54968 Jul 15 2015 chage
.
Laisser un commentaire