LINUX.ORG.RU

Как правильно запускать от рута юзерский скрипт.

 , , setpriv,


0

2

Есть скрипт, который изначально выполняется от рута (кроном). В этом скрипте я хочу запустить другой скрипт, который должен выполняться от обычного юзера. Раньше я юзал su и не заморачивался, но сегодня я случайно прочитал man su и теперь не уверен, что правильно использовать: su, runuser или setpriv.

man su: su is mostly designed for unprivileged users, the recommended solution for privileged users (e.g. scripts executed by root) is to use non-set-user-ID command runuser(1) that does not require authentication and provide separate PAM configuration. If the PAM session is not required at all then the recommend solution is to use command setpriv(1).

Я не понимаю, нужна ли мне PAM-сессия, поэтому не понимаю, что выбрать. Помимо прочего я хочу, чтобы $PATH был юзерский, а не рутовый. Например

su --shell=/usr/bin/bash --login lego /home/lego/bin/lego-renew.sh

отрабатывает нормально.

Если я пишу

runuser --user lego /home/lego/bin/lego-renew.sh

скрипт не работает, т.к. $PATH похоже не инициализируется как положено.

runuser --login --shell /usr/bin/bash lego /home/lego/bin/lego-renew.sh

вроде как работает нормально, но я всё равно не понимаю, какую команду лучше использовать.

Как setpriv использовать я вообще не понял.

setpriv --reuid lego /usr/bin/bash --login -c /home/lego/bin/lego-renew.sh

не сработало, $PATH не инициализировался как положено, а ещё скрипт запустился с рутовой группой, в общем какая-то опасная команда.

В общем вопрос - как правильно это всё сделать, чтобы не допустить какой-нибудь уязвимости.

★★★★★

Последнее исправление: Legioner (всего исправлений: 2)

Кмк, лучше всего с задачей «как правильно запускать от рута юзерский скрипт» справится systemd.

vvn_black ★★★★★
()
Ответ на: комментарий от vvn_black

Мне нужно ещё кое-что делать от рута помимо запуска этого скрипта.

Legioner ★★★★★
() автор топика

runuser с -l для этого и придуман

anonymous
()
Ответ на: комментарий от BackDoorLover

В скрипте пути не абсолютные. Ну и вообще я не хочу, чтобы какие-то environment-ы от root-а просачивались юзеру, не для того я пускаю его от отдельного пользователя же.

Legioner ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.