Comment Setuid Permet aux Utilisateurs d'Exécuter des Fichiers avec des Privilèges Élevés

Lorsque vous exécutez un fichier exécutable sous Linux, il s’exécute généralement avec l’ID utilisateur et l’ID de groupe actuels. Cependant, il y a des moments où vous devez exécuter ce fichier en tant qu’autre utilisateur (comme root). Au lieu de changer votre compte utilisateur, vous pouvez utiliser setuid pour exécuter l’exécutable en tant que propriétaire du fichier et non en tant qu’utilisateur actuel. Ici, nous allons expliquer comment fonctionne setuid et comment il permet aux utilisateurs d’exécuter des exécutables/binaires avec des privilèges élevés.
Comment fonctionne setuid ?
Setuid signifie SET User ID lors de l’exécution. Supposons que nous ayons un exécutable appelé “identity” créé par l’utilisateur root. Lorsque vous l’exécutez, il s’exécute avec votre ID utilisateur, ID de groupe et privilèges utilisateur. Si le bit setuid est défini sur le fichier “identity”, lorsque vous l’exécutez, il sera exécuté en tant qu’utilisateur root et avec ses privilèges utilisateur.
À titre d’illustration, nous pouvons d’abord vérifier la propriété du fichier “identity” et vérifier qu’il est possédé par l’utilisateur root. La chaîne de permissions montre également les bits exécutables (x) définis pour l’utilisateur, le groupe et les autres.
L’utilisateur “john1” exécute le fichier “identity”, qui devient un processus lors de l’exécution. Comme le montre la liste des processus, le processus est créé et exécuté sous le nom d’utilisateur et l’ID utilisateur “john1”.

Ensuite, en tant qu’utilisateur root, nous définissons le bit setuid du fichier “identity” :
chmod u+s /usr/bin/identity“u” indique que le bit setuid (+s) doit être défini uniquement pour l’utilisateur.
Pour le propriétaire, dans la partie exécutable de la chaîne de permissions, nous pouvons voir que “x” a été remplacé par “s”. Chaque fois que vous rencontrez “s” pour un exécutable, cela signifie que le bit setuid a été défini dessus.
La variante numérique de la commande chmod peut également être utilisée comme montré ci-dessous.
chmod4755/usr/bin/identityL’ajout de 4 dans la chaîne de permissions numériques indique l’inclusion du bit setuid.
Voici ce qui se passe lorsque “john1” exécute à nouveau le fichier “identity”. En regardant la liste des processus en cours d’exécution, nous pouvons maintenant voir que le processus est créé et exécuté par l’utilisateur “root” au lieu de “john1”.

Utilisation importante du bit setuid
La plupart du temps, vous entendrez des experts dire que vous ne devriez pas exécuter d’applications en tant qu’utilisateur root. Cependant, il existe des cas où certains fichiers doivent être exécutés avec les permissions root. Par exemple, l’utilitaire passwd qui est installé par défaut sur les systèmes Linux a le bit setuid défini dessus.
La raison est simple : Les informations de mot de passe pour un utilisateur sont stockées dans les fichiers “/etc/passwd” et “/etc/shadow”, qui ne peuvent être modifiés que par “root”. Lorsque “john1” tente de changer son mot de passe, il devra avoir la permission de modifier les informations dans les deux fichiers mentionnés ci-dessus. Avoir le bit setuid défini sur passwd permet à “john1” d’avoir temporairement des permissions root pour changer le mot de passe utilisateur et également mettre à jour les informations dans les deux fichiers.
Risque de sécurité de setuid
Si vous n’êtes pas prudent, un attaquant peut exploiter les binaires setuid pour contrôler votre système. Les utilisateurs ne devraient normalement pas avoir de programmes setuid installés, en particulier setuid pour des utilisateurs autres qu’eux-mêmes. Plus important encore, vous ne devriez avoir aucun binaire setuid activé pour l’utilisateur root dans votre dossier personnel. Ce sont généralement des chevaux de Troie ou des logiciels malveillants.
Conclusion
Setuid ne peut être défini que sur des fichiers exécutables. De même, le bit setgid peut également être défini, ce qui permet à tous les membres d’un groupe d’exécuter un exécutable avec les permissions du propriétaire.
Notez que les bits setuid et setgid sont sensibles à la sécurité et doivent être utilisés uniquement par des administrateurs système qualifiés.
Lire ensuite :
- Comment utiliser le bit Sticky pour gérer des fichiers dans des répertoires partagés sous Linux
- Comment effectuer des vérifications orthographiques dans le terminal Linux
- Utilisation des commandes find, locate, which et whereis pour rechercher des fichiers sous Linux