Ich weiß, dass das Aktivieren von setuid für Skripte Sicherheitsprobleme hat und daher standardmäßig inaktiv ist, aber ich erwarte, dass es für ausführbare Dateien funktioniert. Ich habe eine ausführbare Datei erstellt, die uid als Ausgabe anzeigt. Befolgen Sie dazu die in diesem Beitrag beschriebenen Anweisungen: Erlauben Sie setuid für Shell-Skripte
Es wird jedoch vor und nach dem Ausführen dieselbe UID (1000) zurückgegeben sudo chmod +s ./setuid-test
. Ich denke, dies bedeutet, dass setuid keine Auswirkungen auf meine ausführbare Datei hat. Warum und wie lösen?
Der Quellcode:
#include <stdio.h>
#include <unistd.h>
int main(int argc, char** argv) {
printf("%d", geteuid());
return 0;
}
Gebaut und betrieben mit
$ gcc -o setuid-test setuid-test.c
$ ./setuid-test
1000
$ sudo chown nobody ./setuid-test; sudo chmod +s ./setuid-test
$ ./setuid-test
1000
Beim Laufen ls -la
bekomme ich Folgendes:
me@me:~$ ls -la setuid-test
-rwsrwsr-x 1 nobody me 8572 Aug 19 16:39 setuid-test
me@me:~$ ls -la setuid-test
---- kehrt zurück -----rwsrwsr-x 1 nobody me 8572 Aug 19 16:39 setuid-test
df .
das Verzeichnis ein, um den Einhängepunkt zu finden mount | grep nameofmountpoint
. Ist dort eine nosuid
Flagge aufgeführt?