Debian 3.0r1 Apache 1.3.26 cgi-bin behavior depends on script name and browser (?)

From: David Christensen (dpchrist_at_inreach.com)
Date: 09/30/03

  • Next message: Bill Moseley: "Different images on Root Window with Xinerama?"
    To: <debian-user@lists.debian.org>
    Date: Mon, 29 Sep 2003 23:16:18 -0700
    
    

    debian-user@lists.debian.org:

    I am getting ready to study "MySQL and Perl for the Web" [Paul DuBois,
    2002] and I have come across some baffling behavior with CGI scripts on
    Apache 1.3.26 on Debian 3.0r1 -- sometimes Apache executes the scripts
    as expected, other times it tries to download them or generates an
    error. The behavior seems to depend on the script name, not the
    content. The gory details follow.

    Following the directions on:

    http://httpd.apache.org/docs/howto/cgi.html#cgioutsideofscriptaliasdirectories

    I have added the following lines to the main Apache configuration file:

        root@d3020g:~/d3020g/etc/apache:CVS> cvs -q diff httpd.conf
        Index: httpd.conf
        ===================================================================
        RCS file: /cvs/dpchrist/d3020g/etc/apache/httpd.conf,v
        retrieving revision 1.1
        diff -r1.1 httpd.conf
        378a379,382
    > <Directory /home/dpchrist/public_html/cgi-bin>
    > Options ExecCGI
    > </Directory>
    >
        780a785
    > AddHandler cgi-script pl

    I loaded the configuration:

        root@d3020g:~/d3020g/etc/apache:CVS> cp httpd.conf /etc/apache/.
        cp: overwrite `/etc/apache/./httpd.conf'? y

        root@d3020g:~/d3020g/etc/apache:CVS> apachectl configtest
        [Mon Sep 29 22:57:33 2003] [warn] module config_log_module is
    already loaded, skipping
        [Mon Sep 29 22:57:33 2003] [warn] module mime_module is already
    loaded, skipping

        [Mon Sep 29 22:57:33 2003] [alert] apache: Could not determine the
    server's fully qualified domain name, using 192.168.254.2 for ServerName
        Syntax OK

        root@d3020g:~/d3020g/etc/apache:CVS> apachectl graceful
        /usr/sbin/apachectl graceful: httpd gracefully restarted

    I then put Perl CGI scripts into /home/dpchrist/public_html/cgi-bin and
    attempted to access them via the URL
    http://192.168.254.2/~dpchrist/cgi-bin/*. Some scripts are executed
    while others do various naughty
    things. Here are some scripts that execute as expected in Mozilla 1.4
    and Internet Explorer 6.0.2800.1106:

    1. dpchrist@d3020g:~/public_html/cgi-bin:CVS> cat foo.pl
        #! /usr/bin/perl
        print "Content-type: text/html\r\n\r\n";
        print "Hello, World.";

    2. dpchrist@d3020g:~/public_html/cgi-bin:CVS> cat intro4.pl
        #!/usr/bin/perl -w
        use strict;

        use CGI;
        my $cgi = new CGI;

        print $cgi->header(),
            $cgi->start_html("My Page Title"),
            $cgi->p("My page body"),
            $cgi->end_html(),
            "\n";

        exit(0);

    3. dpchrist@d3020g:~/public_html/cgi-bin:CVS> cat intro5.pl
        #!/usr/bin/perl -w
        use strict;

        use CGI qw( :standard );

        print header(),
            start_html("My Page Titel"),
            p("My page body"),
            end_html(),
            "\n";

        exit(0);

    And here is one that Mozilla attempts to download, while IE says "The
    page cannot be found":

        dpchrist@d3020g:~/public_html/cgi-bin:CVS> cat intro3.pl
        #!/usr/bin/perl -w
        use strict;

        print "Content-Type: text/html\n\n";

        print <<END;
        <html>
        <head><title>My Page Title</title></head>
        <body><p>My page body</p></body>
        </html>
        END
        exit(0);

    The really weird part is that if I rename a "bad" script to a "good"
    name, it then executes!

        dpchrist@d3020g:~/public_html/cgi-bin:CVS> mv intro3.pl bar.pl

    Here are the Apache logs:

        root@d3020g:/var/log/apache# tail -n 4 access.log
        192.168.1.10 - - [29/Sep/2003:23:01:55 -0700] "GET
    /~dpchrist/cgi-bin/foo.pl HTTP/1.1" 200 25 "-" "Mozilla/5.0 (Windows; U;
    Windows NT 5.0; en-US; rv:1.4) Gecko/20030624"
        192.168.1.10 - - [29/Sep/2003:23:02:07 -0700] "GET
    /~dpchrist/cgi-bin/intro4.pl HTTP/1.1" 200 301 "-" "Mozilla/5.0
    (Windows; U; Windows NT 5.0; en-US; rv:1.4) Gecko/20030624"
        192.168.1.10 - - [29/Sep/2003:23:02:15 -0700] "GET
    /~dpchrist/cgi-bin/intro5.pl HTTP/1.1" 200 301 "-" "Mozilla/5.0
    (Windows; U; Windows NT 5.0; en-US; rv:1.4) Gecko/20030624"
        192.168.1.10 - - [29/Sep/2003:23:02:38 -0700] "GET
    /~dpchrist/cgi-bin/bar.pl HTTP/1.1" 200 102 "-" "Mozilla/5.0 (Windows;
    U; Windows NT 5.0; en-US; rv:1.4) Gecko/20030624"

        root@d3020g:/var/log/apache# tail -n 8 error.log
        [Mon Sep 29 22:57:58 2003] [notice] SIGUSR1 received. Doing
    graceful restart
        [Mon Sep 29 22:57:58 2003] [warn] module config_log_module is
    already loaded, skipping
        [Mon Sep 29 22:57:58 2003] [warn] module mime_module is already
    loaded, skipping

        [Mon Sep 29 22:57:58 2003] [alert] apache: Could not determine the
    server's fully qualified domain name, using 192.168.254.2 for ServerName
        [Mon Sep 29 22:57:59 2003] [error] (2)No such file or directory:
    mod_mime_magic: can't read magic file /etc/apache/share/magic
        [Mon Sep 29 22:57:59 2003] [notice] Apache/1.3.26 (Unix) Debian
    GNU/Linux configured -- resuming normal operations
        [Mon Sep 29 22:57:59 2003] [notice] suEXEC mechanism enabled
    (wrapper: /usr/lib/apache/suexec)
        [Mon Sep 29 22:57:59 2003] [notice] Accept mutex: sysvsem (Default:
    sysvsem)

        root@d3020g:/var/log/apache# tail -n 4 suexec.log
        [2003-09-29 23:01:55]: info: (target/actual) uid:
    (dpchrist/dpchrist) gid: (dpchrist/dpchrist) cmd: foo.pl
        [2003-09-29 23:02:06]: info: (target/actual) uid:
    (dpchrist/dpchrist) gid: (dpchrist/dpchrist) cmd: intro4.pl
        [2003-09-29 23:02:15]: info: (target/actual) uid:
    (dpchrist/dpchrist) gid: (dpchrist/dpchrist) cmd: intro5.pl
        [2003-09-29 23:02:38]: info: (target/actual) uid:
    (dpchrist/dpchrist) gid: (dpchrist/dpchrist) cmd: bar.pl

    Here is the script directory:

        dpchrist@d3020g:~/public_html/cgi-bin:CVS> ls -al
        total 36
        drwxr-xr-x 3 dpchrist dpchrist 4096 Sep 29 23:04 .
        drwxr-xr-x 4 dpchrist dpchrist 4096 Sep 28 21:41 ..
        drwxr-xr-x 2 dpchrist dpchrist 4096 Sep 29 23:04 CVS
        -rwxr-xr-x 1 dpchrist dpchrist 186 Sep 29 22:42 bar.pl
        -rwxr-xr-x 1 dpchrist dpchrist 81 Sep 29 17:46 foo.pl
        -rwxr-xr-x 1 dpchrist dpchrist 186 Sep 29 23:04 intro3.pl
        -rwxr-xr-x 1 dpchrist dpchrist 193 Sep 29 22:42 intro4.pl
        -rwxr-xr-x 1 dpchrist dpchrist 166 Sep 29 22:42 intro5.pl
        -rwxr-xr-x 1 dpchrist dpchrist 747 Sep 29 22:42 intro7.pl

    Any ideas?

    TIA,

    David

    -- 
    To UNSUBSCRIBE, email to debian-user-request@lists.debian.org 
    with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org
    

  • Next message: Bill Moseley: "Different images on Root Window with Xinerama?"

    Relevant Pages

    • Re: Running commands from a variable file
      ... > for cmd in $SCRIPTS; ... Why reset the IFS? ... to be splitted on newline characters only (not blank and tabs as ...
      (comp.unix.shell)
    • RE: Active Directory
      ... if u mean the games "solitaire" and so on, ... try to add a delete cmd to their log on scripts. ... > way to uninstall the Windows games from everyones computers without having to ...
      (microsoft.public.windows.server.active_directory)