Різні SSH / Пароль для входу від пароля SUDO


9

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

EDIT: Оскільки встановлення пароля root дозволить увійти як root, це не дуже вдалий шлях. Я вважаю за краще користувальницький пароль sudo, а не загальносистемний пароль.


1
Чи можете ви детальніше зупинитися на цьому - чому ви хочете це робити?
Дуг Харріс

1
Я вважаю, що питання пояснює себе досить добре, але мета полягає в тому, щоб зробити вхід безпечним через довгі, складні паролі, а потім використовувати інший пароль для доступу до 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. Відповідний варіант є

від man sshd_config

 PasswordAuthentication
         Specifies whether password authentication is allowed.  The default
         is “yes”.

Дякую за допомогу, Час. Оуенс. Я боюся, що побічним ефектом вашого рішення є те, що кореневий обліковий запис мав би пароль, і тому можна було б увійти як root, а це не двері, які я хочу залишити відкритими. Я вважаю за краще користувальницький пароль sudo, а не загальносистемний пароль.
Річард

Ви також можете відключити кореневе вхід із sshd_config
Роб

1

ти шукаєш це замість людини в судорах?

   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. Я боюся, що побічним ефектом вашого рішення є те, що кореневий обліковий запис мав би пароль, і тому можна було б увійти як root, а це не двері, які я хочу залишити відкритими. Я вважаю за краще користувальницький пароль sudo, а не загальносистемний пароль.
Річард

що користувач не повинен бути користувачем root, він просто встановлює корінь, якщо ви не вказуєте його. ви можете експериментувати, щоб побачити, чи буде це для вас. unix досить відкритий, і якщо вони все ще не працюють для вас, ви навіть можете написати скрипт для обгортки або навіть змінити sudo (якщо ви знаєте c), щоб робити саме те, що ви хочете.
johnshen64

@ johnshen64 Я думаю, що він заперечує проти того, щоб той самий пароль використовувався для всіх користувачів.
Час. Оуенс

Я бачу, але користувач адміністратора може бути створений для кожного користувача, скажімо, $ {USER} foradmin, щоб користувач завжди вказував -u $ {USER} foradmin, хоча для примусового виконання цього судо все-таки потрібно замінити спеціальний сценарій.
johnshen64

1

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

Крім того, вам доведеться налаштувати /etc/pam.d/sudoвикористання іншого (або додаткового) модуля, на перший погляд це pam_dialpassможе призвести до того, що вам потрібно.

Ви також можете налаштувати конфігурацію LDAP для одного та локальних паролів для іншого. Все залежатиме від того, скільки змін ви зможете та готові внести, які модулі доступні тощо.


Дякую за допомогу, Брем. Ваша перша пропозиція спрацює, окрім того, щоб автентифікація відкритих ключів не могла працювати з ними, якщо ви не готові перенести файли ключів.
Річард

1

РІШЕННЯ 1: newgrp

Найпростішим способом вирішити ваш випадок використання буде використання :NOPASSWDв поєднанні з груповим і груповим паролем:

Додайте рядок до судорів:

%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 буде запропоновано отримати пароль passdo, але лише користувачі групи sudo зможуть судо (на відміну від рішення групи вище, де кожен із групи або з passwd групи може судо).

Невелика проблема - це те, що користувач runas за замовчуванням тепер sudoнастільки, щоб sudo як root, потрібно чітко вказати root:

sudo -u root <cmd>

Але досить просто визначити псевдонім ( alias sudo='sudo -u root') або непряму команду sudo.

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