Question

Donc si je crée un programme suid root sur mon mac, et que ce programme exécute exec sur / bin / sh, le shell n'est pas root alors que si je fais la même chose sous Linux, le shell est root.Mac ne propage-t-il pas les autorisations de la même manière que Linux?Ou y a-t-il juste quelque chose de différent avec les bits suid?Ma compréhension est que les programmes avec suid root fonctionnent avec les privilèges root.Et puisqu'un shell racine qui appelle / bin / sh créera un autre shell racine, un programme racine suid qui appelle exec sur / bin / sh ne devrait-il pas créer un shell racine?

Était-ce utile?

La solution

Tous les processus ont plusieurs UID (l'UID réel, effectif et enregistré, au minimum).L'exécution d'un binaire setuid n'affecte que les UID effectifs et enregistrés, pas le "vrai" UID - par conséquent, un binaire setuid "saura" de quel UID il a été exécuté et peut retourner à cet UID.Dans ce cas, l'implémentation bash de /bin/sh retourne automatiquement à son UID réel lors de son exécution.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top