expertenaustausch > linux.debian.user.german

Klaus Maria Pfeiffer (01.01.1970, 02:00)
On 01/16/2018 07:33 PM, Sebastian Suchanek wrote:
>> /etc/apache2/mods-available/mime.conf: #AddHandler cgi-script .cgi

> Ja, dachte ich im ersten Moment auch - allerdings hast Du ein
> entscheidendes Detail übersehen: die Raute (#) ist das Kommentarzeichen
> in Apache-Konfigurationsdateien...


aber genau das und
Options +ExecCGI
empfiehlt

g, K
Klaus Maria Pfeiffer (01.01.1970, 02:00)
On 01/16/2018 07:56 PM, Klaus Maria Pfeiffer wrote:
>>> /etc/apache2/mods-available/mime.conf: #AddHandler cgi-script .cgi

> aber genau das und
> Options +ExecCGI
> empfiehlt


Du erwähntest auch an anderer stelle, daß Du in serve-cgi-bin.conf ein
konstrukt rund um cgi vermissen würdest, hier sieht das aber recht
vollständig aus.

;===
root@vmweb:/etc/apache2# cat conf-available/serve-cgi-bin.conf
<IfModule mod_alias.c>
<IfModule mod_cgi.c>
Define ENABLE_USR_LIB_CGI_BIN
</IfModule>

<IfModule mod_cgid.c>
Define ENABLE_USR_LIB_CGI_BIN
</IfModule>

<IfDefine ENABLE_USR_LIB_CGI_BIN>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Require all granted
</Directory>
</IfDefine>
</IfModule>

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
;===

und die entsprechenden module alias und cgi oder cgid muß man halt
aktiviert haben.

;===
root@vmweb:/etc/apache2/mods-enabled# ls cgi* alias*
alias.conf alias.load cgid.conf cgid.load cgi.load
;===

und das auf stretch.

;===
root@vmweb:~# apache2 -v
Server version: Apache/2.4.25 (Debian)
Server built: 2017-09-19T18:58:57
root@vmweb:~# cat /etc/debian_version
9.3
;===

g, K
Sebastian Suchanek (16.01.2018, 10:10)
Hallo Liste!

Und gleich noch eine CGI-Frage...
Ich habe hier ein relativ frisch aufgesetztes Stretch-System, auf dem
u.a. Apache und uprecords-cgi installiert sind. Die
Apache-Site-Konfigurationsdateien sind zwar von einem älteren System
kopiert worden, bezüglich mods, confs etc. ist die Apache-Konfiguration
aber "Debian out of the box". (Zumindest kann ich mich nicht erinnern,
dort irgendetwas geschraubt zu haben.)

Das Problem: wenn ich das uprecords.cgi-Skript im Browser aufrufen will,
führt es Apache nicht aus, sondern bietet mir das Binary zum Download an.
Google meint dazu, dass da an passender Stelle in der
Apache-Konfiguration ein "AddHandler cgi-script .cgi" fehlen würde. Auf
den ersten Blick klingt das zwar plausibel, allerdings würde ich mich
schon sehr stark wundern, wenn Debian das nicht von sich aus passend
konfigurieren würde.
Zum Vergleich wollte ich mir mal ein Jessie-System, auf dem
uprecords.cgi OOTB problemlos funktioniert, näher anschauen. Dabei war
ich dann allerdings ziemlich verblüfft, dass ich trotz diversen
grep-Suchen auf dem System nirgends eine Konfigurationszeile analog der
o.g. gefunden habe.

Daher meine Fragen: Was könnte ganz konkret auf dem Stretch-System
schieflaufen? Wie bringe ich Apache (wieder) dazu, CGIs auszuführen? Und
allgemeiner gefragt: wo und wie ist bei Debian die Zuordnung von
..cgi-Dateien zum CGI-Handler konfiguriert? In
/etc/apache2/conf-available/serve-cgi-bin.conf - eine derjenigen
Stellen, an denen ich so einen Konfigurationsschnipsel erwartet hätte -
zum Beispiel steht nichts dergleichen. Weder auf dem Jessie-, noch auf
dem Stretch-System.

Tschüs,

Sebastian
Mechtilde (16.01.2018, 10:40)
Hallo Sebastian,

Vielleicht gibt dieser Bugreport



ja weitere Hinweise. Da hat sich wohl etwas bei der cgi Verarbeitung
geänder.

Gruß

MechtildeAm 16.01.2018 um 08:11 schrieb Sebastian Suchanek:
[..]
Harald Weidner (16.01.2018, 11:20)
Hallo,

> Ich habe hier ein relativ frisch aufgesetztes Stretch-System, auf dem
> u.a. Apache und uprecords-cgi installiert sind.


> Das Problem: wenn ich das uprecords.cgi-Skript im Browser aufrufen will,
> führt es Apache nicht aus, sondern bietet mir das Binary zum Downloadan.


Auf neueren Debian-Systemen (ich glaube ab jessie) ist der CGI-Support beim
Apache2 zwar dabei, aber nicht mehr standardmäßig aktiv. Wenn man ihnbraucht,
muss man ihn einschalten:

# a2enmod cgi
# systemctl restart apache2.service

Gruß, Harald
Uwe Kerstan (16.01.2018, 18:10)
* Sebastian Suchanek [16-01-2018 08:11]:

> Google meint dazu, dass da an passender Stelle in der
> Apache-Konfiguration ein "AddHandler cgi-script .cgi" fehlen würde. Auf
> den ersten Blick klingt das zwar plausibel, allerdings würde ich mich
> schon sehr stark wundern, wenn Debian das nicht von sich aus passend
> konfigurieren würde.
> Zum Vergleich wollte ich mir mal ein Jessie-System, auf dem
> uprecords.cgi OOTB problemlos funktioniert, näher anschauen. Dabei war
> ich dann allerdings ziemlich verblüfft, dass ich trotz diversen
> grep-Suchen auf dem System nirgends eine Konfigurationszeile analog der
> o.g. gefunden habe.


Wer sucht, der findet:

$ rgrep "AddHandler cgi-script .cgi" /etc/apache2/
/etc/apache2/mods-available/mime.conf: #AddHandler cgi-script .cgi
Sebastian Suchanek (16.01.2018, 20:30)
Am 16.01.2018 um 10:19 schrieb Harald Weidner:

Hallo Harald!

> Auf neueren Debian-Systemen (ich glaube ab jessie) ist der CGI-Support beim
> Apache2 zwar dabei, aber nicht mehr standardmäßig aktiv. Wenn man ihn braucht,
> muss man ihn einschalten:
> # a2enmod cgi
> # systemctl restart apache2.service


Ja und nein...
Gerade habe ich mir zu Testzwecken Stretch ganz frisch in eine VM
installiert. Ja, man muss nach der Installation der Pakete apache2 und
uprecords-cgi den CGI-Support noch einmal separat aktivieren, wie von
Dir oben beschrieben. (Was ich BTW nicht so richtig nachvollziehen kann...)

Auf dem Stretch-Produktivsystem habe ich hingegen sogar die beiden
Apache-Mods "cgi" und "cgid" aktiviert, allerdings wird das
Uprecords-Skript leider immer noch nicht ausgeführt, sondern zum
Download angeboten. :-(

Tschüs,

Sebastian
Sebastian Suchanek (16.01.2018, 20:40)
Am 16.01.2018 um 17:01 schrieb Uwe Kerstan:
> * Sebastian Suchanek [16-01-2018 08:11]:


Hallo Uwe!

> Wer sucht, der findet:
> $ rgrep "AddHandler cgi-script .cgi" /etc/apache2/
> /etc/apache2/mods-available/mime.conf: #AddHandler cgi-script .cgi

^

Ja, dachte ich im ersten Moment auch - allerdings hast Du ein
entscheidendes Detail übersehen: die Raute (#) ist das Kommentarzeichen
in Apache-Konfigurationsdateien...

Tschüs,

Sebastian
Uwe Kerstan (16.01.2018, 21:30)
* Sebastian Suchanek [16-01-2018 19:33]:

> > $ rgrep "AddHandler cgi-script .cgi" /etc/apache2/
> > /etc/apache2/mods-available/mime.conf: #AddHandler cgi-script .cgi

> ^
> Ja, dachte ich im ersten Moment auch - allerdings hast Du ein
> entscheidendes Detail übersehen: die Raute (#) ist das Kommentarzeichen
> in Apache-Konfigurationsdateien...


Ich weiß, ich wollte dir nur zeigen, wo du die Einstellung findest.
Harald Weidner (16.01.2018, 21:40)
Hallo,

On Tue, Jan 16, 2018 at 07:21:46PM +0100, Sebastian Suchanek wrote:

> Auf dem Stretch-Produktivsystem habe ich hingegen sogar die beiden
> Apache-Mods "cgi" und "cgid" aktiviert, allerdings wird das
> Uprecords-Skript leider immer noch nicht ausgeführt, sondern zum
> Download angeboten. :-(


Dann ist auf dem System irgendwas kaputtkonfiguriert.

Welche Module sind denn genau aktiviert? Was sagt "a2query -m"?
Welche Konfigurationenw werden eingebunden? Was sagt "a2query -c"?
Was steht in deiner site-Konfiguration bzgl. CGI-Skripten?

Generell braucht es für CGI-Support vier Dinge:

1. Eines der Module mod_cgi oder mod_cgid muss geladen sein.

2. Eine ScriptAlias Direktive auf das Verzeichnis mit den
Skripten

3. Eine "Options +ExecCGI" Direktive für das Verzeichnis.

4. Das verwendete Directory muss für den Apache-User (normalerweise
www-data) lesbar und die Skript ausführbar sein.

Die Module mod_cgi und mod_cgid funktioniert nicht mit allen MPMs.
a2enmod wählt aber automatisch eine passende Kombination aus.

Bei Debian erfolgt 1. in der cgi(d).load, die ggf. mit "a2enmod cgi"
aktiviert werden muss. 2. und 3. erfolgen in der serve-cgi-bin.conf,
die ggf. mit "a2enconf serve-bin" aktiviert wird.

Natürlich kann man jede Direktive auch in der Site-Konfiguration
setzen, muss dann aber ggf. mit Konflikten rechnen zu den Debian-
Mechanismen rechnen.

Gruß, Harald
Sebastian Suchanek (16.01.2018, 23:00)
Am 16.01.2018 um 20:31 schrieb Harald Weidner:
> Hallo,
> On Tue, Jan 16, 2018 at 07:21:46PM +0100, Sebastian Suchanek wrote:
> Dann ist auf dem System irgendwas kaputtkonfiguriert.


Das glaube ich inzwischen auch, ja. Nur habe ich bislang nicht die
leiseste Ahnung, was und wo genau.

> Welche Module sind denn genau aktiviert? Was sagt "a2query -m"?


| # a2query -m
| authz_core (enabled by maintainer script)
| env (enabled by maintainer script)
| authn_file (enabled by maintainer script)
| authn_core (enabled by maintainer script)
| alias (enabled by maintainer script)
| mime (enabled by maintainer script)
| negotiation (enabled by maintainer script)
| authz_user (enabled by maintainer script)
| auth_basic (enabled by maintainer script)
| dir (enabled by maintainer script)
| mpm_prefork (enabled by maintainer script)
| suexec (enabled by site administrator)
| php7.0 (enabled by maintainer script)
| authz_svn (enabled by maintainer script)
| cgi (enabled by site administrator)
| status (enabled by maintainer script)
| rewrite (enabled by site administrator)
| socache_shmcb (enabled by site administrator)
| autoindex (enabled by maintainer script)
| dav (enabled by maintainer script)
| dav_svn (enabled by maintainer script)
| cgid (enabled by site administrator)
| authz_host (enabled by maintainer script)
| setenvif (enabled by maintainer script)
| access_compat (enabled by maintainer script)
| reqtimeout (enabled by maintainer script)
| filter (enabled by maintainer script)
| deflate (enabled by maintainer script)
| ssl (enabled by site administrator)
| #

> Welche Konfigurationenw werden eingebunden? Was sagt "a2query -c"?


| # a2query -c
| charset (enabled by maintainer script)
| cacti (enabled by maintainer script)
| phpmyadmin (enabled by maintainer script)
| other-vhosts-access-log (enabled by maintainer script)
| serve-cgi-bin (enabled by maintainer script)
| javascript-common (enabled by maintainer script)
| roundcube (enabled by maintainer script)
| localized-error-pages (enabled by maintainer script)
| php-horde (enabled by maintainer script)
| security (enabled by maintainer script)
| #

> Was steht in deiner site-Konfiguration bzgl. CGI-Skripten?


Aktuell gar nichts (IP und Domain anonymisiert):

| <VirtualHost a.b.c.d:80>
| ServerName
| ServerAlias domain.tld
| ServerAdmin webmaster
| DocumentRoot "/var/www/domain/html"
| SuexecUserGroup web1 www-data
| CustomLog /var/www/domain/log/access.log combined
| ErrorLog /var/www/domain/log/error.log
| <Directory "/var/www/domain">
| Options -Indexes +MultiViews +FollowSymLinks
| AllowOverride All
| </Directory>
| </VirtualHost>

> Generell braucht es für CGI-Support vier Dinge:
> 1. Eines der Module mod_cgi oder mod_cgid muss geladen sein.


Ist gegeben (siehe oben).

> 2. Eine ScriptAlias Direktive auf das Verzeichnis mit den
> Skripten


Ist gegeben - in der serve-cgi-bin.conf, die 100% Debian-OOTB ist:

| <IfModule mod_alias.c>
| <IfModule mod_cgi.c>
| Define ENABLE_USR_LIB_CGI_BIN
| </IfModule>
|
| <IfModule mod_cgid.c>
| Define ENABLE_USR_LIB_CGI_BIN
| </IfModule>
|
| <IfDefine ENABLE_USR_LIB_CGI_BIN>
| ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
| <Directory "/usr/lib/cgi-bin">
| AllowOverride None
| Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
| Require all granted
| </Directory>
| </IfDefine>
| </IfModule>

(Falls die "Options"-Zeile umbrochen werden sollte: das ist nur ein
Problem von Thunderbird, im Original ist das eine einzige Zeile.)

> 3. Eine "Options +ExecCGI" Direktive für das Verzeichnis.


Ist gegeben - siehe oben.

> 4. Das verwendete Directory muss für den Apache-User (normalerweise
> www-data) lesbar und die Skript ausführbar sein.
> [...]


Ist gegeben:

| # ls -l /usr/lib/cgi-bin/
| total 0
| lrwxrwxrwx 1 root root 19 Nov 24 2016 uprecords.cgi ->
.../../bin/uprecords
| #

| # ls -l /usr/bin/ | grep uprecords
| -rwxr-xr-x 1 root root 18440 Nov 24 2016 uprecords
| #

Tschüs,

Sebastian
Sebastian Suchanek (16.01.2018, 23:10)
Am 16.01.2018 um 20:14 schrieb Klaus Maria Pfeiffer:
> On 01/16/2018 07:56 PM, Klaus Maria Pfeiffer wrote:
> Du erwähntest auch an anderer stelle, daß Du in serve-cgi-bin.conf ein
> konstrukt rund um cgi vermissen würdest, hier sieht das aber recht
> vollständig aus.


Das "Options +ExecCGI" ist vorhanden, aber ich habe bislang keine aktive
entsprechende AddHandler-Konfigurationszeile gefunden.

Ansonsten sind auf dem fraglichen System alle Dinge so, wie von Dir
geschrieben - siehe auch meine Antwort an Harald.

Tschüs,

Sebastian
Sebastian Suchanek (16.01.2018, 23:20)
Am 16.01.2018 um 20:24 schrieb Uwe Kerstan:
> * Sebastian Suchanek [16-01-2018 19:33]:
> Ich weiß, ich wollte dir nur zeigen, wo du die Einstellung findest.


Das merkwürdige ist, dass es zumindest an dieser Stelle nicht notwendig
ist. Ich hatte ja erwähnt, dass ich mir zum Testen eine gänzlich
jungfräuliche Stretch-Installation eingerichtet habe. Mehr als...

# aptitude install apache2 uprecords-cgi
# a2enmod cgi
# service apache2 restart

....habe ich dort nicht gemacht - und das Skript funktioniert wie
gewünscht. Und auf eben dieser Testinstallation ist die o.g.
Konfigurationszeile nach wie vor auskommentiert...

Tschüs,

Sebastian
Harald Weidner (17.01.2018, 00:50)
Hallo,

On Tue, Jan 16, 2018 at 09:58:23PM +0100, Sebastian Suchanek wrote:

> | # a2query -m


> | cgi (enabled by site administrator)
> | cgid (enabled by site administrator) [...]


Das sieht eigentlich alles recht gut aus.

Das System hat viele Module, die nicht standardmäßig dabei sind. Hastdu
mal probiert, einzelne davon zu entladen und zu prüfen, ob es dann geht?

Insbesondere ist es ungewöhnlich, mod_cgi und mod_cgid gemeinsam laufenzu
haben. Da der Apache mit mpm_prefork läuft, würde ich mod_cgid entfernen.

Als nächstes würde ich mal die suExec Funktion abschalten und prüfen, ob es
dann geht.

Wenn das auch nicht hilft, dann in der Site-Konfiguration "LogLevel debug"
einschalten und schauen, was bei Zugriffen auf das CGI im Error-Log landet.

Gruß, Harald
Harald Weidner (17.01.2018, 01:00)
Hallo,

On Tue, Jan 16, 2018 at 10:10:16PM +0100, Sebastian Suchanek wrote:

> >> > $ rgrep "AddHandler cgi-script .cgi" /etc/apache2/
> >> > /etc/apache2/mods-available/mime.conf: #AddHandler cgi-script .cgi


> Das merkwürdige ist, dass es zumindest an dieser Stelle nicht notwendig
> ist.


Diese Zeile braucht man nur, wenn man CGI-Skripte in anderen Verzeichnissen
laufen lassen möchte, die nicht über ScriptAlias eingebunden sind. Die
Skriptnamen müssen dann auf .cgi enden, damit der Handler greift.

Das steht auch in dem Kommentar über der Zeile in der mime.conf.

Gruß, Harald

Ähnliche Themen