Каким образом ubuntu
пользователь на образах AWS для Ubuntu Server 12.04 может иметь пароль без пароля sudo
для всех команд, если для него нет конфигурации /etc/sudoers
?
Я использую Ubuntu Server 12.04 на Amazon. Я хочу добавить нового пользователя, который будет вести себя так же, как и пользователь Ubuntu по умолчанию. В частности, я хочу без пароля sudo
для этого нового пользователя.
Поэтому я добавил нового пользователя и пошел редактировать /etc/sudoers
(конечно, используя visudo). После прочтения этого файла казалось, что ubuntu
пользователь по умолчанию получает его без пароля sudo
от членства в admin
группе. Поэтому я добавил к этому нового пользователя. Который не работал. Затем я попытался добавить NOPASSWD
директиву к sudoers
. Что тоже не сработало.
Во всяком случае, сейчас мне просто любопытно. Как ubuntu
пользователь получает права доступа без пароля, если они не определены в /etc/sudoers
. Какой механизм это позволяет?
Ответы:
Хорошо, я обнаружил ответ, поэтому могу также привести его здесь для полноты. В конце
/etc/sudoers
я думаю, что это просто комментарий:Однако это на самом деле включает в себя содержимое этого каталога. Внутри которого находится файл
/etc/sudoers.d/90-cloudimg-ubuntu
. Который имеет ожидаемое содержаниеТак что именно здесь находится конфигурация sudo для пользователя Ubuntu по умолчанию.
Вы должны отредактировать этот файл, используя visudo. Следующая команда позволит вам отредактировать правильный файл с помощью visudo.
И добавьте строку вроде:
В конце.
источник
/etc/sudoers.d/90-cloud-init-users
(для редактирования ..sudo visudo -f /etc/sudoers.d/90-cloud-init-users
). Хотя было бы проще создать дополнительные файлы, чем редактировать сгенерированный. Обратите внимание, что файлы, содержащие.
или заканчивающиеся на~
, не будут включены.Я обнаружил, что наиболее простой способ, с помощью которого можно легко воспроизвести это поведение на нескольких серверах, заключается в следующем:
Измените эту строку:
к этой строке:
И переместите его под эту строку:
теперь вы должны иметь это:
тогда для каждого пользователя, которому нужен доступ sudo с паролем :
и для каждого пользователя, которому нужен доступ sudo без пароля :
и наконец, запустите это:
Вот и все!
Изменить: Возможно, вам придется добавить группу администраторов, поскольку я не думаю, что она существует по умолчанию.
Вы также можете добавить
ubuntu
пользователя AWS по умолчанию вadmin
группу с помощью этой команды:Примечание. Как уже упоминалось, @hata может потребоваться использовать в
adm
качестве имени группы администраторов в зависимости от используемой версии Ubuntu.источник
Я бы создал свой собственный файл в каталоге /etc/sudoers.d/ - файл, созданный Amazon Cloud, может быть перезаписан в случае любого обновления. После создания вашего файла в /etc/sudoers.d добавьте эту запись,
Перезагрузите систему, и это будет работать.
источник
Короткий ответ без использования какого-либо редактора (проверено на bash, очень рискованно выполнять на удаленных хостах).
Настройте sudo для работы без пароля для текущего пользователя:
Проверьте редактирование с помощью:
Проверьте, можете ли вы использовать sudo без пароля:
... или просто попробуйте:
источник
echo "$USER ALL=(ALL) NOPASSWD:ALL" | sudo tee -a /etc/sudoers
visudo
особенно приятно, если вы не позволите вам сломать файл sudoers, тем самым не заблокировав вас на вашей машине (или, по крайней мере, на sudo).visudo
, но обычно не случайно, потому чтоvisudo
сохраняются только те изменения, которые правильно сформированы в соответствии с грамматикой для файлов sudoers . Большинство ошибок синтаксически неправильны, поэтому они не причиняют вредаvisudo
. Если/etc/sudoers
файл в файле/etc/sudoers.d
имеет неправильную форму , онsudo
отказывается повышать привилегии для кого-либо в качестве меры безопасности, поэтому отказ от использованияvisudo
опасен. (Хотя иногда этоpkexec
можно исправить без перезагрузки.)Вот как я реализовал пользователя без полномочий root в эфемерном образе Docker для использования в конвейере CICD:
источник