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);
Wie schon gesagt: Würde "su" von stdin lesen, dann ginge das. (Sogar direkt in Perl, ohne kompiliertes Programm.)