Как создать пользователя Linux, у которого sudo запрашивает пароль root, а не текущего пользователя

Как создать пользователя Linux, у которого sudo запрашивает пароль root, а не текущего пользователя

Я создал нового пользователя, adduserно когда я попытался выполнить sudo из его учетной записи, я получил xxxx * is not in the sudoers file. This incident will be reported..

Поэтому я начал вмешиваться в visudoкоманду...

Я понимаю, что у учетной записи root следующая конфигурация:

root    ALL=(ALL:ALL) ALL

Но я не хочу дублировать это для своего нового пользователя...


Я хочу, чтобы у моего пользователя xxxx НЕ было прав root, за исключением случаев использования sudo.
При использовании sudo я хочу, чтобы у пользователя xxxx запрашивался пароль root, а не его собственный пароль!!

Спасибо


Использование виртуальной машины Debian 10
, только ssh

решение1

Я хочу, чтобы у моего пользователя xxxx НЕ было прав root, за исключением случаев использования sudo.

На самом деле это нормальное состояние для обычных пользователей: вам не нужно ничего делать, кроме настройки sudo, чтобы указать, какие команды разрешены.

root    ALL=(ALL:ALL) ALL

Эта строка существует только для того, чтобы разрешить использование, sudoесли вы уже переключились на пользователя root. Важная строка, которая предоставляет разрешения не-root пользователям, это:

# Allow members of group sudo to execute any command
%sudo   ALL=(ALL:ALL) ALL

(В некоторых дистрибутивах Linux первый обычный пользователь, созданный во время установки ОС, может стать членом группы sudoи, таким образом, автоматически получить доступ root. Это исключение, а не правило по умолчанию для всех пользователей.)

Базовая форма спецификации разрешений в файле sudoers выглядит следующим образом:

<who>  <where>=(<as_who>) <what>
  • <who>определяет, какой пользователь(и) может использовать эту запись. Это может быть пользователь, группа (с префиксом в виде знака %) или ранее определенный User_Alias ​​(в основном, сокращение для длинного списка пользователей и/или групп) и несколько других вещей.

  • <where>может быть именем хоста: это ограничивает эту запись определенной системой. Это может быть полезно в корпоративной среде, где вы размещаете централизованно управляемый стандартный sudoersфайл на всех хостах, но часто это указывается как ВСЕ, чтобы избежать проблем в случае, если разрешение имени хоста не работает или система неправильно настроена.

  • (<as_who>)определяет учетные записи пользователей, от имени которых могут быть запущены команды. По умолчанию используется root, но вы также можете ограничить пользователя, чтобы он мог запускать команды с sudo только для определенной учетной записи не root, например.

  • <what>— это команда (или команды, разделенные запятыми), которую необходимо разрешить.

Существуют также различные теги и параметры, но вышеизложенное — это важная часть файла sudoersвкратце.

При использовании sudo я хочу, чтобы у пользователя xxxx запрашивался пароль root, а не его собственный пароль.

Это возможно и довольно легко сделать. Если вы добавите эти строки в свой sudoersфайл:

Defaults:xxxx rootpw,timestamp_timeout=0
xxxx    ALL=(ALL:ALL) ALL

затем для пользователя xxxxтолькодля них) sudoкоманда запросит пароль root - и она спроситкаждый разиспользуется команда вместо поведения по умолчанию, когда для использования команды без повторного запроса пароля sudoотводится до 15 минут .sudo

Это важно, если вы планируете следить за пользователем и самостоятельно вводить пароль root, когда он понадобится. Если вы пропустите эту timestamp_timeout=0возможность, пользователь может сначала попросить вас ввести пароль root для какого-то законного действия, а затем в течение следующих 15 минут придумать для вас отвлечение, и в течение этого времени он сможет использовать его sudoдля чего угодно.

Но учтите, чтоsuЕсли вы сообщите пользователю пароль root, он также сможет использовать его с командой, если только вы не примените нестандартные ограничения к su. Классический (и обычно единственный) способ ограничения — потребовать, чтобы пользователь был членом определенной группы, иначе он вообще suне сможет использовать . Чтобы применить это ограничение, отредактируйте и найдите эту часть в начале:su/etc/pam.d/su

# Uncomment this to force users to be a member of group root
# before they can use `su'. You can also add "group=foo"
# to the end of this line if you want to use a group other
# than the default "root" (but this may have side effect of
# denying "root" user, unless she's a member of "foo" or explicitly
# permitted earlier by e.g. "sufficient pam_rootok.so").
# (Replaces the `SU_WHEEL_ONLY' option from login.defs)
# auth       required   pam_wheel.so

Просто удалите символ #из начала последней строки, и suкоманда будет доступна только членам группы root.

Связанный контент