Выполнить sudo без пароля?
Вдохновленный этим вопросом....
Я единственный человек, использующий мою систему с 12.04.
Каждый раз, когда я выпускаю sudo
команда; система запрашивает пароль пользователя (который по-своему хорош).
Однако я думал; без активации учетной записи root; Как я могу выполнить команды sudo, которые не будут запрашивать пароль пользователя для аутентификации.
ПРИМЕЧАНИЕ: я хочу выполнить команду sudo без аутентификации с помощью пароля; только когда они выполняются через терминал.
Я не хочу удалять этот дополнительный уровень безопасности из других функций, например, при использовании "Центра программного обеспечения Ubuntu" или выполнении сценария bash путем перетаскивания файла нечто.sh в терминал.
12 ответов
sudo -i
это путь, если вы не хотите вводить пароль каждые 10 минут при внесении изменений в вашу систему (или другие системы), и вы не хотите изменять какие-либо системные файлы.
Это переключит вас на root с помощью вашего sudo
пароль пользователя, когда вы закрываете консоль или вводите exit
Вы вернулись к своему обычному пользователю.
Подход к решению вашей проблемы - поместить вашего пользователя в файл sudoers, как вы можете видеть.
Откройте окно терминала и введите:
sudo visudo
В нижней части файла введите следующее:
$USER ALL=(ALL) NOPASSWD: ALL
куда $USER
ваше имя пользователя в вашей системе. Сохраните и закройте файл sudoers (если вы не изменили редактор терминала по умолчанию (вы узнаете, есть ли у вас), нажмите ctl+x, чтобы выйти nano
(но обратите внимание, что скриншот ниже показывает vim
), и он предложит вам сохранить).
]
После этого вы можете в окне терминала набрать sudo <Whatever you want>
без запроса пароля.
Это относится только к sudo
Команда в окне терминала. Например, при попытке установить пакет в центре программного обеспечения вам будет предложено ввести пароль, как вы можете увидеть на следующем снимке экрана.
Я думаю, что это то, что вы хотите.
Предпочтительным способом предоставления индивидуальных (или групповых) разрешений будет добавление файлов в /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
для дополнительной информации.
Корневые тайм-ауты 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. Если вы допустили ошибку, возможно, самый простой способ - повторить с начала, выйти без сохранения (нажмите Escape, чтобы войти в командный режим), а затем набрать:q! Введите
Нажмите Ctrl+X, затем Y, затем Enter, чтобы сохранить файл и выйти из nano.
Возможно, вы захотите прочитать sudoers и vi справочные страницы для получения дополнительной информации.
man sudoers
man vi
Сбросьте значение тайм-аута, используя:
sudo -k
Эти инструкции должны удалить запрос на ввод пароля при использовании команды sudo. Тем не менее, команда sudo по-прежнему должна использоваться для доступа с правами root.
Отредактируйте файл sudoers
Откройте окно терминала. Введите sudo visudo
, Добавьте следующую строку в конец файла (если он не в конце, он может быть аннулирован более поздними записями):
<username> ALL=NOPASSWD: ALL
замещать <username>
с вашим именем пользователя (без <>
). Это предполагает, что Ubuntu создал группу с тем же именем, что и ваше имя пользователя, что типично. Вы можете поочередно использовать группу пользователей или любую другую группу, в которой вы находитесь. Просто убедитесь, что вы в этой группе. Это можно проверить, перейдя в Система -> Администрирование -> Пользователи и группы.
Пример:
michael ALL=NOPASSWD: ALL
Введите ^ X (Ctrl+X), чтобы выйти. Это должно запросить вариант сохранения файла, введите Y для сохранения.
Выйдите из системы, а затем снова войдите в нее. Теперь это должно позволить вам выполнить команду sudo без запроса пароля.
Корневой аккаунт
Включение учетной записи 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 timeout
Вы можете убедиться, что sudo запросит пароль в следующий раз, запустив:
sudo -k
От Super User приходит хороший ответ:
Используйте ключ -S, который читает пароль из STDIN:
echo <password> | sudo -S <command>
замещать <password>
с вашим паролем.
Конечно, то, что вы хотите сделать, не рекомендуется. Через некоторое время хоть и заходишь sudo
становится настолько автоматическим, что его полезность уменьшается.
Другой подход заключается в том, чтобы оставить файл sudoers без изменений и, выполнив что-то сложное для своих сотен серверов, введите sudo bash
, Это даст вам оболочку, которая будет аутентифицироваться как root, пока вы не выйдете из нее.
Это однострочное решение, которое также изменяет права доступа к файлам, как указано в /etc/sudoer.d/README
:
sudo sh -c 'echo "$(logname) ALL=(ALL:ALL) NOPASSWD: ALL" > /etc/sudoers.d/$(logname)' & sudo chmod 440 $(logname)
Хорошая однострочная строка для удаления запросов sudo для текущего пользователя
sudo bash -c 'echo "$(logname) ALL=(ALL:ALL) NOPASSWD: ALL" | (EDITOR="tee -a" visudo)'
Один лайнер
sudo sed -i /etc/sudoers -re 's/^%sudo.*/%sudo ALL=(ALL:ALL) NOPASSWD: ALL/g'
Чтобы никогда не запрашивать пароль у текущего пользователя, когда этот пользователь использует
sudo
запустите эту команду:
echo "$USER ALL=(ALL:ALL) NOPASSWD: ALL" | sudo tee /etc/sudoers.d/dont-prompt-$USER-for-sudo-password
Расширение идеи @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
Откройте конфигурацию судо:
sudo visudo
добавить следующую строку:
# Defaults specification
Defaults:username !authenticate
куда
username
ваше имя пользователя.