So che abilitare setuid su script ha problemi di sicurezza e quindi è inattivo per impostazione predefinita, ma mi aspetto che funzioni per eseguibili. Ho creato ed eseguibile che mostra uid come output seguendo le istruzioni descritte in questo post: Consenti setuid su script shell
Ma restituisce lo stesso uid (1000) sia prima che dopo l'esecuzione sudo chmod +s ./setuid-test
. Penso che questo significhi che setuid non ha alcun effetto sul mio eseguibile, perché e come risolverlo?
Il codice sorgente:
#include <stdio.h>
#include <unistd.h>
int main(int argc, char** argv) {
printf("%d", geteuid());
return 0;
}
Costruito e gestito con
$ gcc -o setuid-test setuid-test.c
$ ./setuid-test
1000
$ sudo chown nobody ./setuid-test; sudo chmod +s ./setuid-test
$ ./setuid-test
1000
Quando corro ls -la
, questo è quello che ottengo:
me@me:~$ ls -la setuid-test
-rwsrwsr-x 1 nobody me 8572 Aug 19 16:39 setuid-test
me@me:~$ ls -la setuid-test
---- restituisce -----rwsrwsr-x 1 nobody me 8572 Aug 19 16:39 setuid-test
df .
la directory per trovare il punto di montaggio, quindi mount | grep nameofmountpoint
. C'è una nosuid
bandiera elencata lì?