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

176

Как пользователь 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 . Каков механизм, который позволяет это?

    
задан aychedee 23.09.2012 в 09:30
источник

3 ответа

261

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

#includedir /etc/sudoers.d

Однако это фактически включает содержимое этого каталога. Внутри файла находится файл %код%. Которая имеет ожидаемое содержание

# 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.09.2012 в 10:27
источник
67

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

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

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

sudo usermod ubuntu -g admin
    
ответ дан jiminikiz 03.04.2014 в 21:45
источник
-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 13.08.2014 в 22:25
источник

Ознакомьтесь с другими вопросами по меткам