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


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

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

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


223
2018-06-06 12:30


происхождения


так что вы хотите, чтобы вас попросили ввести пароль в терминале, а для других нет, или наоборот? в обоих направлениях, я думаю, что это нарушение безопасности - Dr_Bunsen
Я хочу, чтобы эта система не запрашивала пароль только тогда, когда в терминале ... для любой другой цели система должна запросить пароль. Это требование является лишь временным и используется при настройке n установки новых серверов. Во время установки нового сервера на самом деле требуется несколько часов настройки с помощью команд sudo .. выдача пароля каждые 15 минут. головная боль. Я не хочу использовать учетную запись root. - Z9iT
Вы должны прочитать дискуссию в: askubuntu.com/questions/135428/... - david6
Конечно, вы можете продлить время ожидания. Кроме того, если вы часто делаете свежие настройки сервера, вы должны подумать об автоматизации процесса. Вам не платят за тип, вам платят за решение проблем и выполнение sh * t. - MauganRa
Связанный: Как запустить команду sudo без пароля? - Eliah Kagan


ответы:


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

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


64
2018-06-06 13:36



Будет ли это верно, что я вводить пароль только один раз ... и до того времени, когда я не выйду; погода 5 часов. или 15 .... система не запрашивает аутентификацию по паролю при выдаче любой команды sudo. - Z9iT
@ Z9iT, пока вы не наберете exit или пока вы не закроете окно эмулятора терминала. - Bruno Pereira
Спасибо .. Принял этот ответ, потому что он поддерживает назначение команд sudo без аутентификации пароля в течение n-часов до тех пор, пока мы не выйдем. Не изменять системные файлы - это плюс. - Z9iT
Это на самом деле не отвечает на вопрос, потому что вам все равно нужно ввести пароль, чтобы стать root в этой точке. - Adam F
Нет, если вы используете виртуальную машину в защищенной среде, и вы просто хотите, чтобы что-то делало что-то сразу, и вы не хотите иметь дело с паролями. Этот ответ не отвечает на вопрос, хотя это, возможно, полезная информация. Я согласен с Адамом F - Jonathan Komar


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

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

sudo visudo

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

$USER ALL=(ALL) NOPASSWD: ALL

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

sudoers file]

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

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

gui password prompt

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


438
2018-06-06 13:20



Рекомендуется использовать sudo visudo вместо прямого редактирования. Кроме того, изменение разрешений sudoers может блокировать себя. При редактировании с помощью vim, используйте :wq! для записи в файлы только для чтения и выхода из редактора. Таким образом, разрешения 644 не нужны. - Lekensteyn
Это серьезный риск для безопасности, любой, кто возьмет на себя какую-либо учетную запись с правами sudo, может взять под контроль всю систему и заблокировать любой доступ к этому компьютеру, серьезно не рекомендованный. - Bruno Pereira
@ wil93 вам не хватает точки: сценарий, который требует sudo install crapware не будет запрашивать пароль в этом случае и может испортить все, что у вас есть, и вам не нужно быть физически рядом с машиной для распространения сценариев в последний раз, когда я проверил ... Это всего лишь пример. - Bruno Pereira
@BrunoPereira Если вы планируете запускать ненадежные скрипты, тогда что это риск безопасности (даже если sudo запрашивает пароль, вредоносный скрипт всегда может rm -rf ~что-то испортило). В целом, я бы не назвал «серьезной угрозой безопасности» простым удалением пароля из sudo. - wil93
Согласитесь с @ wil93. При запуске ненадежного скрипта ввод пароля - это не более чем шанс отменить процесс, хотя я сомневаюсь, что это бесполезно для большинства людей. Дело в том, что вы знаете, где сценарий и что он делает. - Chad


Корневые тайм-ауты 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  Войти для записи файла и :q  Войти для выхода из vi. Если вы допустили ошибку, возможно, самый простой способ - повторить с начала, выйти без сохранения (нажать Побег для входа в командный режим), а затем введите: q! Войти,

Удар Ctrl+Икс, тогда Y, тогда Войти для сохранения файла и выхода из nano.

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

man sudoers
man vi

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

sudo -k

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

Редактировать файл sudoers

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

<username> ALL=NOPASSWD: ALL

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

Пример:

michael ALL=NOPASSWD: ALL

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

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

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

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

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

sudo -i

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

sudo passwd root

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

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

sudo passwd -dl root

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

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

Выйдите из системы, а затем снова.

Сбросить тайм-аут sudo

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

sudo -k

30
2017-10-30 01:15



Я опубликовал это до того, как я добавил, для системного способа сделать это, а другие читайте здесь: - user209328
Это был поздний ответ, но он является самым полным с точки зрения вариантов, которые он дает вам. - jenming


Предпочтительным способом предоставления индивидуальных (или групповых) разрешений было бы добавлять файлы в соответствии с /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  Чтобы получить больше информации.


10
2018-02-01 15:54



команда echo не удалась, даже если я root. но я добавил файл и отредактировал его напрямую, и это сработало на последнем ubuntu (тогда как добавление пользователя в sudoers напрямую не было!) - scape
Правильный способ - сделать это с помощью tee команда. - woto


Nice one-liner для удаления приглашений sudo для текущего пользователя

sudo bash -c 'echo "$(logname) ALL=(ALL:ALL) NOPASSWD: ALL" | (EDITOR="tee -a" visudo)'

5
2018-06-27 17:50



Я думаю, вы могли бы просто сделать: echo "$USER ALL=(ALL:ALL) NOPASSWD: ALL" | sudo env EDITOR="tee -a" visudo, только visudo потребности sudo в конце концов (и даже env не потребуется в конфигурации по умолчанию, IIRC). - muru
есть так много, что может пойти не так здесь (все ошибки пользователя, конечно), что, по моему очень скромному мнению, предпочтительно отредактировать файл sudoer (sudo visudo), проверяя результат (с открытым редактором), для тех новых пользователей, которые могут испытывать соблазн попробовать этот «однострочный». - michael
Спасибо за ответ! Я просто быстро попытался выполнить сценарий, если вы удалили приглашение пароля sudo в моих летучих тестовых виртуальных машинах. Не стесняйтесь предлагать улучшения :) - Eric Landry


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

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


4
2018-06-06 13:27



sudo -s или sudo -i вероятно, являются и лучшими идеями, чем sudo bash, потому что они обеспечивают, чтобы окружающая среда была здравомыслящей и вещами. - Darael
«здравомыслящие вещи» вообще не входят в сферу «лучших идей», может ли кто-нибудь дать техническое объяснение, почему судо-или-судо -и лучше, чем судо-баш? (Редактирование: вот соответствующий вопрос askubuntu.com/questions/376199/... ) - Nuzzolilo
количество sudo команд (особенно sudo pip ...) требуют sudo -H (установите HOME) для правильной работы команды. В других случаях, sudo -E (сохранение env) может потребоваться. Бег sudo bash вероятно, будет работать в большинстве случаев, но не во всех, а когда этого не произойдет, неясно, почему. - michael
sudo su - это традиционный способ переключить роли и начать действовать администратором sys. - user1656671


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

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

echo <password> | sudo -S <command>

замещать <password> с вашим паролем.


1
2018-05-17 00:12