setuid bit tem comportamento diferente dependendo do diretório

1

Eu tenho testado a permissão do setuid e estou tendo problemas para fazer isso funcionar.

Digamos que eu esteja fazendo os testes com dois usuários owneruser e otheruser .

Eu escrevi um programa c simples que tudo o que faz é chamar system() para exibir o usuário atual.

testid.c:

int main(void)
{
  setresgid(222, 222, 222); // To simplify, this numbers represent just harcoded 
  setresuid(222, 222, 222); // values for the owneruser id and owneruser group id

  system("whoami");
}

O usuário owneruser compila o programa para dois diretórios diferentes e define o bit setuid, um que owneruser possui e o outro para o exemplo para o diretório /tmp , os comandos são parecidos com:

gcc testid.c -o /tmp/testid
gcc testid.c -o /home/owneruser/testid

chmod 4755 /tmp/testid
chmod 4755 /home/owneruser/testid

Agora, quando otheruser executar os programas, em /home/owneruser/testid , obtenho a saída:

owneruser

e em /tmp/testid recebo a saída:

otheruser

O que está causando esse comportamento diferente?

    
por wallek876 22.10.2017 / 14:24

0 respostas

Tags