LINUX.ORG.RU

Нормальный systemd .service файл для forking типа

 


0

1

рассмотрим для примера chronyd, не давая (на этот раз) оценку с использованием обсценной лексики авторам за хардкор uid прямо в код.
chronyd хочет запускаться от root, после чего понижать привилегии до чего-то, что по дефолту uid=112
от нового пользователя хочет создавать /run/chrony и писать туда всякое.
проблема в том, что в случае

ProtectSystem: "full"
RuntimeDirectory: "chrony"
/run/chrony принадлежит пользователю root и мы не можем указать пользователя в .service файле, chronyd, как уже сказано, хочет для запуска рута или прекращает работу.
как мы будем решать такого рода проблемы?
писать патчи или создавать issue не рассматриваем.

Ответ на: комментарий от system-root

А, пардон, не +, а !.

If the executable path is prefixed with «+» then the process is executed with full privileges.

Similar to the «+» character discussed above this permits invoking command lines with elevated privileges. However, unlike «+» the "!" character exclusively alters the effect of User=, Group= and SupplementaryGroups=, i.e. only the stanzas that affect user and group credentials.

Короче, + пускает процесс от рута и без любых ограничений, а ! — просто от рута (но с прочими ограничениями типа ProtectSystem=). Синтаксис, конечно, отпад.

intelfx ★★★★★
()
Последнее исправление: intelfx (всего исправлений: 4)

Пользуйся openrc или просто пиши пути запуска своего сервиса в rc.local. Потому как systemd — никчемное дерьмище. И оно в конце-концов сдохнет.

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