Как лучше добавить NOPASSWD с бродячим пользователем?
Способ 1:
groupadd -r admin
usermod -a -G admin vagrant
cp /etc/sudoers /etc/sudoers.orig
sed -i -e '/Defaults\s\+env_reset/a Defaults\texempt_group=admin' /etc/sudoers
sed -i -e 's/%admin ALL=(ALL) ALL/%admin ALL=NOPASSWD:ALL/g' /etc/sudoers
Способ 2:
# Set up sudo
echo %vagrant ALL=NOPASSWD:ALL > /etc/sudoers.d/vagrant
chmod 0440 /etc/sudoers.d/vagrant
# Setup sudo to allow no-password sudo for "sudo"
usermod -a -G sudo vagrant
или, может быть, есть еще лучше?
sudoers
файлыВручную редактируя любой файл Вы создаете или изменяете, иногда предпочтительно для редактирования с echo ... >
или sed
- особенно sed
если Вы не являетесь чрезвычайно опытными с ним. Это вызвано тем, что это показывает Вам более ясно влияние Ваших изменений, и потому что, для файла Вы на самом деле не создаете (как sudoers
"Способом 1"), открытие файла в текстовом редакторе показывает Вам другое содержание файла, который мог бы быть релевантным. Необходимо обычно понимать текущую конфигурацию прежде, чем внести изменения в него и считать любой конфигурационный файл, который Вы редактируете, иногда полезно к тому концу.
Однако, что еще более важно, крошечная ошибка в редактировании /etc/sudoers
или любой файл в /etc/sudoers.d
делает sudo
откажитесь работать полностью, пока probem не фиксируется.
Для настольных систем Ubuntu, но не большинства систем сервера, существует относительно легкая фиксация для этого; иначе Вам, возможно, придется загрузиться к режиму восстановления или с живого CD/DVD/USB для решения проблемы того, чтобы быть заблокированным из способности выполнить любые административные действия.
Так или иначе необходимо использовать visudo
отредактировать /etc/sudoers
и любые файлы в /etc/sudoers.d
.
Для /etc/sudoers
: sudo visudo
Для файла в /etc/sudoers.d
названный vagrant
: sudo visudo /etc/sudoers.d/vagrant
visudo
сделал, чтобы Вы отредактировали временный файл и, после того как Вы вышли, проверяет Ваш синтаксис, чтобы гарантировать, что это корректно прежде, чем скопировать по временному файлу в реальный конфигурационный файл.
Из-за этого механизма, если Вы хотите использовать терминальные остроты вместо текстового редактора, необходимо смочь использовать visudo
в связи с sed
или некоторый механизм, подобный каналам (как tee
) отредактировать sudoers
файлы безопасно способом, сопоставимым с тем, что Вы использовали "Способом 1" и "Путем 2.
Возможно, кто-то еще отправит детализацию ответа, как сделать это; в противном случае затем в следующий раз, когда у меня есть доступ к машине, подходящей для такого тестирования, я могу попытаться понять это и развернуть этот ответ с примером. С другой стороны, использование sed
или echo
безопасно создать/изменить sudoers
и sudoers.d
конфигурацию можно было бы считать предметом отдельного вопроса. Это в особенности имеет место, если Ваш главный интерес здесь состоит в том, дать ли NOPASSWD sudo к корню питание непосредственно или через состав группы.
Основное различие между "Путем 1" и "Путем 2":
sudo
не будучи запрошенным пароль.Если Вы не хотите, чтобы все администраторы смогли к sudo к корню без пароля (по умолчанию, введение пароля требуется), "Путь 2" предпочтителен.
Однако любой пользователь, который Вы хотите смочь выполнить произвольные команды как корень, должен, вероятно, также быть администратором! (Это позволит им использовать pkexec
и это избегает беспорядка, если Вы или партнер пытаетесь выяснить, кто все пользователи со способностью выполнить задачи системного администрирования.)
Поэтому лучшая вещь сделать может состоять в том, чтобы добавить vagrant
как администратор и отдельно совещаются NOPASSWD
способности к vagrant
конкретно (а не администраторам в целом).
Пожалуйста, удалите "%" с вашего пути 2, это не сработало, так как "vagrant" - это пользователь, а не группа, строка для замены -
echo vagrant ALL=NOPASSWD:ALL > /etc/sudoers.d/vagrant