Je sais que l'activation de setuid sur les scripts pose des problèmes de sécurité et est donc inactive par défaut, mais attendez-vous à ce que cela fonctionne pour les exécutables. J'ai créé et exécutable qui affiche uid en sortie en suivant les instructions décrites dans ce post: Autoriser setuid sur les scripts shell
Mais il retourne le même uid (1000) avant et après l'exécution sudo chmod +s ./setuid-test
. Je pense que cela signifie que setuid n'a aucun effet sur mon exécutable, pourquoi et comment le résoudre?
Le code source:
#include <stdio.h>
#include <unistd.h>
int main(int argc, char** argv) {
printf("%d", geteuid());
return 0;
}
Construit et exécuté avec
$ gcc -o setuid-test setuid-test.c
$ ./setuid-test
1000
$ sudo chown nobody ./setuid-test; sudo chmod +s ./setuid-test
$ ./setuid-test
1000
En courant ls -la
, voici ce que j'obtiens:
me@me:~$ ls -la setuid-test
-rwsrwsr-x 1 nobody me 8572 Aug 19 16:39 setuid-test
me@me:~$ ls -la setuid-test
---- renvoie -----rwsrwsr-x 1 nobody me 8572 Aug 19 16:39 setuid-test
df .
dans le répertoire pour trouver le point de montage mount | grep nameofmountpoint
. Y a-t-il un nosuid
drapeau qui y figure?