Lorsque vous exécutez un fichier exécutable sous Linux, il s’exécute généralement avec l’ID d’utilisateur et de groupe actuel. Cependant, il y a des moments où vous devez exécuter ce fichier en tant qu’autre utilisateur (comme root). Au lieu de changer de 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 expliquerons comment setuid fonctionne et comment il permet aux utilisateurs d’exécuter des exécutables/binaires avec des privilèges accrus.

Comment setuid fonctionne-t-il ?

Setuid signifie SET User ID on execution. Disons que nous avons un exécutable appelé identity créé par l’utilisateur root. Lorsque vous l’exécutez, il s’exécutera avec votre ID d’utilisateur, votre ID de groupe et vos privilèges d’utilisateur. Si le bit setuid est défini sur le identity, lorsque vous l’exécutez, il sera exécuté en tant qu’utilisateur root et avec ses privilèges d’utilisateur.

A titre d’illustration, nous pouvons vérifier la propriété du identity d’abord et vérifiez qu’il appartient à l’utilisateur root. La chaîne d’autorisation affiche également les bits exécutables (x) définis pour l’utilisateur, le groupe et les autres.

Utilisateur john1 exécute le identity, qui devient un processus à l’exécution. Comme indiqué dans la liste des processus, le processus est créé et exécuté sous le john1nom et identifiant d’utilisateur.

Ensuite, en tant qu’utilisateur root, nous définissons le bit setuid du identity:

u indique que setuid bit (+s) doit être défini uniquement pour l’utilisateur.

Ensemble d'identité Setuid

Pour le propriétaire, dans la partie exécutable de la chaîne d’autorisation, 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 du chmod peut également être utilisé comme indiqué ci-dessous.

L’ajout de 4 dans la chaîne d’autorisation numérique indique l’inclusion du bit setuid.

Voici ce qui se passe lorsque john1 exécute le identity encore. En regardant la liste des processus en cours, nous pouvons maintenant voir que le processus est créé et exécuté par le root à la place de john1.

Setuid John Ids Propriétaire

Utilisation importante du bit setuid

La plupart du temps, des experts vous diront que vous ne devez pas exécuter d’applications en tant qu’utilisateur root. Cependant, il existe des cas où certains fichiers doivent être exécutés avec l’autorisation root. Par exemple, le 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 d’un utilisateur sont stockées dans /etc/passwd et /etc/shadows, qui ne peut être modifié que par root. Lorsque john1 tente de changer le mot de passe pour lui-même, il devra avoir l’autorisation de modifier les informations dans les deux fichiers susmentionnés. Avoir le bit setuid activé passwd permet john1 pour avoir temporairement les autorisations root pour changer le mot de passe de l’utilisateur et également mettre à jour les informations dans les deux fichiers.

Risque de sécurité Setuid

Si vous ne faites pas attention, un attaquant peut exploiter les binaires setuid pour contrôler votre système. Les utilisateurs ne devraient normalement pas avoir installé de programmes setuid, en particulier setuid pour des utilisateurs autres qu’eux-mêmes. Plus important encore, vous ne devriez pas avoir de binaire activé par setuid pour l’utilisateur root dans votre dossier Home. 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 setgid bit peut également être défini, ce qui permet à tous les membres d’un groupe d’exécuter un exécutable avec des autorisations de propriétaire.

Notez que setuid et setgid Les bits sont sensibles à la sécurité et ne doivent être utilisés que par des administrateurs système qualifiés.

Read next:

  • Comment utiliser Sticky Bit pour gérer des fichiers sur des répertoires partagés sous Linux
  • Comment faire des vérifications orthographiques dans le terminal Linux
  • Utilisation des commandes find, locate, which et whereis pour rechercher des fichiers sous Linux
Previous articleComment monter et accéder à la partition Ext4 sur Mac
Next articleComment vérifier la température du processeur sous Windows 10 et Windows 11