LINUX.ORG.RU

История изменений

Исправление KennyMinigun, (текущая версия) :

Помимо u,g,o у файлов также есть атрибут «setuid» (ну и соотв. «setgid»). Они выставляют EUID равный владельцу (и/или группе) файла при запуске (не работает на скриптах).

Так вот, все бинарники типа sudo, su, login принадлежат root и имеют setuid. Т.е. они с самого начала запускаются от root (EUID=0) и потом просто запрашивают у остальных компонентов аутентификацию. Если последняя проходит успешно — происходит exec*() с EUID=0, если нет — программа (т.е. напр. sudo) аварийно завершается.

Исправление KennyMinigun, :

Помимо u,g,o у файлов также есть атрибут «setuid» (ну и соотв. «setgid»). Они выставляют EUID равный владельцу (и/или группе) файла при запуске (не работает на скриптах).

Так вот, все бинарники типа sudo, su, login принадлежат root и имеет setuid. Т.е. они с самого начала запускаются от root (EUID=0) и потом просто запрашивают у остальных компонентов аутентификацию. Если последняя проходит успешно — происходит exec*() с EUID=0, если нет — программа (т.е. напр. sudo) аварийно завершается.

Исходная версия KennyMinigun, :

Помимо u,g,o у файлов также есть атрибут «setuid» (ну и соотв. «service»). Они выставляют EUID равный владельцу (и/или группе) файла при запуске (не работает на скриптах).

Так вот, все бинарники типа sudo, su, login принадлежат root и имеет setuid. Т.е. они с самого начала запускаются от root (EUID=0) и потом просто запрашивают у остальных компонентов аутентификацию. Если последняя проходит успешно — происходит exec*() с EUID=0, если нет — программа (т.е. напр. sudo) аварийно завершается.