Eu sei que a ativação do setuid em scripts tem problemas de segurança e, portanto, é inativa por padrão, mas espero que funcione para executáveis. Eu criei e executável que mostra o uid como saída, seguindo as instruções descritas neste post: Permitir setuid em scripts de shell
Mas ele retorna o mesmo uid (1000) antes e depois da execução sudo chmod +s ./setuid-test
. Eu acho que isso significa que o setuid não tem nenhum efeito no meu executável, por que e como resolver?
O código fonte:
#include <stdio.h>
#include <unistd.h>
int main(int argc, char** argv) {
printf("%d", geteuid());
return 0;
}
Construído e executado com
$ gcc -o setuid-test setuid-test.c
$ ./setuid-test
1000
$ sudo chown nobody ./setuid-test; sudo chmod +s ./setuid-test
$ ./setuid-test
1000
Ao executar ls -la
, é isso que recebo:
me@me:~$ ls -la setuid-test
-rwsrwsr-x 1 nobody me 8572 Aug 19 16:39 setuid-test
me@me:~$ ls -la setuid-test
---- retorna -----rwsrwsr-x 1 nobody me 8572 Aug 19 16:39 setuid-test
df .
o diretório para encontrar o ponto de montagem mount | grep nameofmountpoint
. Existe uma nosuid
bandeira listada lá?