Как распространяются разрешения в Mac OS X? - PullRequest
1 голос
/ 11 сентября 2011

Так что, если я создаю программу suid root на моем mac и эта программа запускает exec для / bin / sh, оболочка не является root, тогда как если я делаю то же самое в Linux, оболочка становится root.Разве Mac не распространяет разрешения так же, как Linux?Или с битами suid происходит нечто иное?Насколько я понимаю, программы с suid root запускаются с привилегиями root.И поскольку корневая оболочка, которая вызывает / bin / sh, создаст другую корневую оболочку, не должна ли программа suid root, которая вызывает exec для / bin / sh, создать корневую оболочку?

1 Ответ

0 голосов
/ 11 сентября 2011

Все процессы имеют несколько UID (реальный, эффективный и сохраненный UID, как минимум). Выполнение двоичного файла setuid влияет только на эффективный и сохраненный UID, а не на «реальный» UID - в результате двоичный файл setuid будет «знать», с какого UID он был выполнен, и может вернуться к этому UID. В этом случае реализация bash /bin/sh автоматически возвращается к своему реальному UID при выполнении.

...