linux setuid não funciona

4

Estou aprendendo o linux suid, então escrevi um pequeno programa c com o seguinte conteúdo para testá-lo

#include<stdio.h>
int main(){
system("echo 100 >> test.txt");
return 0;
}
-rwsr-xr-x 1 root root 8004 Sep 10 16:19 test

test.txt é um arquivo que só pode ser modificado pela raiz

-rw-r----- 1 root root 

Se eu executar o programa de teste com uma conta de usuário, ele deverá adicionar 100 ao arquivo vazio. Mas sai:

sh:test.txt:Permission denied

Por quê?

    
por John 24.01.2015 / 17:34

1 resposta

2

Seu cenário funciona perfeitamente aqui para mim.

$ ls -l test*
-rwsr-xr-x 1 root  root  6776 Jan 24 17:18 test
-rw-r--r-- 1 chris chris   74 Jan 24 17:18 test.c
-rw-r----- 1 root  root     0 Jan 24 17:20 test.txt
$ ./test
ls -l test.txt
-rw-r----- 1 root root 4 Jan 24 17:21 test.txt
$ sudo cat test.txt
100

É possível que você esteja testando seu programa em um sistema de arquivos que não permite executáveis setuid? Execute o comando mount e procure nosuid no sistema de arquivos, como aqui:

tmpfs on /tmp type tmpfs (rw,nosuid,nodev,noexec,relatime)
    
por 24.01.2015 / 18:26

Tags