Выполнить sudo без пароля?

Вдохновленный этим вопросом ....

Я единственный, кто использует мою систему с 12.04.
Каждый раз, когда я выпускаю команду sudo; система запрашивает пароль пользователя (который по-своему хорош).
Однако я думал; без активации учетной записи root ; как я могу выполнить команды sudo, которые не будут запрашивать пароль пользователя для аутентификации.

ПРИМЕЧАНИЕ. Я хочу выполнить команду sudo без аутентификации с помощью пароля; только когда они выполняются через терминал.
Я не хочу удалять этот дополнительный уровень безопасности из других функций, например, при использовании «Центра программного обеспечения Ubuntu» или выполнении сценария bash путем перетаскивания файла нечто.sh в терминал.

395
задан 13 April 2017 в 15:23

11 ответов

Вы можете настроить sudo , чтобы никогда не запрашивать пароль.

Откройте окно терминала и введите:

sudo visudo

В нижней части файла добавьте следующее строка:

$USER ALL=(ALL) NOPASSWD: ALL

Где $ USER - ваше имя пользователя в вашей системе. Сохраните и закройте файл sudoers (если вы не меняли редактор терминала по умолчанию (вы узнаете, если он у вас есть), нажмите Ctl + x , чтобы выйти из nano , и он запрос на сохранение).

Начиная с Ubuntu 19.04, файл теперь должен выглядеть примерно как

#
# 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:/snap/bin"

# Host alias specification

# User alias specification

# Cmnd alias specification

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

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

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

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

#includedir /etc/sudoers.d

YOUR_USERNAME_HERE ALL=(ALL) NOPASSWD: ALL

После этого вы можете ввести sudo <все, что вы хотите> в окне Терминала без запроса на ввод пароль.

Это применимо только к использованию команды sudo в терминале. Вам все равно будет предложено ввести пароль, если вы (например) попытаетесь установить пакет из программного центра

gui password prompt

665
ответ дан 13 April 2017 в 15:23

sudo -i - это то, что нужно, если вы не хотите вводить пароль каждые 10 минут при внесении изменений в свою систему (или другие системы), и вы не используете Не хочу изменять какие-либо системные файлы.

Он переключит вас на root, используя пароль пользователя sudo , когда вы закроете консоль или наберете exit , вы вернетесь к своему обычному пользователь.

89
ответ дан 13 April 2017 в 15:23

Предпочтительным способом предоставления индивидуальных (или групповых) разрешений было бы добавление файлов в /etc/sudoers.d

. Это отделяет локальные изменения от политики по умолчанию и экономит время в случае изменения файла sudoers дистрибутива.

Чтобы сделать текущего пользователя, вошедшего в систему, именем sudoer и заставить sudo не запрашивать пароль, используйте

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

, это создаст файл с именем / etc / sudoers.d / $ USER (где $ USER - имя пользователя, с которым вы вошли в систему, когда вы запускали эту команду), что дает понять, каким пользователям предоставлено разрешение.

Если вы хотите сделать это для другого пользователя, просто замените оба экземпляра $ USER другим именем пользователя в приведенной выше команде.

echo "otheruser ALL=(ALL:ALL) NOPASSWD: ALL" | sudo tee /etc/sudoers.d/otheruser

Точно так же один файл можно использовать для управления несколькими директивами:

echo "username ALL=(ALL:ALL) NOPASSWD: ALL" | sudo tee -a /etc/sudoers.d/local

См. /etc/sudoers.d/README и man sudoers для получения дополнительной информации.

41
ответ дан 13 April 2017 в 15:23

Хороший один лайнер для удаления sudo подсказок для текущего пользователя

sudo bash -c 'echo "$(logname) ALL=(ALL:ALL) NOPASSWD: ALL" | (EDITOR="tee -a" visudo)'
7
ответ дан 13 April 2017 в 15:23

Конечно, то, что вы хотите делать, не рекомендуется. Через некоторое время, хотя ввод sudo становится настолько автоматическим, что его полезность уменьшается.

Другой подход - оставить файл sudoers как есть и, выполняя что-то сложное для ваших бесчисленных серверов, ввести sudo bash . Это даст вам оболочку, которая будет аутентифицироваться как root, пока вы не выйдете из нее.

8
ответ дан 13 April 2017 в 15:23

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

sudo visudo

Это открывает редактор и указывает на файл sudoers - Ubuntu по умолчанию использует nano, другие системы используют Vi. Теперь вы суперпользователь, редактирующий один из самых важных файлов в вашей системе. Никакого стресса!

(Специальные инструкции Vi отмечены как (vi!) . Игнорируйте их, если вы используете nano.)

Используйте клавиши со стрелками, чтобы перейти к концу Строка по умолчанию .

(vi!) нажмите клавишу A (заглавная «а»), чтобы перейти в конец текущей строки и войти в режим редактирования (добавить после последнего символа в строке).

Теперь введите:

,timestamp_timeout=X

