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

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

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

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

213 голосов | спросил Z9iT 6 J0000006Europe/Moscow 2012, 16:30:26

7 ответов


61

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

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

ответил Bruno Pereira 6 J0000006Europe/Moscow 2012, 17:36:42
423

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

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

sudo visudo

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

$USER ALL=(ALL) NOPASSWD: ALL

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

файл sudoers]

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

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

gui password prompt

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

ответил Octávio Filipe Gonçalves 6 J0000006Europe/Moscow 2012, 17:20:58
28

Тайм-ауты 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 +04002013-10-30T05:15:22+04:00312013bEurope/MoscowWed, 30 Oct 2013 05:15:22 +0400 2013, 05:15:22
9

Предпочтительным способом предоставления индивидуальных (или групповых) разрешений было бы добавлять файлы в /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 1 FebruaryEurope/MoscowbWed, 01 Feb 2017 18:54:18 +0300000000pmWed, 01 Feb 2017 18:54:18 +030017 2017, 18:54:18
5

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

sudo bash -c 'echo "$(logname) ALL=(ALL:ALL) NOPASSWD: ALL" | (EDITOR="tee -a" visudo)'
ответил Eric Landry 27 J0000006Europe/Moscow 2016, 20:50:36
4

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

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

ответил John S Gruber 6 J0000006Europe/Moscow 2012, 17:27:21
0

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

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

echo <password> | sudo -S <command>

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

ответил WinEunuuchs2Unix 17 Mayam18 2018, 03:12:01

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

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

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