Cada processo tem três IDs de usuário:
- ID de usuário real (
ruid
). - ID de usuário efetivo (
euid
). - ID do usuário salvo (
suid
).
Da mesma forma, um processo tem três IDs de grupo:
- ID do grupo real (
rgid
). - ID do grupo efetivo (
egid
). - ID do grupo salvo (
sgid
).
Pelo que entendi, o euid
e egid
(junto com o supplementary group IDs
) são usados ao lidar com permissões.
Mas e quanto ao ruid
e suid
e rgid
e sgid
, eles desempenham algum papel ao lidar com permissões?
Na verdade, o Linux usa o ID do usuário do sistema de arquivos e o ID do grupo (mais, é claro, os IDs do grupo suplementares) para determinar as permissões para acessar arquivos; ver
setfsuid()
. Normalmente, esses são os mesmos que o ID do usuário efetivo e o ID do grupo. O ID de usuário real e salvo e o ID de grupo nunca são usados para determinar os direitos de acesso a arquivos, memória compartilhada, etc.O id de usuário real e salvo são usados para determinar se um processo pode enviar um sinal para outro processo; ver
man 2 kill
.Veja
man 7 credentials
a discussão completa.