user2 precisa sair e voltar. As permissões de grupo funcionam assim:
- Quando você faz login, seus processos podem ter associação de grupo no seu grupo principal mencionado em
/etc/passwd, além de todos os grupos nos quais seu usuário é mencionado em/etc/group. (Mais precisamente, o campopw_gidemgetpw(your_uid), mais todos os grupos dos quais seu usuário é um membro explícito Além de/etc/passwde/etc/group, as informações podem vir de outros tipos de bancos de dados de usuários, como NIS ou LDAP. O grupo principal torna-se o processo ID de grupo eficaz e os outros grupos se tornam IDs de grupo suplementares . - Quando um processo realiza uma operação que exige associação em um determinado grupo, como acesso a um arquivo , esse grupo deve ser o ID do grupo ou um dos IDs de grupo suplementares do processo.
Como você pode ver, sua alteração na participação no grupo do usuário só entra em vigor quando o usuário faz o login. Para os processos em execução, é tarde demais. Assim, o usuário precisa fazer logout e voltar. Se isso for demais, o usuário pode efetuar login em uma sessão separada (por exemplo, em um console diferente ou com ssh localhost ).
Sob o capô, um processo só pode perder privilégios (IDs de usuário, IDs de grupo, recursos). O kernel inicia o processo init (o primeiro processo após o boot) sendo executado como root, e todo processo é descendente desse processo¹. O login process (ou sshd , ou a parte do seu gerenciador de área de trabalho que faz o seu login) ainda está sendo executado como root. Parte de seu trabalho é descartar os privilégios de root e mudar para o usuário e grupos adequados.
Existe uma única exceção: executar um programa setuid ou setgid . Esse programa recebe permissões adicionais: ele pode optar por atuar sob vários subconjuntos das associações do processo pai, além da associação adicional no usuário ou grupo que possui o executável setxid. Em particular, um programa de raiz setuid tem permissões de root, portanto, pode fazer tudo²; é assim que programas como su e sudo podem fazer seu trabalho.
Ocasionalmente, existem processos que não são derivados de init (initrd, udev), mas o princípio é o mesmo: inicie como root e perca os privilégios ao longo do tempo.
²
Bloqueio de estruturas de segurança multinível, como o SELinux.