Форум сайта python.su
1
Коллеги, приветствую,
Не так дано пишу на питоне, возникла необходимость написать демона.
Написал, даже работает
но есть один вопрос:
Демон как и положено запускается от root. Создаю файл /var/run/daemon.pid. Далее в процессе демонизации для обеспечения безопасности системы меняю uid и gid процесса демона на обычного юзера.
Все здорово, пока не приходится останавливать демона.
При остановке возникает проблема с удалением pid файла так как он находится в директории /var/run, которая принадлежит root и удалять файлы там может только он, а демон в этот момент работает уже от обычного пользователя. Смена владельца и прав на сам pid-файл, как и ожидалось результата не дает.
Подскажите пожалуйста как обойти данную проблему? Ведь очень много демонов работает от nobody:nobody и таких проблем нет.
P.S. Код пока не стал выкладывать, так как вопрос более теоретический. Если будет нужно - выложу.
Заранее спасибо!
Офлайн
857
Создай не файл, а файл в директории. На директорию можешь поставить права уже (группа владельцев ставится и пользователь в неё добавляется).
[guest@localhost ~]$ ll -d /var/run/postgresql/
drwxr-xr-x. 2 postgres postgres 40 авг 4 08:11 /var/run/postgresql/
[guest@localhost ~]$
[guest@localhost ~]$ ll -d /var/run/hplip/
drwxrwxr-x. 2 root lp 40 авг 4 08:11 /var/run/hplip/
[guest@localhost ~]$
Отредактировано py.user.next (Авг. 4, 2018 00:48:23)
Офлайн
1
Спасибо за совет. Теперь работает как нужно.
Офлайн