Я выполняю выскочку, и мне нужно запустить исполняемый файл от имени другого пользователя. Ничего такого фантастического, как в su
, нет, и ни один из смешанных контекстов SELinux, которые сопровождают его. Быстрый поиск в Интернете рекомендует runuser
вместо su
для этой задачи, но runuser
нигде нет в Ubuntu 13.10.
Должен ли я использовать su
в Ubuntu - будет ли он достаточно умен, чтобы избежать полной авторизации? Будет ли полученное задание переносимым на другие дистрибутивы, или я столкнусь с проблемами SELinux?
В конечном счете, как лучше всего поменять пользователей в работе с выскочкой?
Обновление
Очевидно, upstart> = 1.4 поддерживает setuid
и setgid
, но они ограничены в том, что они влияют на все сценарии pre - * / post- * задания, а не только на основной скрипт / exec , Было бы неплохо иметь способ правильно перейти к другому пользователю для одной команды. Я рассмотрел использование stop-start-daemon
, но он слишком сильно совпадает с выскочкой и, вероятно, приведет к странному поведению expect
.
Существует сообщение об ошибке относительно этой проблемы.
Предложенное обходное ограничение заключается в создании отдельных заданий для обработки условий до и после выполнения при выполнении от имени пользователя root. Вам необходимо правильно настроить условия запуска / остановки: задание, эмулирующее предварительную строфу (pre-job.conf), должно запускаться при условиях, определенных в настоящее время для вашей работы (main-job.conf), ваша текущая работа должна будет выполняться до -job запущен, работа, эмулирующая post-stanza (post-job.conf), должна начаться при остановленном main-job.