d1ck3n
Goto Top

CGI für ein bestimmtes Verzeichnis aktivieren unter Apache 2.4

Hallo zusammen,

ich versuche gerade Webapplikationen von einem Apache Webserver (2.2) von Ubuntu 12.04 auf eine Redhat 7 (Apache 2.4) Machine zu migrieren.

Auf dem Ubuntu System konnte ich das in der /etc/apache2/httpd.conf recht easy aktivieren für meine Dienste:

<Directory /var/www/bugzilla3/>
  AddHandler cgi-script .cgi
  Options +Indexes +ExecCGI
  DirectoryIndex index.cgi
  AllowOverride Limit
  </Directory>

<Directory /var/www/dudle/>
  AddHandler cgi-script .cgi
  Options +Indexes +ExecCGI
  DirectoryIndex index.cgi
  AllowOverride Limit
  </Directory>

Anscheinend hat sich die Syntax in der Version 2.4 so geändert, dass ich das so nicht mehr anwenden kann face-sad

Die Module für CGI sind auf dem neuen Server geladen, aber ich bekomme es irgendwie nicht hin dem Server zu sagen, dass die Beiden Verzeichnisse "dudle" und "bugzilla3" .cgi Dateien beinhalten und ausgeführt werden sollen.

Hätte vielleicht jemand einen Tipp für mich?

Grüße
D1Ck3n

Content-ID: 368912

Url: https://administrator.de/contentid/368912

Printed on: December 9, 2024 at 22:12 o'clock

NetzwerkDude
NetzwerkDude Mar 22, 2018 at 19:23:11 (UTC)
Goto Top
eina vornweg: ich poste vom handy, kann also nicht wirklich selbst was testen - aber auf den ersten blick sieht die syntax okay aus.

Bei fehlern in der config meckert apache ja schon beim start

Aber andere fragen: sind die .cgi files in den jeweiligen verzeichnissen ausführbar? vom apache user?

außerdem steht bei einem wechsel auf centOS immer die frage nach SELinux: Ist es bei dir aktiv? Stimmen die Einstellungen? Da gibts auch gute tools um aus den kryptischen SEL meldungen sinnvolle debug infos zu bekommen.
Und Nein, bitte nicht den SELinix einfach abschalten - jedes mal wenn mandas tut kommt dem Entwickler eine träne face-smile

Mehr morgen wenn ich nen rechner zur hand habe face-smile
D1Ck3n
D1Ck3n Mar 23, 2018 at 14:00:09 (UTC)
Goto Top
Hallo Netzwerkdude,

die .cgi sind ausführbar.

SELinux ist per default deaktiviert :D

Ich arbeite gerade das erste Mal mit Redhat und bin da noch nicht so in der Materie drin :D Muss man denn da zwingend was konfigurieren?

