1

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

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

sudo: effective uid is not 0, is /usr/bin/sudo on a file system with
the 'nosuid' option set or an NFS file system without root privileges?0

Это файл модуля для сервиса, это скрипт и в sudoers я добавил

user ALL = (root) NOPASSWD: /path/to/script

Понятия не имею почему. Sudo работает нормально, и разрешения для /usr/bin и /usr/bin/sudo правильные.

1 ответ1

2

Вы установили NoNewPrivileges=true в файле модуля

Из документации:

Если это правда, гарантирует, что процесс обслуживания и все его дочерние элементы никогда не смогут получить новые привилегии. Эта опция является более мощной, чем соответствующие флаги безопасных битов (см. Выше), так как она также запрещает любые изменения UID. Это самый простой и эффективный способ гарантировать, что процесс и его дочерние элементы никогда не смогут снова повышать привилегии.

Следовательно, sudo не получит привилегии root, даже если в исполняемом файле установлен бит suid.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .