Changer d’identité

Problème

Vous voulez que votre programme change d’identité.

Solution

Utilisez setuid().

Discussion

La fonction setuid() permet de changer l’identité d’utilisateur effectif à savoir l’identité qui donne ses permissions au programme en cours d’exécution. Pour un programme lancé par un utilisateur quelconque (identifiant non nul), il est impossible de changer d’identité, sauf si le programme a le bit Set-UID positionné. Dans ce cas, l’identifiant de l’utilisateur effectif correspond au propriétaire du programme alors que l’identifiant de l’utilisateur réel est celui utilisé pour lancer le programme. Dans ce cas, l’identifiant d’utilisateur effectif pourra devenir égal à celui de l’identifiant réel avec setuid(), ce qui correspond au changement d’identité voulu. Étant donné qu’une sauvegarde de l’identifiant effectif est assurée par le système, vous pouvez revenir en arrière.

Lorsque le possesseur du fichier est l’administrateur système (identifiant nul), que le bit Set-UID est positionné, et qu’un utilisateur exécute le programme, l’identifiant d’utilisateur effectif est nul, indiquant que le programme dispose des droits administrateur. Un appel à setuid() permet donc de prendre alors n’importe quelle identité. Par contre, par respect...

Pour consulter la suite, découvrez le livre suivant :
couv_EI3CACT.png
60-signet.svg
En version papier
20-ecran_lettre.svg
En version numérique
41-logo_abonnement.svg
En illimité avec l'abonnement ENI
130-boutique.svg
Sur la boutique officielle ENI
Précédent
Connaître l'utilisateur qui a lancé le programme
Suivant
Introduction