Estou usando o Ubuntu 16.10. Acabei de fazer esta pergunta no Stack Overflow, mas fui aconselhado a perguntar neste fórum.
Eu estava acompanhando um livro, fazendo algo assim:
#include <stdio.h>
int main() {
printf("Real UID:\t%d\n", getuid());
printf("Effective UID:\t%d\n", geteuid());
}
E para executar este arquivo como sudo sem usar o comando sudo, depois de compilar com o gcc, alterei o proprietário e o grupo para root.
$ gcc -o test test.c
$ sudo chown root:root ./test
$ chmod u+s ./test
$ ls -l
-rwsr-xr-x 1 root root 8512 Mar 9 test
Agora, isso é o que obtive quando executei o arquivo. Meu UID é de 1.000.
$ ./test
Real UID: 1000
Effective UID: 1000
O livro que eu estava lendo dizia que o resultado deveria ser assim:
$ ./test
Real UID: 1000
Effective UID: 0
O UID do root é 0, certo? Isso significa que estou executando um arquivo -rwsr-xr-x , de propriedade do root, com meu próprio privilégio de usuário? Eu não entendo.