Grüße
D1Ck3n
NetzwerkDude
NetzwerkDude Mar 23, 2018 at 17:39:42 (UTC)
Goto Top
Hi,
naja, "grundsätzlich" bringt SELinux fertige configs mit, die meist für standardaufgaben stimmen - erst wenn man z.B. externe Dateiesysteme einbindet, muss man schauen das die erweiterten Dateiattribute stimmen etc. - aber das ist ja in dem Falls sowieso egal da du es abgeschaltet hast. (Zu dem Gag gibts ne Website: https://stopdisablingselinux.com/)

In der Ausgabe vom Linux Magazin war ein gutes Special zum Thema SSLinux:
www.linux-magazin.de/magazine/2018/02/

Aber ich schweife ab:
An den .htaccess Files sollte es ja auch nicht liegen, da du AllowOverride nur Limit erlaubst.. hm

Evtl. den Troubleshooting Teil der Manpage durchgehen?
https://httpd.apache.org/docs/2.4/howto/cgi.html#But%20it's%20still ...!
- z.B. Path variable checken, und die Environment variables
(am besten mit dem alten server vergleichen)

Ansonten schau doch mal was der Log vom Apache sagt
D1Ck3n
D1Ck3n Mar 26, 2018 at 08:41:14 (UTC)
Goto Top
Hi,

erstmal Danke für die Info zu SELinux face-smile

die Doc von Apache habe ich schon durch. Von dort habe ich auch das "Hello World" Test CGI.

Also ich habe in der /etc/httpd/conf/httpd.conf dem Pfad, wie in der Doc beschrieben, für CGI freigegeben:

<Directory /var/www/html>
  AddHandler cgi-script .cgi
  Options +Indexes +ExecCGI
  Require all granted
</Directory>

Das Modul dafür wird auch geladen:

LoadModule cgi_module modules/mod_cgi.so

Der Apache Log sagt mir aber immer wieder:

 Options ExecCGI is off in this directory: /var/www/html/hello.cgi

Und die File Permissions stimmen auch:

-rwxr-xr-x.   1 apache apache   105 Mar 19 11:50 hello.cgi

Irgendwas elementares muss ich übersehen haben face-sad

Grüße
NetzwerkDude
NetzwerkDude Mar 26, 2018 updated at 09:15:52 (UTC)
Goto Top
leg mal im Ordner /var/www/html
eine .htaccess datei an mit dem inhalt:
  AddHandler cgi-script .cgi
  Options +Indexes +ExecCGI

an, damit überschreibt die .htaccess alle anderen einstellungen die in der httpd.conf stehen

dazu aber in der httpd.conf evtl. noch ein
AllowOverride All
dazuschreiben in das jeweilige directory, also deine bisherige erweitern:
<Directory /var/www/html>
  AddHandler cgi-script .cgi
  Options +Indexes +ExecCGI
  Require all granted
  AllowOverride All
</Directory>
NetzwerkDude
NetzwerkDude Mar 26, 2018 updated at 09:20:46 (UTC)
Goto Top
Ach ja, und schau mal ob bei dir irgendwo in den confs noch was mit "Location" konfiguriert ist, mehr dazu hier:
https://httpd.apache.org/docs/2.4/howto/htaccess.html
im Abschnitt:
Merging of .htaccess with the main configuration files

PS: Ich stelle fest das ich leider gar keinen laufenden Apache habe in dem Laden wo ich gerade arbeite - daher alles theoretischer natur was ich so schreibe face-sad
135799
135799 Mar 27, 2018 updated at 10:52:53 (UTC)
Goto Top
Ich denke auch das du eine zusätzliche Config-Section hast die dir die Einstellung für den "Directory-Context" in der httpd.conf überschreibt.
Gehe mal alle Configs in /etc/httpd/conf.d/ durch.
Siehe:
https://serverfault.com/questions/391457/how-does-apache-merge-multiple- ...

Und selinux abzuschalten das tun auch nur Blödel die sich nicht damit beschäftigen. Der Context eines Directories lässt sich so ändern damit CGI-Scripts ausgeführt werden können:
chcon -R -t httpd_sys_script_exec_t /var/www/html
Einfach mal hier lesen:
https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/6 ...
Also alles keine Hexerei face-smile.

Gruß schnuffi
D1Ck3n
D1Ck3n Mar 29, 2018 at 12:10:47 (UTC)
Goto Top
Hallo zusammen,

das war anscheinend ein klarer Fall von "Wer lesen kann ist klar im Vorteil!" :D

in der /etc/httpd/conf/httpd.conf

# Further relax access to the default document root:
<Directory "/var/www/html">  
    #
    # Possible values for the Options directive are "None", "All",  
    # or any combination of:
    #   Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
    #
    # Note that "MultiViews" must be named *explicitly* --- "Options All"  
    # doesn't give it to you.  
    #
    # The Options directive is both complicated and important.  Please see
    # http://httpd.apache.org/docs/2.4/mod/core.html#options
    # for more information.
    #
    Options Indexes FollowSymLinks ExecCGI

    #
    # AllowOverride controls what directives may be placed in .htaccess files.
    # It can be "All", "None", or any combination of the keywords:  
    #   Options FileInfo AuthConfig Limit
    #
    AllowOverride None

    #
    # Controls who can get stuff from this server.
    #
    Require all granted
</Directory>

Einfach mal das ExecCGI einfügen und schwups, es geht!

Trotzdem Danke für euren Imput!

Grüße
D1Ck3n