setuid e setgid confusion

5

Estou tentando entender completamente o conceito de setuid e setgid, e não tenho muita certeza de que maneira as permissões são realmente elevadas. Deixe-me fornecer um exemplo:

Usuários

userA (groups: userA groupA)
userB (groups: userB groupB GroupC)

Executável

Permission owner group  filename
-rws-----x userA groupD file
-rwsrws--x userA groupD file2

Se userB executar file e file2 , que permissão de grupo os executáveis terão? O que eu não estou completamente certo é se o executável ganha permissões de usuário / grupo de ambos o chamador e o proprietário do arquivo, ou se as permissões são "substituídas".

Eu sei que esse é um exemplo tolo, já que setuid e setgid normalmente são usados para invocar aplicativos "todo-poderosos", mas espero que este exemplo seja melhor para conceituar como o setuid e o setgid funcionam.

    
por jkgeyti 07.11.2012 / 15:59

2 respostas

3

setuid define o uid eficaz euid . setgid define o código efetivo egid .

Em ambos os casos, os chamadores uids e gids permanecerão no lugar. Então, mais ou menos, você pode dizer que obterá esse uid / gid além dos chamadores uid e gid (ativos).

Alguns programas podem diferenciá-lo muito bem.

Se você entrar em um sistema, então su para root e depois emitir um who am i você verá sua conta "antiga".

su é um desses suid-binários, que mudará o euid .

    
por 07.11.2012 / 22:26
3

Tanto quanto eu sei:

  • Com setuid , o executável é executado como o proprietário do executável e os grupos do chamador. Você não tem permissões de grupo do proprietário do executável.

  • Com setgid , o executável é executado como o chamador. O conjunto de grupos contém os grupos de chamadores e o grupo do executável.

(Para ter certeza de que acabei de testar isso no Ubuntu 10.04)

    
por 07.11.2012 / 17:48