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.
Könnte man vielleicht ein kompiliertes Perl/C Programm mit etwa folgendem Code erstellen?
open(SU,"su -c "/usr/bin/perl $ARGV[2]" $ARGV[0]");
print SU $ARGV[1];
close(SU);
Und dann in der ersten Zeile der Perl-Programme folgendes schreiben?
#!NameDesObigenScripts username password
Eleganter wäre es, das Problem über eine entsprechende Konfiguration des Webservers zu lösen.
Es ist leider nicht mein Server, daher dürfte das weniger in Frage kommen.