В этом руководстве мы покажем, как переключиться на другую или конкретную учетную запись пользователя без пароля.
Например, у нас есть учетная запись пользователя с именем 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
auth [success=ignore default=1] pam_succeed_if.so user = postgres
auth sufficient pam_succeed_if.so use_uid user ingroup postgres
Сохраните файл и закройте его.
Затем добавьте пользователя (например, aaronk), которого вы хотите использовать с su, в учетную запись postgres без пароля в группу postgres с помощью команды usermod.
$sudo usermod -aG 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
$ man pam.conf $ man sudo