janos.gonzales has asked for the wisdom of the Perl Monks concerning the following question:

Hi,

I'm trying to create a web-accessible script that writes a file to disk. The problem is I can only write the file to a directory to which only a particular user, myself, can write.

I have two scripts. One that writes the file (write_file.pl) and one that calls the write_file.pl script as my user (call_sanur.pl). The latter script uses the windows runas program to call write_file.pl. It uses a program called sanur.exe that passes a password to the windows runas program.

Here's call_sanur.pl which works from the command line:

#!C:/perl/bin/perl.exe -w		
print "Content-type: text/html\n\n";
system ("runas /user:janos \"perl C:/write_file.pl\" | sanur password") and die $!; 

This works fine if I login and run it as a different user form the command line. But, when I try to call this program from a URL, the logs say: Bad file descriptor at C:/Website/call_sanur.pl line 7.\r Any ideas?

I am running this on a Windows XP box, with Apache.

Thanks Monks

Replies are listed 'Best First'.
Re: Bad file descriptor error
by locked_user sundialsvc4 (Abbot) on Nov 20, 2007 at 23:33 UTC

    Welcome to the wonderful world of security. The web server runs, probably, as a user with almost no system privileges at all. This is by design. If you need to have a file that both the web-server and yourself need to write to, then that can be arranged but you may need to prevail upon your system administrators to help you do it. Access Control Lists (ACLs) can be set-up in such a way that the type of access you need, to the resource you need to share, can be permitted... and an appropriate directory-location for the file can be selected. You must coordinate this with the system administration staff.