Andreas Flückiger: Perlscript mit Benutzerrechten 711 starten II

Ich habe für das letzte Problem (http://www.teamone.de/selfhtml/sfarchiv/1999_4/t08793.htm) eine Lösung gefunden, die eigentlich funktionieren sollte. Mit Telnet funktioniert es zwar auch, aber nicht mit http. Ich verwende folgendes Script, um ein anderes Script auszuführen:

--------------------
#!/usr/bin/perl

$username = shift(@ARGV);
$password = shift(@ARGV);
$scriptname = shift(@ARGV);

if($scriptname eq "") {die "Benutzername, Passwort und Scriptname müssen angegeben werden!\n";}

eval(echo \"$password\" su -c \"cat $scriptname\" $username);
--------------------

Wo könnte das Problem liegen?
Vielen Dank im Voraus.

Gruss
Andreas

  1. Ich habe für das letzte Problem (<../../sfarchiv/1999_4/t08793.htm>) eine Lösung gefunden, die eigentlich funktionieren sollte. Mit Telnet funktioniert es zwar auch, aber nicht mit http. Ich verwende folgendes Script, um ein anderes Script auszuführen:

    Wo könnte das Problem liegen?
    Vielen Dank im Voraus.

    Ich vermute mal, der Webserver läuft unter nem anderen Benutzer als deinem Account. Da hast du "Das Recht" 7, womit es geht, und der Webserver hat 1, womit es nicht geht.

    1. Ich vermute mal, der Webserver läuft unter nem anderen Benutzer als deinem Account. Da hast du "Das Recht" 7, womit es geht, und der Webserver hat 1, womit es nicht geht.

      Ich denke, dieses Problem hat nichts mit den Rechten zu tun. Denn es funktioniert auch nicht, wenn ich beide Scripte auf 755 setze.

  2. eval(echo \"$password\" su -c \"cat $scriptname\" $username);

    Ich bin mir nicht sicher, aber die Hochkommas in der Klammer sehen mir nach Akzenten aus. Du musst aber ein Hochkomma (Apostroph) nehmen, das ist die Taste, auf der auch die Raute ist

    Gruß
    Tom

    1. Hallo Tom

      eval(echo \"$password\" su -c \"cat $scriptname\" $username);

      Ich bin mir nicht sicher, aber die Hochkommas in der Klammer sehen mir nach Akzenten aus. Du musst aber ein Hochkomma (Apostroph) nehmen, das ist die Taste, auf der auch die Raute ist

      Das Zeichen ` ist hier schon richtig, es führt ein Systemkommando aus und gibt das Ergebnis zurück.
      Ich habe übrigens eine CH-Tastatur. Dort ist der Apostroph rechts neben der 0 und die Raute auf der Taste 3.

      Gruss
      Andreas

  3. Mit Telnet funktioniert es zwar auch, aber nicht mit http. Ich verwende folgendes Script, um ein anderes Script auszuführen:
    eval(echo \"$password\" su -c \"cat $scriptname\" $username);
    Wo könnte das Problem liegen?

    Bei mir funktioniert das nicht mal via Telnet - hätte mich auch sehr gewundert. Ich hatte doch schon mal gepostet, daß genau das nicht funktionieren kann, weil "su" nicht von stdin liest, man also nichts dort hinein pipen kann ...
    Und das ist so, weil man genau die ganze Trickserei, die Du hier probierst, in UNIX grundsätzlich unmöglich machen wollte.

    Wenn Du etwas unter einer fremden Kennung ausführen willst, dann geht das im Batch-Modus nicht mit einer programmgesteuerten Identitätsänderung mitten im Prozeß, sondern nur mit dem s-Bit.