Як змусити судо запитати пароль для кореня?


25

Коли я працюю sudoяк звичайний непривілейований користувач, він запитує мій пароль, а не пароль root. Це часто зручно, але це зменшує кількість інформації, яку хтось повинен мати, щоб запускати команди як root. Тож як я можу змусити sudoзапросити корінний пароль замість пароля, що викликає користувача?

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


Рекомендую обмежити команди, дозволені як користувачу, що не має права root, так що вам не потрібно турбуватися про викриття довільних команд.
Slartibartfast

@slartibartfast: але що станеться, коли мені потрібно виконати команду як root, який не знаходиться у попередньо затвердженому списку?
David Z

Відповіді:


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щоб увімкнути цей прапор?
David Z

2
За замовчуванням rootpw
Флоріан Діеш

@Florian: whaddya знаю, це так просто :-) Якщо ви опублікуєте це як відповідь, ви отримаєте галочку.
David Z

3

Я знаю, що це питання давнє, але це найкоротше запитання, яке я знайшов для цього випадку використання (що є незначним відсотком, правда, але, тим не менш, законний і корисний у правильному сценарії).

Після складання всіх кроків з різних джерел - включаючи безліч відповідей на це питання, ці кроки працюють над Ubuntu-Gnome 16.04 LTS:

  1. Встановіть пароль для root
    • Це CRITICAL зробити СПОЧАТКУ ! (Ubuntu автоматично не має пароля для користувача ROOT через стандартну конфігурацію безпеки.
    • Якщо ви цього не зробите спочатку, ви заблокуєте доступ до привілеїв root. Цього можна подолати, завантажившись на Live Disk, встановивши жорсткий диск та відредагувавши файл sudoers, але краще цього уникати.
    • Відкрийте термінал і введіть: sudo passwd
    • Встановіть новий пароль для користувача ROOT.
  2. Змініть конфігурацію SUDO, щоб вимагати пароль root
    • SUDO вимагає від користувача запиту root права
    • Встановлення прапора "rootpw" натомість вказує SUDO вимагати пароль для користувача root.
    • Відкрийте термінал і введіть: sudo visudo
    • Це відкриє файл "/ etc / sudoers"
    • Після іншого рядка "За замовчуванням" додайте: Defaults rootpw
    • Збережіть це (припустимо, що ви знаходитесь в нано, це за замовчуванням, це 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тепер має можливість запускати ВСІ команди як будь-який користувач на ВСІХ хостах, доки не буде відомий корінний пароль.

Іншою робочою можливістю буде:

Defaults rootpw
%sudousers ALL=(ALL) ALL

Будь-який член sudousersгрупи матиме можливість запускати ВСІ команди, як будь-який користувач на ВСІХ хостах, доки не буде відомий корінний пароль. Щоб дозволити myuserвиконувати команди sudo, sudousersпотрібно було б додати його до другорядних груп.

su
usermod -a -G sudousers myuser
exit

Чудове пояснення. Більш детально, ніж поетапний я опублікований (який працював на основі стандартних параметрів Ubuntu).
SRDC

0

Ви можете просто вимкнути судо і використовувати su -c.


Незручно, оскільки мені доводиться вводити свій пароль кожного разу, коли я його запускаю. Тут має місце використання декількох команд як root у швидкій послідовності.
David Z

-1

Використання

судо су

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


2
Хороша ідея, але якщо я sudoне змінюю запросити пароль для кореня, це все одно дозволить комусь отримати доступ до root, подавши лише один пароль (а не root). Тож насправді це не стосується проблеми безпеки, що підштовхнуло моє запитання.
David Z

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