, где X - время ожидания в минутах. Если вы укажете 0, у вас всегда будет запрашиваться пароль. Если указать отрицательное значение, тайм-аут никогда не истечет. Например. По умолчанию env_reset, timestamp_timeout = 5 .

(vi!) нажмите Escape, чтобы вернуться в командный режим. Теперь, если вы довольны своим редактированием, введите : w Введите для записи файла и : q Введите для выхода из vi. Если вы допустили ошибку, возможно, самый простой способ - повторить все сначала, чтобы выйти без сохранения (нажмите Escape , чтобы войти в командный режим), а затем введите: q! Введите .

Нажмите Ctrl + X , затем Y , затем Введите , чтобы сохранить файл и exit nano.

Возможно, вы захотите прочитать справочные страницы sudoers и vi для получения дополнительной информации.

man sudoers
man vi

Сбросьте значение тайм-аута, используя:

sudo -k

Эти инструкции предназначены для удаления запроса на ввод пароля при использовании команды sudo. Однако для корневого доступа все равно потребуется использовать команду sudo.

Отредактируйте файл sudoers

Откройте окно терминала. Введите sudo visudo . Добавьте следующую строку в КОНЕЦ файла (если не в конец, он может быть аннулирован последующими записями):

<username> ALL=NOPASSWD: ALL

Замените своим именем пользователя (без <> ). Предполагается, что Ubuntu создал группу с тем же именем, что и ваше имя пользователя, что типично. Вы можете поочередно использовать группу пользователей или любую другую такую ​​группу, в которой вы состоите. Просто убедитесь, что вы находитесь в этой группе. Это можно проверить, перейдя в Система -> Администрирование -> Пользователи и группы.

Пример:

michael ALL=NOPASSWD: ALL

Введите ^ X ( Ctrl + X ) для выхода. Должен быть предложен вариант сохранения файла, введите Y для сохранения.

Выйдите из системы, а затем снова войдите в систему. Теперь это должно позволить вам выполнить команду sudo без запроса пароля.

учетная запись root

Включение учетной записи root

Включение учетной записи root требуется редко. Почти все, что вам нужно сделать как администратору системы Ubuntu, можно сделать с помощью sudo или gksudo. Если вам действительно нужен постоянный вход в систему root, лучшей альтернативой является имитация оболочки входа в систему Root с помощью следующей команды:

sudo -i

Однако, если вы должны разрешить вход в систему root, вы можете сделать это следующим образом:

sudo passwd root

Повторное отключение вашей учетной записи root

Если по какой-то причине вы включили свою учетную запись root и хотите снова отключить ее, используйте следующую команду в терминале:

sudo passwd -dl root

Общесистемная группа sudo

root$ echo "%sudo ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers

Выйти, и затем обратно.

Сбросить время ожидания sudo

Вы можете убедиться, что sudo запрашивает пароль в следующий раз, запустив:

sudo -k
44
ответ дан 13 April 2017 в 15:23

Minn Super User tiġi tweġiba tajba:

Uża l- - Swiċċ S li jaqra l-password minn STDIN:

echo <password> | sudo -S <command>

Ibdel bil-password tiegħek.

4
ответ дан 13 April 2017 в 15:23

Это однострочное решение, которое также изменяет права доступа к файлам, как указано в /etc/sudoer.d/README :

sudo sh -c 'echo "$(logname) ALL=(ALL:ALL) NOPASSWD: ALL" > /etc/sudoers.d/$(logname)' && sudo chmod 440 /etc/sudoers.d/$(logname)
5
ответ дан 13 April 2017 в 15:23

Один лайнер

sudo sed -i / etc / sudoers -re 's / ^% sudo. * /% Sudo ALL = (ALL: ALL) NOPASSWD: ALL / g'

4
ответ дан 13 April 2017 в 15:23
  • Расширение идеи @upteryx.

  • Вот как я реализовал пользователя без полномочий root и без пароля в эфемерном образе Docker для использования в конвейере CICD:

RUN \
    groupadd -g 999 foo && useradd -u 999 -g foo -G sudo -m -s /bin/bash foo && \
    sed -i /etc/sudoers -re 's/^%sudo.*/%sudo ALL=(ALL:ALL) NOPASSWD: ALL/g' && \
    sed -i /etc/sudoers -re 's/^root.*/root ALL=(ALL:ALL) NOPASSWD: ALL/g' && \
    sed -i /etc/sudoers -re 's/^#includedir.*/## **Removed the include directive** ##"/g' && \
    echo "foo ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers && \
    echo "Customized the sudoers file for passwordless access to the foo user!" && \
    echo "foo user:";  su - foo -c id
2
ответ дан 22 October 2019 в 13:08

Чтобы никогда не запрашивать пароль у текущего пользователя, когда этот пользователь использует sudo , выполните следующую команду:

echo "$USER ALL=(ALL:ALL) NOPASSWD: ALL" | sudo tee /etc/sudoers.d/dont-prompt-$USER-for-sudo-password
0
ответ дан 5 January 2021 в 23:40

Другие вопросы по тегам:

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