Michael Schröpl: Perlscript mit Benutzerrechten 711 starten

Beitrag lesen

#!su -c "/usr/bin/perl %" username
würde soetwas machen. Leider funktioniert das nicht, weil der Scriptname beim %-Zeichen als Parameter übergeben werden müsste und weil nach der Eingabe des Befehls nach dem Passwort gefragt würde. Das Passwort kann ich auch nicht per Parameter übergeben.

Genau - so geht es nicht, weil "su" nicht von einer umleitbaren Quelle wie stdin liest (sonst könnte man das Passwort mit "echo" hineinpipen), sondern von einer Dialogstation.

Ich hoffe, es findet noch jemand eine Lösung.

Was Du im Prinzip willst, ist die Ausführung eines Programms unter *seiner* Benutzerkennung, nicht unter der des Aufrufers.
Das geht unter UNIX mit dem s-Bit - wenn es denn ein Programm wäre, das Du ausführen willst. Ist es aber leider nicht, sondern ein Skript, das von einem Programm interpretiert wird.

Von hinten durch die Brust ins Auge: Es würde funktionieren, wenn Du Dir einen eigenen Perl-Interpreter installierst und diesem das user-s-Bit gibst.
Eleganter wäre es, das Problem über eine entsprechende Konfiguration des Webservers zu lösen.