До сих пор в нашем файле sudoers было две строки, так как systemctl
иногда в /usr/bin
а иногда в /bin
(в зависимости от дистрибутива linux):
foo ALL = NOPASSWD: /usr/bin/systemctl restart foo.service
foo ALL = NOPASSWD: /bin/systemctl restart foo.service
Есть ли способ записать это в одну строку?
В файле sudoers можно указать несколько команд, разделив их запятыми. Для вашего примера с systemctl строка будет
foo ALL = NOPASSWD: /usr/bin/systemctl restart foo.service, /bin/systemctl restart foo.service
Достаточно написать эту строку sudo:
foo ALL = NOPASSWD: /bin/systemctl restart foo.service
По словам разработчиков systemd, правильное расположение: /usr/bin/systemctl
, но по умолчанию Debian / Ubuntu не следует этому "usr-merge".
К счастью, дистрибутивы, которые выполнили usr-merge, предоставляют символические ссылки.
Это означает /bin/systemctl
работает на всех дистрибутивах.
Связанный: https://askubuntu.com/questions/1164035/why-bin-systemctl