Posso adicionar aos meus grupos no processo atual (shell)? [duplicado]

5

Se eu me adicionar a um grupo, isso se aplica somente aos processos recém-lançados. Na verdade, é mais restrito do que isso; parece se aplicar apenas a novos logins. Não sei qual é o mecanismo exato, mas essa não é a minha pergunta (embora eu também esteja curioso sobre isso).

Minha pergunta é a seguinte: É possível atualizar minha associação de grupo no processo de shell atual ?

Eu suspeito que a resposta seja não.

Um exemplo (isso não é uma cópia e colagem direta):

$ groups ; groups kst
kst oldgroup1 oldgroup2
kst : kst oldgroup1 oldgroup2
$ sudo adduser kst newgroup
[sudo] password for kst:
Adding user 'kst' to group 'newgroup' ...
Adding user kst to group newgroup
Done.
$ groups ; groups kst
kst oldgroup1 oldgroup2
kst : kst oldgroup1 oldgroup2 newgroup
$

Após o adduser , minha conta é um membro de newgroup , mas essa associação não é refletida no processo de shell atual.

A solução óbvia é sair e efetuar login novamente, mas isso é inconveniente.

    
por Keith Thompson 17.01.2013 / 20:06

1 resposta

4

Não é possível, fora do próprio processo. Veja esta pergunta do SuperUser para mais discussão e uma resposta envolvendo o uso de um depurador para anexar ao processar e executar setgid() de dentro dele.

O motivo pelo qual é necessário um novo login para realizar as novas associações de grupo é que login (ou sshd ou qualquer outra coisa) é executado como raiz e deve definir UID e GID de processo para seu processo de shell, o que significa já chamando setuid e setgid .

    
por 17.01.2013 / 20:37