Я создал нового пользователя, 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
.