Другое преимущество использования, visudo -f
как упомянуто в некоторых ответах, заключается в наличии соответствующей опции -c
или --check
проверки того, что у вас нет неверной информации в файле sudoers.d или в любом другом файле, который вы, возможно, захотите поместить в sudoers.d. Это действительно удобно в случаях, упомянутых с помощью автоматизированных инструментов, так как вы можете запустить, например,
sudo visudo -c -q -f /home/myuser/mysudoers && \
sudo chmod 600 /home/myuser/mysudoers && \
sudo cp /home/myuser/mysudoers /etc/sudoers.d/mysudoers
Это автоматически проверяет файл (нет вывода из-за -q) и только если это НЕ возвращает ошибку (выход 1 означает недопустимый файл sudoers), тогда он скопирует файл в sudoers.d, таким образом, вы можете создать файл и работать над этим без необходимости делать это правильно с первого раза (использование sudo visudo -f /etc/sudoers.d/myfile
должно быть успешным или оно отбрасывает содержимое, если вы не исправите это).
Также, предостережение относительно этих утверждений из других ответов.
По моему опыту, правила для файлов в этом каталоге более строгие, чем для / etc / sudoers. Это включает в себя:
Ошибки в файле не привели к сбою sudo. Тем не менее, файл был проигнорирован. Правила доступа кажутся менее строгими. Я разрешаю соответствующей группе прочитать файл. Я не верю, что это возможно с / etc / sudo.
Файлы в /etc/sudoers.d должны придерживаться того же синтаксиса, что и / etc / sudoers, потому что под прикрытием система просто объединяет все файлы с последним в «победе», если есть несколько записей для одного и того же особая обстановка.
Если права доступа к файлам в /etc/sudoers.d/ ужасно неверны (доступны для записи), то они игнорируются, возможно, именно из-за этого пропущены неверные файлы, в противном случае вы можете серьезно нарушить sudo
команду, имея недопустимые sudoers. D файл с правильными разрешениями.
Вы можете позволить файлам sudoers быть доступными для чтения всем, если вы случайно разрешите «другому» разрешение на запись, которое вам нужно sudo как другой пользователь или из корневого терминала, запустите эту команду. Это также может сломаться, если файл принадлежит кому-то, кроме root: root.
sudo chmod 644 /etc/sudoers.d/mysudoers
sudo chown root:root /etc/sudoers.d/mysudoers
Я только что подтвердил, что если я бегу, chmod o+w /etc/sudoers.d/vagrant
я больше не могу использовать sudo в качестве бродячего пользователя, он запрашивает у меня пароль и затем терпит неудачу.
Когда я запустил sudo -l
просмотр разрешений для примененной команды как другой действительный пользователь sudo, я также получил предупреждение о разрешениях для файлов. Это та же команда, которую я использовал, чтобы подтвердить, что «бродячий» пользователь потерял sudo, когда я применил o+w
разрешения к файлу, предоставив этому пользователю разрешения sudo.