Вдохновленный этим вопросом ....
Я единственный, кто использует мою систему с 12.04.
Каждый раз, когда я выпускаю команду sudo
; система запрашивает пароль пользователя (который по-своему хорош).
Однако я думал; без активации учетной записи root ; как я могу выполнить команды sudo, которые не будут запрашивать пароль пользователя для аутентификации.
ПРИМЕЧАНИЕ. Я хочу выполнить команду sudo без аутентификации с помощью пароля; только когда они выполняются через терминал.
Я не хочу удалять этот дополнительный уровень безопасности из других функций, например, при использовании «Центра программного обеспечения Ubuntu» или выполнении сценария bash путем перетаскивания файла нечто.sh в терминал.
Вы можете настроить 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
в терминале. Вам все равно будет предложено ввести пароль, если вы (например) попытаетесь установить пакет из программного центра
sudo -i
- это то, что нужно, если вы не хотите вводить пароль каждые 10 минут при внесении изменений в свою систему (или другие системы), и вы не используете Не хочу изменять какие-либо системные файлы.
Он переключит вас на root, используя пароль пользователя sudo
, когда вы закроете консоль или наберете exit
, вы вернетесь к своему обычному пользователь.
Предпочтительным способом предоставления индивидуальных (или групповых) разрешений было бы добавление файлов в /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
для получения дополнительной информации.
Хороший один лайнер для удаления sudo подсказок для текущего пользователя
sudo bash -c 'echo "$(logname) ALL=(ALL:ALL) NOPASSWD: ALL" | (EDITOR="tee -a" visudo)'
Конечно, то, что вы хотите делать, не рекомендуется. Через некоторое время, хотя ввод sudo
становится настолько автоматическим, что его полезность уменьшается.
Другой подход - оставить файл sudoers как есть и, выполняя что-то сложное для ваших бесчисленных серверов, ввести sudo bash
. Это даст вам оболочку, которая будет аутентифицироваться как root, пока вы не выйдете из нее.
Тайм-ауты 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.
Откройте окно терминала. Введите sudo visudo
. Добавьте следующую строку в КОНЕЦ файла (если не в конец, он может быть аннулирован последующими записями):
<username> ALL=NOPASSWD: ALL
Замените
своим именем пользователя (без <>
). Предполагается, что 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
Вы можете убедиться, что sudo запрашивает пароль в следующий раз, запустив:
sudo -k
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.
Это однострочное решение, которое также изменяет права доступа к файлам, как указано в /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)
Один лайнер
sudo sed -i / etc / sudoers -re 's / ^% sudo. * /% Sudo ALL = (ALL: ALL) NOPASSWD: ALL / g'
Расширение идеи @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
, выполните следующую команду:
echo "$USER ALL=(ALL:ALL) NOPASSWD: ALL" | sudo tee /etc/sudoers.d/dont-prompt-$USER-for-sudo-password