Как заставить sudo запрашивать пароль root?


25

Когда я работаю sudoкак обычный непривилегированный пользователь, он запрашивает мой пароль, а не пароль root. Это часто удобно, но уменьшает количество информации, которое кто-то должен иметь для запуска команд от имени пользователя root. Итак, как я могу сделать sudoзапрос пароля root вместо пароля вызывающего пользователя?

Я знаю, что это будет сделано с помощью строки /etc/sudoers, но я никогда не смогу правильно проанализировать грамматику BNF на странице руководства, чтобы выяснить, что именно писать.


Я рекомендую вам ограничить команды, которые допустимы для пользователя без полномочий root, чтобы вам не приходилось беспокоиться о предоставлении произвольных команд.
Slartibartfast

@slartibartfast: но что происходит, когда мне нужно выполнить команду от имени root, которой нет в предварительно утвержденном списке?
Дэвид З,

Ответы:


25

Хорошо, здесь снова, поэтому вы можете установить галочку.

В /etc/sudoers, добавьте эту строку:

Defaults rootpw

чтобы включить флаг rootpw, заставив sudo запросить пароль root.


7
Вы должны всегда использовать visudoкоманду вместо того, чтобы вручную редактировать /etc/sudoersфайл. visudoпроверяет файл, чтобы убедиться в его правильности перед сохранением, поэтому вы не получите блокировки от sudo, если допустите синтаксическую ошибку ... askubuntu.com/a/81054/166411
Colin D Bennett

5

Вам нужно включить rootpwфлаг.


Как я уже сказал, я не смог проработать нотацию BNF на странице man - так в какую строку я бы вставил, /etc/sudoersчтобы включить этот флаг?
Дэвид З,

2
Значения по умолчанию rootpw
Флориан Диш

@Florian: ну, знаете, это так просто :-) Если вы отправите это как ответ, вы получите галочку.
Дэвид З,

3

Я знаю, что этот вопрос старый, но это самый лаконичный вопрос, который я нашел для этого варианта использования (это небольшой процент, правда, но, тем не менее, законный и полезный в правильном сценарии).

После объединения всех шагов из разных источников, включая многочисленные ответы на этот вопрос, эти шаги работают в Ubuntu-Gnome 16.04 LTS:

  1. Установить пароль для root
    • Это КРИТИЧЕСКОЕ, чтобы сделать ПЕРВЫЙ ! (Ubuntu автоматически не имеет пароля для пользователя ROOT из-за стандартной конфигурации безопасности.
    • Если вы не сделаете это сначала, вы заблокируете себя от доступа к привилегиям root. Этого можно избежать, загрузившись с Live Disk, подключив жесткий диск и отредактировав файл sudoers, но лучше этого избежать.
    • Откройте терминал и введите: sudo passwd
    • Установите новый пароль для пользователя ROOT.
  2. Измените конфигурацию SUDO, чтобы требовать пароль root
    • SUDO требует пользователя, запрашивающего привилегии root
    • Установка флага «rootpw» вместо этого говорит SUDO требовать пароль для пользователя root.
    • Откройте терминал и введите: sudo visudo
    • Откроется файл "/ etc / sudoers"
    • После другой строки «По умолчанию» добавьте: Defaults rootpw
    • Сохраните его (при условии, что вы находитесь в nano, по умолчанию это CTRL + O)
    • Закройте файл (CTRL + X) и выйдите из терминала
  3. Вы сделали!

Просто небольшое замечание - я также хотел убедиться, что пользователь root не может быть использован для входа из графического входа, и поэтому искал способы исключения. Очевидно, что пользователь root по умолчанию исключен и не может использоваться для входа через графический вход Gnome - что очень хорошо!


Не могли бы вы предложить улучшения, чтобы отменить снижение?
SRDC

Кажется, не так.
Руслан

1
Возможно, потому что простая (и рабочая) конфигурация: root ALL=(ALL) ALL Defaults targetpw ALL ALL=(ALL) ALL Позволяет root sudo для каждого пользователя, который знает пароль root. Наивное изменение последних двух строк в вашем решении Defaults rootpwприводит к блокировке sudo. Вам также нужно добавить своего пользователя в sudoersлайк так: myusername ALL=(ALL) ALLили дать аналогичные привилегии группе, а затем добавить myusernameв эту группу.
Пол Паркер

1

Обычная конфигурация, которая требует пароль цели (не то, что мы хотим):

Defaults targetpw
ALL ALL=(ALL) ALL

Вторая строка будет выглядеть так: «ВСЕ пользователи на ВСЕХ хостах могут выдавать себя за (ВСЕХ) пользователей при выполнении ВСЕХ команд». и Defaults targetpwозначает, что для этого им нужно знать пароль пользователя, который имитирует себя.

Наивно изменяя эту простую конфигурацию:

Defaults rootpw

не оставил бы ни одного пользователя или группу с правом запуска команд от имени другого пользователя.

Одна рабочая возможность будет:

Defaults rootpw
myuser ALL=(ALL) ALL

Говоря простым языком, myuserтеперь он может запускать ВСЕ команды от имени любого пользователя на ВСЕХ хостах, если известен пароль root.

Другая возможность работы будет:

Defaults rootpw
%sudousers ALL=(ALL) ALL

Любой член sudousersгруппы будет иметь возможность запускать ВСЕ команды, как любой пользователь на ВСЕХ хостах, при условии, что известен пароль root. Чтобы позволить myuserзапускать команды sudo, sudousersнеобходимо добавить его второстепенные группы.

su
usermod -a -G sudousers myuser
exit

Отличное объяснение. Более подробно, чем пошаговая публикация (которая работала на основе настроек Ubuntu по умолчанию).
SRDC

0

Вы можете просто отключить sudo и использовать su -c.


Неудобно, потому что я должен вводить свой пароль каждый раз, когда я запускаю его. Вариант использования здесь состоит в том, чтобы запускать несколько команд от имени root в быстрой последовательности.
Дэвид З,

-1

С помощью

судо су

позволит вам запустить столько команд, сколько вы хотите подряд.


2
Хорошая идея, но если я не изменю sudoзапрос на ввод пароля root, это все равно позволит кому-то получить root-доступ, представив только один пароль (не root). Так что это не решает проблему безопасности, которая вызвала мой вопрос.
Дэвид З,

Вместо того, чтобы использовать возможность sudo для ограничения доступа пользователем, вы предоставляете свой пароль root нескольким пользователям. Вы также удаляете возможность защиты вашего сервера, удаляя пароль от пользователя root.
BillThor
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.