Sou relativamente novo nos conceitos mencionados na pergunta e ler sobre eles de diferentes fontes apenas os torna mais confusos. Então é isso que eu entendi até agora:
Quando recebemos permissões para um arquivo, elas se parecem com isso:
-rwsr-xr-- 1 user1 users 190 Oct 12 14:23 file.bin
Assumimos que um usuário user2
que está no grupo users
tenta executar file.bin
. Se o bit setuid não fosse definido, isso significaria que tanto o RUID quanto o EUID de file.bin
eram iguais ao UID deuser2
. Mas como o bit setuid está definido, isso significa que o RUID agora é igual ao UID de user2
, enquanto EUID é o UID do proprietário do arquivo user1
.
Minhas perguntas são:
- Qual é a diferença entre o proprietário do arquivo e
root
? Fazroot
as mesmas permissões que o proprietário? Ou precisaríamos de uma entrada separada na lista de permissõesroot
? - Diferença entre RUID e EUID?
- Pelo que entendi, o RUID e o EUID são aplicados apenas a processos. Se for esse o caso, por que eles têm o valor dos IDs de usuário?
- Se RUID é o usuário que cria o processo e EUID é o usuário que está executando o processo no momento, a primeira frase da primeira resposta nesta pergunta não faz sentido para mim.
- Entendi corretamente o que o bit setuid faz?
setuid
bit definido.root
) pode definir EUID e RUID para valores arbitrários (por exemplo, alogin
,su
esudo
programas fazem isso). Geralmente, quando um processo privilegiado altera seus UIDs para valores diferentes de zero, ele não é mais privilegiado e não pode se tornarroot
novamente. Veja as páginas de manual setuid (2) , seteuid (2) e setreuid (2) .setfsuid()
hoje em dia é desnecessário e deve ser evitado em novos aplicativos".