Запустив новую установку сервера Ubuntu 16.04.1, я попытался добавить файл в /etc/sudoers.d/, чтобы дать одно привилегии пользователя для определенной команды.
Я добавил файл /etc/sudoers.d/servicetest с следующий контент:
servicetest ALL = (root) NOPASSWD: /bin/systemctl status *
Файл /etc/sudoers оставлен нетронутым. Он содержит #includedir /etc/sudoers.d в качестве последней строки. Эта установка, к сожалению, не работает, при выполнении соответствующей команды с sudo в качестве пользователя servicetest меня все еще спрашивают пароль. Однако, если я перемещаю содержимое файла /etc/sudoers.d/servicetest до конца /etc/sudoers, все работает как ожидалось.
В чем может быть причина этой проблемы? Как я могу получить файлы в /etc/sudoers.d/?
По-видимому, файлы, включенные в файл /etc/sudoers, должны иметь разрешения 0440 по соображениям безопасности. Таким образом, только root может отредактировать файл, и только владелец и члены группы владельца могут его прочитать, что делает его менее вероятным, что файл будет использоваться как попытка эскалации привилегий.
Вы можете проверить требования к включенному файлу на /etc/sudoers.d/README, но два других требования состоят в том, что имя файла не должно начинаться с . (скрытых файлов) или заканчиваться ~ (соглашение для файлов резервных копий).
Кредиты @steeldriver для подтверждения теории и поиска файла /etc/sudoers.d/README!