1
Документировано в many places, что бит setuid
позволяет обычным пользователям запускать исполняемый файл с привилегиями владельца выполнения, а не его собственных.Как бит setuid фактически реализован в * nix?
Тем не менее, я не нашел места, где документируется реализация бита setuid
.
Вот мои предположения.
- Когда команда из
bash
, это делаетfork
, а затемexec
системный вызов. - Управление переходит к ядру, и ядро проверяет бит
setuid
на аргументexec
. - Если ядро видит, что бит установлен, тогда он начнет устанавливать
euid
нового процесса владельцу файла, а затем запустит новый процесс. - Процесс обычно выходит с привилегиями владельца файла.
- Первоначальный процесс
bash
никогда не получал привилегии root.
Насколько это практически реализовано на практике или это другой набор шагов?
Да, это правильно. Прочитайте [execve (2)] (http://man7.org/linux/man-pages/man2/execve.2.html) –
@BasileStarynkevitch, Спасибо за ссылку. Я только посмотрел на страницу man для 'exec'. – merlin2011