РЕШЕНИЕ 1: newgrp
Простым способом решения вашего варианта использования было бы использование :NOPASSWD
в сочетании с группой и группой passwd:
Добавьте строку в sudoers:
%rudo ALL=(ALL:ALL) NOPASSWD:ALL
Создайте защищенную группу passwd:
groupadd rudo
gpasswd rudo # Enter passwd
Теперь, когда вы входите в систему как непривилегированный пользователь (при условии, что вы еще не в группе rudo
), войдите в группу rudo
, после чего вам будет предложено ввести пароль.
login user
newgrp rudo
Теперь вы можете запускать sudo
пароля, если вы остаетесь в группе.
РЕШЕНИЕ 2: runaspw
Лучший, возможно, более безопасный способ сделать это использует runaspw
. runaspw
связан с параметром runas_default
поэтому вы должны добавить этот параметр также.
Предполагая, что у вас уже есть запись группы %sudo
по умолчанию:
%sudo ALL=(ALL:ALL) ALL
добавьте эти строки в файл sudoers:
Defaults:%sudo runas_default=sudo
Defaults:%sudo runaspw
Теперь добавьте нового пользователя sudo
с паролем:
useradd sudo -d /nonexistent -s /usr/sbin/nologin -MNr
passwd sudo
Теперь пользователям группы sudo будет предложено ввести пароль пользователя sudo, но sudo смогут использовать только пользователи из группы sudo (в отличие от вышеуказанного решения для группы, где любой пользователь в группе или группе passwd может использовать sudo).
Незначительной проблемой является то, что по умолчанию пользователь runas имеет sudo
поэтому для sudo в качестве пользователя root необходимо явно указать root:
sudo -u root <cmd>
Но достаточно просто определить псевдоним (alias sudo='sudo -u root'
) или косвенную команду sudo.