Мне нужен инструмент, который запускался бы от имени root, отбрасывал бы root, переключившись на другого пользователя, а затем выполнял бы другую программу, указанную аргументом (ами) командной строки. Пример использования: запустить что-нибудь из (настраиваемых) сценариев инициализации от имени непривилегированного пользователя.
Я не хочу использовать su
или sudo
, потому что они служат другой цели (предоставляют интерактивный способ получения root-прав для непривилегированных пользователей), намного сложнее, чем необходимо для этой задачи измените поведение в зависимости от различных файлов конфигурации и запишите данные в системный журнал.
Есть ли такой инструмент?
Обновление: Я нашел ответ, похороненный глубоко в stackoverflow : это setuidgid
от daemontools (или s6- setuidgid
из s6). Очевидно, у автора (ов) daemontools были некоторые причины не использовать su
также для запуска демонов.
Единственный недостаток заключается в том, что setuidgid
продолжает работать вместе с запущенной программой. В идеале я бы предпочел exec
вместо spawn
/ fork
, чтобы таблица процессов была более чистой, но это не такая уж большая проблема.
runuser
используется для этой цели и обычно запускается из сценариев инициализации.
Это в основном su
без интеграции PAM.