Как запустить команду sudo без пароля?

Как пользователь ubuntu на изображениях AWS для Ubuntu Server 12.04 имеет пароль без пароля sudo для всех команд, если для него нет конфигурации в /etc/sudoers

Я использую сервер Ubuntu 12.04 на Amazon. Я хочу добавить нового пользователя, который имеет такое же поведение, что и пользователь Ubuntu по умолчанию. В частности, для этого нового пользователя я хочу без пароля sudo.

Итак, я добавил нового пользователя и пошел редактировать /etc/sudoers (используя visudo, конечно). Из чтения этого файла казалось, что пользователь по умолчанию ubuntu получает его без пароля sudo из члена группы admin. Поэтому я добавил к этому нового пользователя. Что не сработало. Затем я попытался добавить директиву NOPASSWD в sudoers. Что тоже не сработало.

В любом случае, теперь мне просто интересно. Как пользователь ubuntu получает привилегии без пароля, если они не определены в /etc/sudoers. Каков механизм, который позволяет это?

194 голоса | спросил aychedee 23 rdEurope/Moscowp30Europe/Moscow09bEurope/MoscowSun, 23 Sep 2012 13:30:23 +0400 2012, 13:30:23

3 ответа


285

Хорошо, я обнаружил ответ, так что, может быть, также поставить его здесь для полноты. В конце /etc/sudoers есть то, что я считал просто комментарием:

#includedir /etc/sudoers.d

Однако это фактически включает содержимое этого каталога. Внутри файла находится файл /etc/sudoers.d/90-cloudimg-ubuntu. Которая имеет ожидаемое содержание

# ubuntu user is default user in cloud-images.
# It needs passwordless sudo functionality.
ubuntu ALL=(ALL) NOPASSWD:ALL

Так вот где живет конфигурация sudo для пользователя ubuntu по умолчанию.

Вы должны отредактировать этот файл, используя visudo. Следующая команда позволит вам редактировать правильный файл с помощью visudo.

sudo visudo -f /etc/sudoers.d/90-cloudimg-ubuntu

И добавьте строку, например:

aychedee ALL=(ALL) NOPASSWD:ALL

В конце.

ответил aychedee 23 rdEurope/Moscowp30Europe/Moscow09bEurope/MoscowSun, 23 Sep 2012 14:27:55 +0400 2012, 14:27:55
72

Я обнаружил, что наиболее простой способ сделать это, чтобы легко воспроизвести это поведение на нескольких серверах, состоял в следующем:

sudo visudo

Измените эту строку:

# Members of the admin group may gain root privileges
%admin  ALL=(ALL) ALL

в эту строку:

# Members of the admin group may gain root privileges
%admin  ALL=(ALL) NOPASSWD:ALL

И переместите его под в эту строку:

# Allow members of group sudo to execute any command
%sudo   ALL=(ALL:ALL) ALL

теперь вы должны иметь следующее:

# This file MUST be edited with the 'visudo' command as root.
#
# Please consider adding local content in /etc/sudoers.d/ instead of
# directly modifying this file.
#
# See the man page for details on how to write a sudoers file.
#

Defaults        env_reset
Defaults        mail_badpass
Defaults        secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

# Host alias specification

# User alias specification

# Cmnd alias specification

# User privilege specification
root    ALL=(ALL:ALL) ALL

# Allow members of group sudo to execute any command
%sudo   ALL=(ALL:ALL) ALL

# Members of the admin group may gain root privileges
%admin  ALL=(ALL) NOPASSWD:ALL

# See sudoers(5) for more information on "#include" directives:

#includedir /etc/sudoers.d

, то для каждого пользователя, которому нужен доступ sudo С паролем :

sudo adduser <user> sudo

и для каждого пользователя, которому нужен доступ sudo БЕЗ пароля :

sudo adduser <user> admin

и, наконец, запустите это:

sudo service sudo restart

И все!

Изменить: Возможно, вам придется добавить административную группу, поскольку я не думаю, что она существует по умолчанию.

sudo groupadd admin

Вы также можете добавить пользователя AWS ubuntu по умолчанию в группу admin с помощью этой команды:

sudo usermod ubuntu -g admin
ответил jiminikiz 4 AMpFri, 04 Apr 2014 01:45:53 +040045Friday 2014, 01:45:53
-1

Короткий ответ без использования какого-либо редактора (проверенный на bash, очень рискованный для выполнения на удаленных хостах).

Настроить sudo для работы без пароля для текущего пользователя:

 echo "$USER ALL=(ALL) NOPASSWD:ALL" | sudo tee -a /etc/sudoers

Проверьте изменение:

 sudo visudo -c

Проверьте, можете ли вы использовать sudo без пароля:

 sudo cat /etc/sudoers | grep "$USER"

... или просто попробуйте:

 sudo <anything>
ответил user315445 14 AM00000020000001831 2014, 02:25:18

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132