2015-05-13 5 views
1

Документировано в many places, что бит setuid позволяет обычным пользователям запускать исполняемый файл с привилегиями владельца выполнения, а не его собственных.Как бит setuid фактически реализован в * nix?

Тем не менее, я не нашел места, где документируется реализация бита setuid.

Вот мои предположения.

  1. Когда команда из bash, это делает fork, а затем exec системный вызов.
  2. Управление переходит к ядру, и ядро ​​проверяет бит setuid на аргумент exec.
  3. Если ядро ​​видит, что бит установлен, тогда он начнет устанавливать euid нового процесса владельцу файла, а затем запустит новый процесс.
  4. Процесс обычно выходит с привилегиями владельца файла.
  5. Первоначальный процесс bash никогда не получал привилегии root.

Насколько это практически реализовано на практике или это другой набор шагов?

+2

Да, это правильно. Прочитайте [execve (2)] (http://man7.org/linux/man-pages/man2/execve.2.html) –

+0

@BasileStarynkevitch, Спасибо за ссылку. Я только посмотрел на страницу man для 'exec'. – merlin2011

ответ

Смежные вопросы