No Linux, como posso remover temporariamente minha associação com um grupo?

3

Eu preciso testar as permissões do grupo linux em um repositório. Em um shell, como posso remover temporariamente uma das associações do meu grupo?

por exemplo,
Se meus grupos forem definidos como:

 % groups
 foo bar baz

Como posso fazer com que ele retorne apenas foo bar sem baz ?

    
por Ross Rogers 21.01.2010 / 18:54

2 respostas

3

É possível.

Confira este código (válido C89, heh) que escrevi em 25 minutos. Exemplo de uso:

whitequark@forth:~/skipgroup$ ls
skipgroup.c
whitequark@forth:~/skipgroup$ gcc skipgroup.c -o skipgroup
whitequark@forth:~/skipgroup$ sudo chown root:root skipgroup
whitequark@forth:~/skipgroup$ sudo chmod u+s skipgroup
whitequark@forth:~/skipgroup$ groups
whitequark adm dialout cdrom plugdev lpadmin admin sambashare
whitequark@forth:~/skipgroup$ ./skipgroup 
Usage: ./skipgroup <group to remove>
Must be SUID. Launches shell.
whitequark@forth:~/skipgroup$ ./skipgroup cdrom
$ id
uid=1000(whitequark) gid=1000(whitequark)
groups=4(adm),20(dialout),46(plugdev),104(lpadmin),114(admin),118(sambashare),1000(whitequark)

AVISO ESTE CÓDIGO É SUID!

Enquanto ele deixa privilégios como você vê na saída do ID, PODE SER PERIGOSO. Dixi.

    
por 21.01.2010 / 20:11
2

Acho que isso não é possível, pois arquivos (e ACLs POSIX) podem especificar direitos subtrativos para determinados grupos. Permitir que as pessoas escapem de um grupo seria uma falha de segurança.

Claro que se você tiver acesso root, você pode simplesmente remover-se do grupo e fazer

sudo su - $USER
    
por 21.01.2010 / 19:47