← Back to team overview

sslug-teknik team mailing list archive

Løsning på problemet med at anvende suexec og virtualhosts

 


Jeg tænkte at der måske var andre som kunne have glæde af det.
Jeg ville også gerne høre om der skule være nogen sikkerhedsmæssige problemer vedr. løsningen.

Vores originale problem er altså at vi har en virtuelhost www.foo.dk som er konfigureret til at hente sine filer i /home/bar/public_html, foo.dk ønsker så at kunne udføre cgi scripts, men vi ønsker ikke at disse skal udføres som den bruger webserveren kører under.

Eneste umidelbare løsning er at anvende 'suexec', men så skulle documentroot for foo.dk ligge under den indkompilerede DOC_ROOT i suexec, hvilket man ikke ønsker, da der er flere fordele ved ikke at have det.

Eneste udvej er så at anvende UserDir (hvilket er den anden mulighed ved suexec) og så blive lidt kreative.

Løsningen er baseret på http://defindit.com/readme_files/httpd_suexec.html

Her er mere eller mindre den skifte jeg har anvendt, det ser ud til at virke fint nok.


<VirtualHost XXXXXXX:80>
    ServerAdmin xxx@xxxxxx
    DocumentRoot /home/bar/public_html
    ServerName www.foo.dk
    ErrorLog  /var/log/httpd/error_log_foo
    CustomLog  /var/log/httpd/access_log_foo common

    # aktiver mod_userdir, men kun for brugeren 'bar'
    UserDir disabled
    UserDir enabled bar

    <Directory "/home/bar/public_html">
        AllowOverride All
        Options +IncludesNOEXEC +FollowSymLinks +Indexes +MultiViews
        Order allow,deny
        Allow from all
        XBitHack Full
    </Directory>

   # er ikke helt sikker på om denne er nødvendig
   SuexecUserGroup bar bar

   # her er så det sjove, UserDir gør at man kan komme i kontakt med cgi
   # via ~user/cgi-bin (hvor den så fanger
   # /home/user/public_html/cgi-bin),
   # dvs. vi skal bare rewrite alle requests til
   # /cgi-bin over til /~bar/cgi-bin

   RewriteEngine on
   RewriteCond %{REQUEST_URI} !^/~bar.*$
   RewriteRule ^/cgi-bin/(.*)$ /~bar/cgi-bin/$1 [PT]

   <Directory "/home/bar/public_html/cgi-bin">
     AllowOverride None
     # da vi ikke kører under ScriptAlias skal vi selv
     # tilføje ExecCGI
     Options FollowSymlinks ExecCGI
     Order allow,deny
     Allow from all
     # og vi skal selv specificerer hvilke filtyper som skal fortolkes som
     # cgi
     AddHandler cgi-script .cgi .pl
   </Directory>

</VirtualHost>

Så er man i det mindste fri for at skulle omkompilere suexec.

Det ser i hvert fald ud til at virke fint for mig. Eneste ændring i forhold til ScriptAlias er at man nu kun at få udført cgi'er med .cgi eller .pl endelser i modsætning til ved ScriptAlias hvor alt fortolkes som cgi. Men det er der sikkert en måde at komme uden om.

Kommentarer er velkomne.

BTW: er der et mere specifikt dansk forum for denne slags problemer?

/daleif

``You cannot help men permanently by doing for them what they could and should do for themselves. ''
 -- Abraham Lincoln

Follow ups