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

228

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

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

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

    
задан Z9iT 06.06.2012 в 14:30
источник

7 ответов

64

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

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

    
ответ дан Bruno Pereira 06.06.2012 в 15:36
источник
451

Подход к решению вашей проблемы состоит в том, чтобы поместить вашего пользователя в файл sudoers, как вы можете видеть.

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

sudo visudo

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

$USER ALL=(ALL) NOPASSWD: ALL

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

]

Послеэтоговыможетевокнетерминалаввестиsudo<Whateveryouwant>,незапрашиваяпароль.

Этоотноситсятолькоккомандеsudoвокнетерминала.Например,припопыткеустановитьпакетвпрограммномцентревамбудетпредложеноввестипароль,какпоказанонаследующемскриншоте.

Я думаю, что это то, что вы хотите.

    
ответ дан Octávio Filipe Gonçalves 06.06.2012 в 15:20
30

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

sudo visudo

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

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

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

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

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

,timestamp_timeout=X

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

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

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

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

man sudoers
man vi

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

sudo -k

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

Изменить файл sudoers

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

<username> ALL=NOPASSWD: ALL

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

Пример:

michael ALL=NOPASSWD: ALL

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

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

Корневая учетная запись

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

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

sudo -i

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

sudo passwd root

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

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

sudo passwd -dl root

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

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

Выйти, а затем вернуться.

Сброс sudo timeout

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

sudo -k
    
ответ дан user209328 30.10.2013 в 02:15
10

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

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

Например:

sudo echo "username ALL=(ALL:ALL) NOPASSWD: ALL" > /etc/sudoers.d/username

Выясните, какие пользователи получили разрешение.

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

sudo echo "username ALL=(ALL:ALL) NOPASSWD: ALL" >> /etc/sudoers.d/local

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

    
ответ дан user1656671 01.02.2017 в 16:54
5

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

sudo bash -c 'echo "$(logname) ALL=(ALL:ALL) NOPASSWD: ALL" | (EDITOR="tee -a" visudo)'
    
ответ дан Eric Landry 27.06.2016 в 19:50
4

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

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

    
ответ дан John S Gruber 06.06.2012 в 15:27
1

От Суперпользователя приходит хороший ответ:

Используйте ключ -S, который считывает пароль из STDIN:

echo <password> | sudo -S <command>

Замените <password> своим паролем.

    
ответ дан WinEunuuchs2Unix 17.05.2018 в 02:12