Hallo, Ratti:
ich möchte auf meinem apache einige cgi-scripte verwenden, die tief ins System eingreifen und daher root-Rechte benötigen.
Ich hab es mit eurer Hilfe geschafft. Das war wirklich ein weiter Weg. Ich dokumentiere ihn hier noch mal zusammenfassend. Suse erlaubt kein s-Bit bei Scripten. Von dieser Einstellung sind auch cgis in perl betroffen. Um das zu umgehen, gibt es suidperl. Erster Fallstrick: Ich hatte irgendwann mal perl selbst kompiliert. Beim konfigurieren wird man gefragt, ob das System "sicher" sei und ob man gerne die Möglichkeit hätte, Scripte als root auszuführen. Defaultantwort ist NEIN. Das ist schonmal schlecht. Hier "ja" angeben, sonst wird suidperl gar nicht erst erzeugt. Wenn man es dann endlich hat, hat es aber die falschen Rechte. Dazu befindet sich ein Artikel in der SDB. Kurzfassung: In die Datei /etc/permissions.local eintragen: /usr/bin/suidperl root.root 4755 und SuSEconfig starten. Dann werden die Rechte korrekt gesetzt und bleiben es auch. Zweiter Fallstrick: Das perl-Script muß gegenüber einem "normalen" Script verändert werden. Es wurde hier angegeben, daß der suidperl als Interpreter im !# angegeben werden müsste. Das ist m.E. nicht nötig. Allerdings muß der Pfad "beschnitten" werden. So lieferte print `whoami`; ebenso eine Fehlermeldung wie print `/usr/bin/whoami`; Erst durch vorheriges Einfügen von $ENV{'PATH'} = '/bin:/usr/bin:/usr/sbin:/usr/bsd:/usr/local/bin'; ließ sich das Script dann endlich zum funktionieren bewegen. Permissions und Eigentümer: ls -la probe.pl -rws--s--x 1 root root 187 Apr 2 21:55 probe.pl Inhalt der Datei: #!/usr/bin/perl print ("Content-type: text/html\n\n"); print "<HTML>"; $ENV{'PATH'} = '/bin:/usr/bin:/usr/sbin:/usr/bsd:/usr/local/bin'; $x= `/usr/bin/whoami`; print "I am $x<\/HTML>"; Und schliesslich der HTML-Output: I am root Yes, you are. :-) Danke nochmal, Gruß, Ratti