Я хочу, чтобы на моем сервере fox
пользователь мог быть / сменить пользователя и быть пользователем42
без пароля ( fox
у пользователя нет пароля, если он входит в систему с помощью ключей SSH) ::
srv6:/etc# grep user42 /etc/sudoers
fox ALL=(ALL:ALL) NOPASSWD: /bin/su user42
srv6:/etc#
Он хорошо работает, если они делают sudo su user42
:
fox@srv6:~$ sudo su user42
user42@akd6:/home/fox$
Но если я попробую, очистить оболочку с помощью sudo su - user42
NOPASSWD не работает
fox@srv6:~$ sudo su - akd
[sudo] password for fox:
Это не сработает, потому что sudo su - user42
не соответствует тому, что вы предоставили в своем правиле. Это правило не содержит тире -
и поэтому не отображается.
Как насчет того, чтобы сделать что-то вроде:
fox ALL=(user42) NOPASSWD: ALL
предоставить fox право делать что-либо как user42 без пароля,
а затем sudo -ui user42
, где -i
будет
-i, --login Запустить оболочку, указанную записью базы данных паролей целевого пользователя, в качестве оболочки входа в систему. Это означает, что файлы ресурсов для входа в систему, такие как .profile или .login будет прочитан оболочкой.
Я считаю, что это и есть желаемый вами результат.