Поиск по сайту:

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


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

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

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

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

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

vim /etc/pam.d/su
OR
sudo vim /etc/pam.d/su

Добавьте следующие конфигурации после «auth достаточный 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