Вдохновленный этим вопросом ....
Я единственный человек, использующий мою систему с 12.04.
Каждый раз, когда я даю sudo
команду; система запрашивает пароль пользователя (который по-своему хорош).
Однако я думал; без активации учетной записи root ; Как я могу выполнить команды sudo, которые не будут запрашивать пароль пользователя для аутентификации.
ПРИМЕЧАНИЕ: я хочу выполнить команду sudo без аутентификации с помощью пароля; только когда они выполняются через терминал.
Я не хочу удалять этот дополнительный уровень безопасности из других функций, например, при использовании «Центра программного обеспечения Ubuntu» или выполнении сценария bash путем перетаскивания файла нечто.sh в терминал.
command-line
password
sudo
root
Бхавеш Диван
источник
источник
Ответы:
sudo -i
это путь, если вы не хотите вводить пароль каждые 10 минут при внесении изменений в вашу систему (или другие системы), и вы не хотите изменять какие-либо системные файлы.Он переключит вас на root с использованием вашего
sudo
пароля пользователя, когда вы закроете консоль или введете пароль,exit
вы вернетесь к своему обычному пользователю.источник
exit
или не закроете окно эмулятора терминала.Вы можете настроить,
sudo
чтобы никогда не запрашивать пароль.Откройте окно терминала и введите:
В нижней части файла добавьте следующую строку:
Где
$USER
ваше имя пользователя в вашей системе. Сохраните и закройте файл sudoers (если вы не изменили редактор терминала по умолчанию (вы узнаете, есть ли у вас), нажмите ctl + x для выхода,nano
и он предложит вам сохранить).Начиная с Ubuntu 19.04, файл должен выглядеть примерно так:
После этого вы можете ввести
sudo <whatever you want>
в окне терминала без запроса пароля.Это относится только к использованию
sudo
команды в терминале. Вам все равно будет предложено ввести пароль, если вы (например) попытаетесь установить пакет из центра программного обеспеченияисточник
sudo visudo
вместо непосредственного редактирования. Также изменение прав sudoers может заблокировать себя. При редактировании сvim
помощью используйте:wq!
для записи в файлы только для чтения и выйдите из редактора. Таким образом, разрешения 644 не являются необходимыми.sudo install crapware
, не будет запрашивать пароль в этом случае и может испортить все, что у вас есть, и вам не нужно находиться рядом с машиной, чтобы распространять скрипты в прошлый раз, когда я проверял. .. Это всего лишь пример.rm -rf ~
испортить некоторые вещи). В целом, я бы не назвал «серьезной угрозой безопасности» простое удаление запроса пароля из sudo.Корневые тайм-ауты sudo - самый простой и безопасный способ сделать это. Я выложу все примеры, но предупреждаю, что любой способ сделать это очень рискованно, хотя этот способ намного безопаснее:
Это открывает редактор и указывает его на файл sudoers - Ubuntu по умолчанию использует nano, другие системы используют Vi. Теперь вы супер пользователь, редактирующий один из самых важных файлов в вашей системе. Нет стресса!
(Vi специальные инструкции отмечены с (vi!) . Игнорируйте их, если вы используете nano.)
Используйте клавиши со стрелками, чтобы перейти к концу
Defaults
строки.(vi!) нажмите клавишу A (заглавную «a»), чтобы переместиться в конец текущей строки и войти в режим редактирования (добавить после последнего символа в строке).
Теперь введите:
где 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 справочные страницы для получения дополнительной информации.
Сбросьте значение тайм-аута, используя:
Эти инструкции должны удалить запрос на ввод пароля при использовании команды sudo. Тем не менее, команда sudo по-прежнему должна использоваться для доступа с правами root.
Отредактируйте файл sudoers
Откройте окно терминала. Введите
sudo visudo
. Добавьте следующую строку в конец файла (если он не в конце, он может быть аннулирован более поздними записями):Замените
<username>
на ваше имя пользователя (без<>
). Это предполагает, что Ubuntu создал группу с тем же именем, что и ваше имя пользователя, что типично. Вы можете поочередно использовать группу пользователей или любую другую группу, в которой вы находитесь. Просто убедитесь, что вы в этой группе. Это можно проверить, перейдя в Система -> Администрирование -> Пользователи и группы.Пример:
Введите ^ X ( Ctrl+ X), чтобы выйти. Это должно запросить вариант сохранения файла, введите Y для сохранения.
Выйдите из системы, а затем снова войдите в нее. Теперь это должно позволить вам выполнить команду sudo без запроса пароля.
Корневой аккаунт
Включение учетной записи root
Включение учетной записи root редко требуется. Почти все, что вам нужно сделать как администратор системы Ubuntu, можно сделать с помощью sudo или gksudo. Если вам действительно нужен постоянный root-вход, лучше всего смоделировать Root-оболочку входа с помощью следующей команды:
Однако, если вам нужно включить root-логины, вы можете сделать это так:
Повторное отключение вашей учетной записи root
Если по какой-либо причине вы включили свою учетную запись root и хотите снова ее отключить, используйте в терминале следующую команду:
Общесистемная группа sudo
Выйдите, а затем вернитесь.
Сбросить sudo timeout
Вы можете убедиться, что sudo запросит пароль в следующий раз, запустив:
источник
sudo env EDITOR=/bin/nano visudo
для надежного редактированияsudoers
в nano. (альтернативы обновления также могут быть использованы для установки редактора)Предпочтительным способом предоставления индивидуальных (или групповых) разрешений будет добавление файлов в
/etc/sudoers.d
Это отделяет локальные изменения от политики по умолчанию и экономит время в случае изменения файла распределения sudoers.
Чтобы сделать вошедшего в систему пользователя aa sudoer и
sudo
не запрашивать у него пароль, используйтеэто создаст файл с именем
/etc/sudoers.d/$USER
(где$USER
находится имя пользователя, в который вы вошли, как при запуске этой команды), что позволит понять, каким пользователям предоставлено разрешение.Если вы хотите сделать это для другого пользователя, просто замените оба экземпляра
$USER
другим именем пользователя в приведенной выше команде.Точно так же один файл может использоваться для управления несколькими директивами:
Смотрите
/etc/sudoers.d/README
иman sudoers
для получения дополнительной информации.источник
tee
команды.sudo sh -c 'echo "$(logname) ALL=(ALL:ALL) NOPASSWD: ALL" > /etc/sudoers.d/$(logname)'
а затемsudo chmod 440 /etc/sudoers.d/$(logname)
sudo ... >file
оболочке перенаправление выполняется в исходной оболочке, поэтому оно может работать только в корневой оболочке.echo "username ALL=(ALL:ALL) NOPASSWD: ALL" | sudo tee /etc/sudoers.d/username
Хорошая однострочная строка для удаления запросов sudo для текущего пользователя
источник
echo "$USER ALL=(ALL:ALL) NOPASSWD: ALL" | sudo env EDITOR="tee -a" visudo
только в конце концов (и даже не понадобится в конфигурации по умолчанию, IIRC).visudo
sudo
env
sudo visudo
), тестируя результат (с открытым редактором), для тех новых пользователей, у которых может возникнуть желание попробовать этот «однострочный».sudo chmod 440 /etc/sudoers.d/$(logname)
исправить права доступа к файлам, как указано в README в этом каталоге.Конечно, то, что вы хотите сделать, не рекомендуется. Через некоторое время, хотя ввод
sudo
становится настолько автоматическим, что его полезность уменьшается.Другой подход заключается в том, чтобы оставить файл sudoers без изменений и, введя что-то сложное для своих сотен серверов, ввести
sudo bash
. Это даст вам оболочку, которая будет аутентифицироваться как root, пока вы не выйдете из нее.источник
sudo -s
илиsudo -i
, возможно, оба являются лучшими идеями, чемsudo bash
, потому что они гарантируют, что окружающая среда нормальна и вещи.sudo
команд (особенно учитываяsudo pip ...
) требуютsudo -H
(установите HOME) для правильного выполнения команды. В других случаяхsudo -E
может потребоваться (сохранить env). Запуск,sudo bash
вероятно, будет работать в большинстве случаев, но не во всех, и когда это не так, неясно, почему.От Super User приходит хороший ответ:
Используйте ключ -S, который читает пароль из STDIN:
Замените
<password>
своим паролем.источник
echo
чтобы он не появлялся в истории?Один лайнер
sudo sed -i /etc/sudoers -re 's/^%sudo.*/%sudo ALL=(ALL:ALL) NOPASSWD: ALL/g'
источник
Это однострочное решение, которое также изменяет права доступа к файлам, как указано в
/etc/sudoer.d/README
:источник
Расширение идеи @upteryx.
Вот как я реализовал пользователя без полномочий root в эфемерном образе Docker для использования в конвейере CICD:
источник