У меня есть сервис в виде приложения node.js, настроенного с помощью Systemd на Raspbian Jessie, и он использует свою собственную учетную запись пользователя. Тем не менее, я обнаружил, что служба работает неправильно, потому что у нее нет необходимых разрешений. Один из установленных мной узловых модулей требует root-доступа. Если я запускаю приложение вручную с помощью sudo, все работает нормально.
Есть ли способ сообщить systemd запустить службу с помощью sudo?
systemd
запускает файлы модулей с правами root.Ответы:
sudo
не имеет к этому никакого отношения.Обычно вы указываете systemd запускать службу в качестве определенного пользователя / группы с помощью директивы
User=
andGroup=
в[Service]
разделе файла модуля.Установите их как root (или удалите их, так как запуск от имени root используется по умолчанию).
источник
User=root
. Смотри мой ответ.Чтобы очистить,
systemd
системные службы по умолчанию запускаются от имени пользователя root, но между поведением по умолчанию и использованием системной службы все еще существует разницаUser=root
.Как описано в переменных среды в порожденных процессах , эти переменные устанавливаются только в том случае, если
User=
установлено:Я проверил, чтобы подтвердить этот вывод. Поэтому, если вы хотите запустить службу systemd от имени пользователя root, которому требуется одна из перечисленных выше переменных, вам необходимо установить
User=root
.источник
временное решение, но заставило его работать в крайнем случае:
Может работать с пользователем, имеющим права sudo в системном файле systemd, например:
источник
sudo
немного замедлит запуск. И это не нужно.Запустите его как системный пользователь, в этом случае по умолчанию служба работает от имени пользователя root.
источник