Suponha que eu tenha uma coleção de usuários sem privilégios (user01, user02, user03, ...) que são membros de um grupo de segurança do Linux chamado 'x_users':
$ groups user01
user01 : user01 x_users
Além disso, suponha que eu tenha uma coleção de usuários admin (admin01, admin02, admin03, ...) que são todos membros de um grupo de segurança do Linux chamado 'x_admins':
$ groups admin01
admin01 : admin01 x_admins
Eu quero que cada membro do grupo x_admin tenha a capacidade de usar sudo (8) e su (1) para invocar um shell de login interativo como qualquer usuário que seja membro do grupo x_users, por exemplo,
[admin01 ~]$ sudo su - user01
[user01 ~]$ # do stuff as user01
[user01 ~]$ exit
[admin01 ~]$
Os membros do grupo x_admins não podem usar sudo (8) e su (1) para invocar um shell de logon interativo para qualquer usuário que não seja membro do grupo x_users:
[admin01 ~]$ sudo su - nonxuser
[sudo] password for admin01:
Sorry, user admin01 is not allowed to execute '/bin/su - nonxuser' as root on localhost
[admin01 ~]$
Uma maneira de conseguir isso é criar um arquivo de configuração '/etc/sudoers.d/x_admins' da seguinte maneira:
# /etc/sudoers.d/x_admins
User_Alias ADMINS = %x_admins, %wheel
ADMINS ALL = (root) /bin/su - user01
ADMINS ALL = (root) /bin/su - user02
ADMINS ALL = (root) /bin/su - user03
# ...
É claro que listar manualmente os membros individuais do grupo x_users em um arquivo de configuração do sudoers é tedioso e propenso a erros. Existe uma maneira mais concisa de realizar isso no arquivo de configuração do sudoers?