Другой пароль SSH / логин от SUDO Password

9

Я хотел бы использовать другой пароль для повышения статуса пользователя до статуса sudo, чем пароль, который я использую для входа (через GUI, оболочку или SSH) в свою учетную запись. Это возможно?

РЕДАКТИРОВАТЬ: Поскольку установка пароля root позволит войти в систему как root, это не очень хороший способ. Я бы предпочел пользовательский пароль sudo, а не системный пароль root.

Ричард
источник
1
Можете ли вы уточнить это - почему вы хотите это сделать?
Даг Харрис
1
Я чувствую, что вопрос достаточно хорошо объясняет себя, но цель состоит в том, чтобы сделать вход в систему безопасным с помощью длинных, сложных паролей, а затем использовать другой пароль для доступа sudo, чтобы скомпрометировать учетную запись пользователя автоматически не предоставляло доступ sudo.
Ричард
Я слышал, что можно делать sudo с помощью ключей rsa / dsa, которые могут иметь любую фразу-пароль.
Роб

Ответы:

2

от человека sudoers:

rootpw          If set, sudo will prompt for the root password instead of the
                password of the invoking user.  This flag is off by default.

runaspw         If set, sudo will prompt for the password of the user defined
                by the runas_default option (defaults to root) instead of the
                password of the invoking user.  This flag is off by default.

Или вы можете просто полностью запретить логин на основе пароля через ssh. Требуется ключ шифрования пароля для удаленного входа в систему. Тогда вы можете использовать пароль для sudo. Соответствующая опция

от человека sshd_config

 PasswordAuthentication
         Specifies whether password authentication is allowed.  The default
         is “yes”.
Чес. Owens
источник
Спасибо за помощь, Час. Оуэнс. Боюсь, что побочным эффектом вашего решения является то, что учетная запись root будет иметь пароль, и поэтому будет возможно войти в систему как root, что не является дверью, которую я хочу оставить открытой. Я бы предпочел пользовательский пароль sudo, а не системный пароль root.
Ричард
Вы также можете отключить root-вход в sshd_config
Роб
1

вы ищете это вместо этого в sudoers человек?

   targetpw        If set, sudo will prompt for the password of the user
                   specified by the -u option (defaults to root) instead of the
                   password of the invoking user. 
johnshen64
источник
Спасибо за вашу помощь, johnshen64. Боюсь, что побочным эффектом вашего решения является то, что учетная запись root будет иметь пароль, и поэтому будет возможно войти в систему как root, что не является дверью, которую я хочу оставить открытой. Я бы предпочел пользовательский пароль sudo, а не системный пароль root.
Ричард
этот пользователь не обязательно должен быть пользователем root, по умолчанию он просто root, если вы его не указали. Вы можете поэкспериментировать, чтобы увидеть, будет ли это для вас. Unix довольно открыт, и если они все еще не работают для вас, вы можете даже написать скрипт-обертку или даже изменить sudo (если вы знаете c), чтобы делать именно то, что вы хотите.
johnshen64
@ johnshen64 Я думаю, он возражает против того, что один и тот же пароль будет использоваться для всех пользователей.
час. Оуэнс
Я вижу, что для каждого пользователя может быть создан пользователь-администратор, скажем, $ {USER} foradmin, так что пользователь всегда указывает -u $ {USER} foradmin, хотя для обеспечения того, чтобы sudo все еще нужно было заменять собственным скриптом.
johnshen64
1

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

Помимо этого вам придется настроить /etc/pam.d/sudoиспользование другого (или дополнительного) модуля, на первый взгляд pam_dialpassможет быть то, что вам нужно.

Вы также можете настроить конфигурацию LDAP для одного и локальные пароли для другого. Все будет зависеть от того, сколько изменений вы сможете и готовы сделать, какие модули доступны и т. Д.

Брэм
источник
Спасибо за вашу помощь, Брэм. Ваше первое предложение будет работать, за исключением того, что аутентификация с открытым ключом может быть непозволительной для работы, если вы не подготовлены для передачи файлов ключей.
Ричард
1

РЕШЕНИЕ 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 по умолчанию теперь является пользователем sudosudo, и вам нужно явно указать root:

sudo -u root <cmd>

Но достаточно просто определить псевдоним ( alias sudo='sudo -u root') или косвенную команду sudo.

spinkus
источник