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


198
2017-09-23 09:30


Источник


Связанный: Выполнять sudo без пароля? - Eliah Kagan


Ответы:


Хорошо, я обнаружил ответ, так что, может быть, положил его на полноту. В конце /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

В конце.


285
2017-09-23 10:27



Я почти уверен, что мне пришлось выполнить полную перезагрузку. - aychedee
новые правила sudo будут использоваться для каждого нового зарегистрированного пользователя - так что вам нужно повторно войти в систему как минимум - bluszcz
«sudo service sudo restart» работает :) - Laice
В более поздних версиях (например, 14.04) включенный файл /etc/sudoers.d/90-cloud-init-users (поэтому редактировать .. sudo visudo -f /etc/sudoers.d/90-cloud-init-users). Хотя было бы проще создавать дополнительные файлы, кроме редактирования сгенерированного. Обратите внимание, что файлы, содержащие . или заканчивается ~будем не быть включенным. - Molomby
@ Phil_1984_ Скорее всего, он был добавлен в качестве комментария, чтобы разрешить совместимость с другими (стандартными?) Версиями sudo, которые не позволяют включать, но не будут сбиты с толку странным комментарием. (Стандарты тяжелые! ;-) - jpaugh


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

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

72
2018-04-03 21:45



Примечание для себя: это соглашение о перемещении менее ограничительных разрешений ниже в стеке. Но это не повлияет на функциональность. - poweratom
Как пояснил джиминикиз, мне пришлось разместить % администратора после % Судо на моем Ubuntu GNOME 16.04 LTS. Кроме того, идентификатор группы администраторов точно не админ но адм на моем Ubuntu. Не требуется перезагрузка. - hata


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

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

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

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

sudo visudo -c

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

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

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

sudo <Что-нибудь>

-1
2017-08-13 22:25



Это довольно опасный совет ... скопируйте и вставьте это неправильно, и вы заблокируете себя от своего собственного сервера. Отсюда совет использовать visudo. Он проверяет правильность синтаксиса перед сохранением на диске. Итак, для тех, кто хочет это использовать. Не делайте этого на удаленном сервере, о котором вы заботитесь. Возможно, вы захотите включить в ответ предупреждение об этом. - aychedee
Не использовать visudo - это какой ужас идея. Поверь мне, я знаю. - Bailey S
IMHO, копировать-вставить безопаснее, чем ручное редактирование. Небольшое упрощение: echo "$USER ALL=(ALL) NOPASSWD:ALL" | sudo tee -a /etc/sudoers - theartofrain
@theartofrain - Обычно я согласен, но visudo особенно приятно не позволять вам разорвать файл sudoers, тем самым не блокируя вас из вашей машины (или, по крайней мере, sudo). - Jon V
@JonV Вы можете потерять права администратора через visudo тоже, но обычно не случайно, потому что visudo только сохраняет изменения, которые хорошо сформированы в соответствии с грамматика для файлов sudoers, Наиболее ошибки являются синтаксически неправильными, поэтому они не причиняют вреда visudo, Если /etc/sudoers или файл в /etc/sudoers.d  является плохо формируется, sudo отказывается повышать привилегии для кого-либо в качестве меры безопасности, поэтому не использовать visudo опасный. (Хоть иногда pkexec может это исправить без перезагрузки.) - Eliah Kagan