Другое преимущество использования 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.