🐧 Как переключиться ( с помощью su) на другую учетную запись пользователя без пароля

by itisgood

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

Например, у нас есть учетная запись пользователя с именем postgres (системная учетная запись суперпользователя PostgreSQL по умолчанию), мы хотим, чтобы каждый пользователь (обычно наша база данных PostgreSQL и системные администраторы) в группе с именем postgres переключался на учетную запись postgres с помощью команды su без ввода пароль.

По умолчанию только пользователь root может переключиться на другую учетную запись без ввода пароля.

Любому другому пользователю будет предложено ввести пароль учетной записи пользователя, на которую он переключается (или, если они используют команду sudo, им будет предложено ввести свой пароль), если они не предоставят правильный пароль, они получат ошибка «authentication failed», как показано на следующем снимке экрана.

Вы можете использовать любое из двух решений, представленных ниже, чтобы решить указанную выше проблему.

1. Использование модуля аутентификации PAM

PAM (Pluggable authentication modules) лежат в основе аутентификации пользователей в современных операционных системах Linux.

Чтобы разрешить пользователям в определенной группе переключаться на другую учетную запись пользователя без пароля, мы можем изменить настройки PAM по умолчанию для команды su в файле /etc/pam.d/su.

 

# vim /etc/pam.d/su
или
$ sudo vim /etc/pam.d/su

Добавьте следующие конфигурации после «auth sufficient pam_rootok.so», как показано на следующем снимке экрана.

auth       [success=ignore default=1] pam_succeed_if.so user = postgres
auth       sufficient   pam_succeed_if.so use_uid user ingroup postgres
В приведенной выше конфигурации первая строка проверяет, является ли целевой пользователь postgres, если это так, служба проверяет текущего пользователя, в противном случае строка default = 1 пропускается и выполняются обычные шаги аутентификации.
auth       [success=ignore default=1] pam_succeed_if.so user = postgres
Следующая строка проверяет, входит ли текущий пользователь в группу postgres, если да, процесс аутентификации считается успешным и в результате возвращает достаточный результат.
В противном случае выполняются обычные шаги аутентификации.
auth       sufficient   pam_succeed_if.so use_uid user ingroup postgres

Сохраните файл и закройте его.

Затем добавьте пользователя (например, aaronk), которого вы хотите использовать с  su, в учетную запись postgres без пароля в группу postgres с помощью команды usermod.

$sudo usermod -aG postgres aaronk
Теперь попробуйте выполнить su к учетной записи postgres от имени пользователя aaronk, вам не нужно будет вводить пароль!
$ su - postgres

2. Использование файла Sudoers

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

В этом случае пользователь (например, aaronk), который переключится на другую учетную запись пользователя (например, postgres), должен находиться в файле sudoers или в группе sudo, чтобы иметь возможность вызывать команду sudo.

$ sudo visudo

Затем добавьте следующую конфигурацию под строкой «% sudo ALL = (ALL: ALL) ALL», как показано на следующем снимке экрана.

aaronk ALL=NOPASSWD: /bin/su – postgres

Сохраните и закройте файл.

Теперь попробуйте выполнить su на учетную запись postgres от имени пользователя aaronk, оболочка не должна запрашивать ввод пароля:

$ sudo su - postgres
На этом пока все! Для получения дополнительной информации см. Страницу PAM (man pam.conf), а также страницу команды sudo (man sudo).
$ man pam.conf
$ man sudo

 

You may also like

Leave a Comment