
Ich habe ein C.cgi-Programm, das läuft und größtenteils funktioniert. Ich brauche es jedoch für einige Dateimanipulationen, also chown root und chmod +s für das.cgi-Programm:
-rwsr-sr-x 1 root root 59140 2015-07-20 13:39 sectl.cgi
Wenn das Programm ausgeführt wird, verfügt es nicht über die erforderlichen Berechtigungen. Ein rename()-Befehl schlägt fehl. Die Ausgabe des Befehls
system("whoami");
ist wwwrun. Was ist hier los?
(Ich bin sicher, dass ich das Gleiche auf anderen Systemen erfolgreich gemacht habe)
openSUSE 11.2
Antwort1
Dabei sollten Sie einige Dinge beachten:
- setuid für Skripte ist wahrscheinlich deaktiviert (sieheErlaube setuid in Shell-Skriptenzum Beispiel).
- selbst wenn Ihr Programm eigentlich einbinärist es immer noch möglich, dass das Dateisystem, auf dem es sich befindet, mit demnosuidOption, oder dass SELinux die Funktion verbietet (siehe zum BeispielLD_PRELOAD mit Setuid-Binärdatei).