http://qs321.pair.com?node_id=731836

cmac has asked for the wisdom of the Perl Monks concerning the following question:

Operation of our web site needs a control panel provided by our hosting provider, which uses suidperl to authenticate and log us in.

I just carefully built a perl5.8.9 from source, to be "just like" the perl5.8.7 that the hosting provider provided with the site, under which the control panel operates correctly.

Did a perl5.8.7 -V:config_args and used the same Configure arguments to build 5.8.9, plus added an "extra lib" or two to make the @INC of the resultant 5.8.9 include all of the directories that perl5.8.7 has. Except of course that for 5.8.9, the 5.8.7 directories are lower in the search order than they were for 5.8.7.

Said arguments include -Dd_dosuid=define, which made the Configure query "Do you want to do setuid/setgid emulation?" get answered "yes".

Unfortunately the resulting 5.8.9 cannot run the control panel. Trying to use it from a web browser leads to the following message in the error_log:
suidperl needs (suid) fd script

If I change the bang lines of all the .cgi files in the control panel from "perl" to "perl5.8.7", the control panel becomes usable again. This is true even though the "suidperl" now in /usr/local/bin is one that has the same size and mod date as 5.8.9!

If I put a "print STDERR" right at the start of the index.cgi script, the error occurs without the print output appearing in error_log.

Googling the above error message yields several questions that people have asked in various forums over the years, with few to none being answered. So it seems this is a hard problem. Any help as to how to attack the problem or where to look for information bearing on it would be much appreciated, O great monks...

Thanks,
cmac
www.animalhead.com