Comment les autorisations se propagent-elles sous Mac OS X?
-
28-10-2019 - |
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?
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.