Eu não acho que você realmente queira ou precise de su
para o seu caso de uso. O que você parece querer é que um determinado grupo de usuários possa assumir arbitrariamente a identidade de qualquer usuário em um outro grupo específico. Você só precisa de sudoers para isso:
%admin ALL=(%users) NOPASSWD:ALL
A regra de sudoers acima significa que todos os usuários no grupo admin
podem executar qualquer comando como qualquer usuário no grupo users
via sudo -u <user> <command>
.
Se você quiser limitar os comandos que os usuários administradores podem executar como outro usuário, você substitui ALL
no final por algo mais específico. Veja man sudoers
para saber mais sobre isso.
Para obter um shell de login para o usuário do grupo users
, em vez de usar su
, um administrador poderia ser:
sudo -u anna /bin/bash -il
Uma nota sobre su
(man su):
The su command is used to become another user during a login session.
su
sempre solicita a senha do usuário que você está registrando, exceto para o caso em que o usuário solicitante é root. sudo su - [user]
não solicita uma senha porque você eleva para root (via sudo) e, em seguida, exec su - [user]
para iniciar uma nova sessão de login. Mas se você não quiser elevar o sudoer para root, o sudoer precisa saber a senha do usuário que deseja su
as, derrotando o propósito de usar sudo
em primeiro lugar.