LINUX.ORG.RU

Upstart, запуск задач из под другого пользователя


0

1

Почему то они до сих пор не реализовали простого решения для этого, кажется задумывалось что будет специальная станза user, но пока нет, мануал предлагает использовать костыли.
Если делать как они советуют,

script
/bin/su username -c "command and args"
end script
то в фоне висят с правами рута два процесса:
/bin/sh -e -c /bin/su username -c "command and args"
/bin/su username -c "command and args"
Если использовать такой вариант
exec /usr/bin/sudo -u username command and args
то в фоне висит процесс /usr/bin/sudo -u username command and args тоже от рута.

Но сама задача запускается и работает нормально, но вот эти лишние висящие процессы с правами рута как то неуместны. Как лучше сделать?

Не используй костили - кто застявляет-то?

Как лучше сделать?

«Задача» должна сама уметь дропать рутовые привилегии до привилегий указанного юзера/группы.

Led ★★★☆☆
()

Вам шашечки или ехать?

Присутствие в списке вышеописаных процессов не подходит по эстетическим соображениям или как?

Намекаю:

sudo -u <who> -b <bla-bla-bla>
-b - должно Вам помочь, если я не ошибаюсь

dhameoelin ★★★★★
()
Ответ на: гм от dhameoelin

A upstart не любит когда процесс уходит в background. В таком случае он просто теряет этот процесс и не может его контролировать, например уже не получится завершить процесс командой sudo stop myservicename. Есть специальный параметр expect daemon для такого случая, но он почему то с некоторыми программами не работает. Но попробую вечером всё таки с sudo -b.

firestarter ★★★☆
() автор топика
Ответ на: комментарий от Led

>Исходники «большиства программ» открыты

Большинства программ для GNU/Linux.
То есть ты хочешь сказать что чтобы полноценно пользоваться этой операционной системой, нужно быть программистом и изучить десятки языков программирования (кстати, в данном случае программа на ocaml)? Ну-ну, желаю удачи в захвате десктопов этой системой. [trollface.png]

firestarter ★★★☆
() автор топика
Ответ на: комментарий от Led

Ок. А вы задротствуйте тут дальше со своими исходниками.

firestarter ★★★☆
() автор топика
19 июня 2011 г.

Нашёл для себя setuidgid из пакета daemontools.

Использование в upstart такое:
exec /usr/bin/setuidgid username command and args

Никаких лишних процессов от рута в фоне теперь не висят, задача запускается от указанного пользователя.

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