Question sur Apache 2 en suexec

Informations et questions sur Apache en général.

Modérateur : Modérateurs

max2france
Membre
Membre
Messages : 15
Inscription : dim. 02 nov. 2008, 12:45

Question sur Apache 2 en suexec

Messagepar max2france » dim. 02 nov. 2008, 12:49

Bonjour,

Je suis entrain d'essayer de maitriser la compilation d'apache2
en suexec sur un Centos 5.2 à partir des sources.

Sur mes serveurs en production, je suis toujours en Apache 1.3.41,
Je me posent pas mal de question théorique et technique
auquel je n'arrive pas à trouver des reponses fiables et j'aimerai
vraiment maitriser le sujet. je fais donc appel à votre experience :)

Mon support de base est ce tuto :
http://www.zataz.net/docs/6906/document ... uexec.html

Pour compiler mon apache2 en suexec, j'utilise ces options :

./configure
--with-suexec-safepath="/usr/local/bin:/usr/bin:/bin" \
--with-suexec-logfile=/var/log/apache2/suexec_log \
--with-suexec-bin=/usr/sbin/suexec \
--with-suexec-userdir=public_html \
--with-suexec-caller=apache \
--with-suexec-docroot=/var/www \
--with-suexec-uidmin=1000 \
--with-suexec-gidmin=100 \
--with-suexec-umask=077 \
--enable-suexec=shared \
--with-perl=/usr/bin/perl \
--with-expat=/usr \
--with-ssl=/usr \
--with-z=/usr \
--with-port=80 \
--with-program-name=apache2 \
--with-devrandom=/dev/urandom


Mes questions :

1) Je ne comprend pas bien l'utilité exacte des fonctions suivantes :
--with-suexec-userdir=public_html \ ( il faut indiquer le repertoire par defaut genre /home/user/www ) ? donc www?
--with-z=/usr \ ( z c'est quoi?)
--with-devrandom=/dev/urandom

2) Lors de ma compil, il ne reconnait pas les options :
configure: WARNING: Unrecognized options: --with-perl, --with-expat, --with-devrandom

Pourtant, ils ont bien été installé avec yum :
[root@localhost httpd-2.2.9]# ls /usr/bin/perl
/usr/bin/perl

Ces options sont indispensable pour suexec?

3) J'imagine que pour perl oui, car en suexec ont utilisé php-cgi,donc perl doit etre bien declaré
dans la compilation dapache, sinon ca posera probleme?

4) Pour ma compilation, j'utilise les paquets suivants :
httpd-2.2.9.tar.gz
php-5.2.6.tar.gz

Ils sont bien adapté pour apache en suexec? j'ai lu que dans apache2,
suexec etait inclu par defaut, exact?

Merci pour votre aide
Max

Avatar de l’utilisateur
dexmon
Gourou
Gourou
Messages : 793
Inscription : sam. 18 juin 2005, 9:55
Localisation : /usr/local/apache
Contact :

Re: Question sur Apache 2 en suexec

Messagepar dexmon » dim. 02 nov. 2008, 16:04

Bonjour,

Vos questions :
1) Je ne comprend pas bien l'utilité exacte des fonctions suivantes :
--with-suexec-userdir=public_html \ ( il faut indiquer le repertoire par defaut genre /home/user/www ) ? donc www?
--with-z=/usr \ ( z c'est quoi?)
--with-devrandom=/dev/urandom


--with-suexec-userdir= indique dans quel nom de dossier utilisateur suexec devra agir.
si /home/user/www est son document root alors mettez www
mais ici vous avez mi /var/www comme docroot, donc c pas juste.
Suexec sera actif à partir de /var/www
Donc le dossier utilisateur doit être dans /var/www/user/www
Si vous décider par la suite de placer le document root de l'utilisateur dans /home/user/www, vous devrez recompiler apache avec les bonne options --with-suexec-docroot=/home
--with-z=/usr --> compression (pas obligatoire), il le trouve tout seul si vous avez le paquet zlib1g-dev d'installé (Debian)

--with-devrandom=/dev/urandom --> pour généré des nombre aléatoire se basant sur /dev/urandom d'unix

2) Lors de ma compil, il ne reconnait pas les options :
configure: WARNING: Unrecognized options: --with-perl, --with-expat, --with-devrandom


Faites un ./configure --help pour avoir la liste des options conforme a votre version d'apache

Pourtant, ils ont bien été installé avec yum :
[root@localhost httpd-2.2.9]# ls /usr/bin/perl
/usr/bin/perl

Rien à voir, l'option de configuration --with-perl n'existe plus dans apache 2

Ces options sont indispensable pour suexec?

non

4) Pour ma compilation, j'utilise les paquets suivants :
httpd-2.2.9.tar.gz
php-5.2.6.tar.gz

Je vous conseille d'utilisez soit la version 2.0.63 ou la nouvelle version 2.2.10 car celle-ci retourne quelques fois des Segmentation fault.

Le mieux est de faire des essai:

Liste des options de configuration pour apache 2.2.10

Code : Tout sélectionner

server:/usr/local/src/httpd-2.2.10# ./configure --help
`configure' configures this package to adapt to many kinds of systems.

Usage: ./configure [OPTION]... [VAR=VALUE]...

To assign environment variables (e.g., CC, CFLAGS...), specify them as
VAR=VALUE.  See below for descriptions of some of the useful variables.

Defaults for the options are specified in brackets.

Configuration:
  -h, --help              display this help and exit
      --help=short        display options specific to this package
      --help=recursive    display the short help of all the included packages
  -V, --version           display version information and exit
  -q, --quiet, --silent   do not print `checking...' messages
      --cache-file=FILE   cache test results in FILE [disabled]
  -C, --config-cache      alias for `--cache-file=config.cache'
  -n, --no-create         do not create output files
      --srcdir=DIR        find the sources in DIR [configure dir or `..']

Installation directories:
  --prefix=PREFIX         install architecture-independent files in PREFIX
                          [/usr/local/apache2]
  --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX
                          [PREFIX]

By default, `make install' will install all the files in
`/usr/local/apache2/bin', `/usr/local/apache2/lib' etc.  You can specify
an installation prefix other than `/usr/local/apache2' using `--prefix',
for instance `--prefix=$HOME'.

For better control, use the options below.

Fine tuning of the installation directories:
  --bindir=DIR           user executables [EPREFIX/bin]
  --sbindir=DIR          system admin executables [EPREFIX/sbin]
  --libexecdir=DIR       program executables [EPREFIX/libexec]
  --sysconfdir=DIR       read-only single-machine data [PREFIX/etc]
  --sharedstatedir=DIR   modifiable architecture-independent data [PREFIX/com]
  --localstatedir=DIR    modifiable single-machine data [PREFIX/var]
  --libdir=DIR           object code libraries [EPREFIX/lib]
  --includedir=DIR       C header files [PREFIX/include]
  --oldincludedir=DIR    C header files for non-gcc [/usr/include]
  --datarootdir=DIR      read-only arch.-independent data root [PREFIX/share]
  --datadir=DIR          read-only architecture-independent data [DATAROOTDIR]
  --infodir=DIR          info documentation [DATAROOTDIR/info]
  --localedir=DIR        locale-dependent data [DATAROOTDIR/locale]
  --mandir=DIR           man documentation [DATAROOTDIR/man]
  --docdir=DIR           documentation root [DATAROOTDIR/doc/PACKAGE]
  --htmldir=DIR          html documentation [DOCDIR]
  --dvidir=DIR           dvi documentation [DOCDIR]
  --pdfdir=DIR           pdf documentation [DOCDIR]
  --psdir=DIR            ps documentation [DOCDIR]

System types:
  --build=BUILD     configure for building on BUILD [guessed]
  --host=HOST       cross-compile to build programs to run on HOST [BUILD]
  --target=TARGET   configure for building compilers for TARGET [HOST]

Optional Features:
  --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
  --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
  --enable-layout=LAYOUT
  --enable-v4-mapped      Allow IPv6 sockets to handle IPv4 connections
  --enable-exception-hook Enable fatal exception hook
  --enable-maintainer-mode
                          Turn on debugging and compile time warnings
  --enable-pie            Build httpd as a Position Independent Executable
  --enable-modules=MODULE-LIST
                          Space-separated list of modules to enable | "all" |
                          "most"
  --enable-mods-shared=MODULE-LIST
                          Space-separated list of shared modules to enable |
                          "all" | "most"
  --disable-authn-file    file-based authentication control
  --enable-authn-dbm      DBM-based authentication control
  --enable-authn-anon     anonymous user authentication control
  --enable-authn-dbd      SQL-based authentication control
  --disable-authn-default authentication backstopper
  --enable-authn-alias    auth provider alias
  --disable-authz-host    host-based authorization control
  --disable-authz-groupfile
                          'require group' authorization control
  --disable-authz-user    'require user' authorization control
  --enable-authz-dbm      DBM-based authorization control
  --enable-authz-owner    'require file-owner' authorization control
  --enable-authnz-ldap    LDAP based authentication
  --disable-authz-default authorization control backstopper
  --disable-auth-basic    basic authentication
  --enable-auth-digest    RFC2617 Digest authentication
  --enable-isapi          isapi extension support
  --enable-file-cache     File cache
  --enable-cache          dynamic file caching
  --enable-disk-cache     disk caching module
  --enable-mem-cache      memory caching module
  --enable-dbd            Apache DBD Framework
  --enable-bucketeer      buckets manipulation filter
  --enable-dumpio         I/O dump filter
  --enable-echo           ECHO server
  --enable-example        example and demo module
  --enable-case-filter    example uppercase conversion filter
  --enable-case-filter-in example uppercase conversion input filter
  --enable-ext-filter     external filter module
  --disable-include       Server Side Includes
  --disable-filter        Smart Filtering
  --enable-substitute     response content rewrite-like filtering
  --disable-charset-lite  character set translation
  --enable-charset-lite   character set translation
  --enable-deflate        Deflate transfer encoding support
  --enable-ldap           LDAP caching and connection pooling services
  --disable-log-config    logging configuration
  --enable-log-forensic   forensic logging
  --enable-logio          input and output logging
  --disable-env           clearing/setting of ENV vars
  --enable-mime-magic     automagically determining MIME type
  --enable-cern-meta      CERN-type meta files
  --enable-expires        Expires header control
  --enable-headers        HTTP header control
  --enable-ident          RFC 1413 identity check
  --enable-usertrack      user-session tracking
  --enable-unique-id      per-request unique ids
  --disable-setenvif      basing ENV vars on headers
  --enable-version        determining httpd version in config files
  --enable-proxy          Apache proxy module
  --enable-proxy-connect  Apache proxy CONNECT module
  --enable-proxy-ftp      Apache proxy FTP module
  --enable-proxy-http     Apache proxy HTTP module
  --enable-proxy-ajp      Apache proxy AJP module
  --enable-proxy-balancer Apache proxy BALANCER module
  --enable-ssl            SSL/TLS support (mod_ssl)
  --enable-distcache      Select distcache support in mod_ssl
  --enable-optional-hook-export
                          example optional hook exporter
  --enable-optional-hook-import
                          example optional hook importer
  --enable-optional-fn-import
                          example optional function importer
  --enable-optional-fn-export
                          example optional function exporter
  --enable-static-support Build a statically linked version of the support
                          binaries
  --enable-static-htpasswd
                          Build a statically linked version of htpasswd
  --enable-static-htdigest
                          Build a statically linked version of htdigest
  --enable-static-rotatelogs
                          Build a statically linked version of rotatelogs
  --enable-static-logresolve
                          Build a statically linked version of logresolve
  --enable-static-htdbm   Build a statically linked version of htdbm
  --enable-static-ab      Build a statically linked version of ab
  --enable-static-checkgid
                          Build a statically linked version of checkgid
  --enable-static-htcacheclean
                          Build a statically linked version of htcacheclean
  --enable-static-httxt2dbm
                          Build a statically linked version of httxt2dbm
  --enable-http           HTTP protocol handling
  --disable-mime          mapping of file-extension to MIME
  --enable-dav            WebDAV protocol handling
  --disable-status        process/thread monitoring
  --disable-autoindex     directory listing
  --disable-asis          as-is filetypes
  --enable-info           server information
  --enable-suexec         set uid and gid for spawned processes
  --disable-cgid          CGI scripts
  --enable-cgi            CGI scripts
  --disable-cgi           CGI scripts
  --enable-cgid           CGI scripts
  --enable-dav-fs         DAV provider for the filesystem
  --enable-dav-lock       DAV provider for generic locking
  --enable-vhost-alias    mass virtual hosting module
  --disable-negotiation   content negotiation
  --disable-dir           directory request handling
  --enable-imagemap       server-side imagemaps
  --disable-actions       Action triggering on requests
  --enable-speling        correct common URL misspellings
  --disable-userdir       mapping of requests to user-specific directories
  --disable-alias         mapping of requests to different filesystem parts
  --enable-rewrite        rule based URL manipulation
  --enable-so             DSO capability

Optional Packages:
  --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
  --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
  --with-included-apr     Use bundled copies of APR/APR-Util
  --with-apr=PATH         prefix for installed APR or the full path to
                             apr-config
  --with-apr-util=PATH    prefix for installed APU or the full path to
                             apu-config
  --with-pcre=PATH        Use external PCRE library
  --with-port=PORT        Port on which to listen (default is 80)
  --with-sslport=SSLPORT  Port on which to securelisten (default is 443)
  --with-z=DIR            use a specific zlib library
  --with-sslc=DIR         RSA SSL-C SSL/TLS toolkit
  --with-ssl=DIR          OpenSSL SSL/TLS toolkit
  --with-mpm=MPM          Choose the process model for Apache to use.
                          MPM={beos|event|worker|prefork|mpmt_os2}
  --with-module=module-type:module-file
                          Enable module-file in the modules/<module-type>
                          directory.
  --with-program-name     alternate executable name
  --with-suexec-bin       Path to suexec binary
  --with-suexec-caller    User allowed to call SuExec
  --with-suexec-userdir   User subdirectory
  --with-suexec-docroot   SuExec root directory
  --with-suexec-uidmin    Minimal allowed UID
  --with-suexec-gidmin    Minimal allowed GID
  --with-suexec-logfile   Set the logfile
  --with-suexec-safepath  Set the safepath
  --with-suexec-umask     umask for suexec'd process

Some influential environment variables:
  CC          C compiler command
  CFLAGS      C compiler flags
  LDFLAGS     linker flags, e.g. -L<lib dir> if you have libraries in a
              nonstandard directory <lib dir>
  LIBS        libraries to pass to the linker, e.g. -l<library>
  CPPFLAGS    C/C++/Objective C preprocessor flags, e.g. -I<include dir> if
              you have headers in a nonstandard directory <include dir>
  CPP         C preprocessor

Use these variables to override the choices made by `configure' or to help
it to find libraries and programs with nonstandard names/locations.


Voici les options que je vous propose:

Code : Tout sélectionner

./configure
--prefix=/usr/local/httpd2210 \
--enable-mods-shared=most \
--with-suexec-safepath=/usr/local/bin:/usr/bin:/bin \
--with-suexec-logfile=/usr/local/httpd2210/logs/suexec_log \
--with-suexec-bin=/usr/local/httpd2210/bin/suexec \
--with-suexec-userdir=www \
--with-suexec-caller=apache \
--with-suexec-docroot=/var/www \
--with-suexec-uidmin=1000 \
--with-suexec-gidmin=100 \
--with-suexec-umask=022 \
--enable-suexec

Un Umask de 077 est bien trop restricif, si un script cgi créé un dossier, il aura comme chmod 700 et le fichier 600.
Avec un Umask de 022 les dossier serons en 755 et les fichiers en 644

Si c'est pas ce qui vous convient comme configuration supprimer simplement le dossier /usr/local/httpd2210 et recommencez en allant dans les sources et tapez make clean.

A la fin de l'installation, vous devriez avoir ceci dans le fichier /usr/local/httpd2210/logs/error_log:

Code : Tout sélectionner

[Sun Nov 02 18:04:59 2008] [notice] suEXEC mechanism enabled (wrapper: /usr/local/httpd2210/bin/suexec)
[Sun Nov 02 18:04:59 2008] [notice] Digest: generating secret for digest authentication ...
[Sun Nov 02 18:04:59 2008] [notice] Digest: done
[Sun Nov 02 18:05:00 2008] [notice] Apache/2.2.10 (Unix) DAV/2 configured -- resuming normal operations
ImageUNIX foreverImage
Avant toute demande de support, vérifiez votre fichier error.log Apache.
----------------------------------------

max2france
Membre
Membre
Messages : 15
Inscription : dim. 02 nov. 2008, 12:45

Re: Question sur Apache 2 en suexec

Messagepar max2france » dim. 02 nov. 2008, 19:43

Re,

Tout d'abord merci pour vos réponses précises, ca m'a permis d'avancer..


J'ai appliqué vos paramètres ET telecharger et installer la version httpd-2.2.10 et j'obtiens dans error_log :

[root@localhost httpd-2.2.10]# tail -f /usr/local/httpd2210/logs/error_log
[Sun Nov 02 20:31:14 2008] [notice] Digest: generating secret for digest authentication ...
[Sun Nov 02 20:31:14 2008] [notice] Digest: done
[Sun Nov 02 20:31:14 2008] [notice] Apache/2.2.10 (Unix) DAV/2 configured -- resuming normal operations

Il me manque donc la phrase qui indique que suexec est actif.

D'ailleurs :

[root@localhost httpd-2.2.10]# ls /usr/local/httpd2210/bin/suexec
ls: /usr/local/httpd2210/bin/suexec: Aucun fichier ou répertoire de ce type

J'ai juste installer httpd-2.2.10 mais à priori cela suffit pour que suexec soit actif?

Max

Avatar de l’utilisateur
dexmon
Gourou
Gourou
Messages : 793
Inscription : sam. 18 juin 2005, 9:55
Localisation : /usr/local/apache
Contact :

Re: Question sur Apache 2 en suexec

Messagepar dexmon » lun. 03 nov. 2008, 3:46

J'ai juste installer httpd-2.2.10 mais à priori cela suffit pour que suexec soit actif?


Non, Apache sera actif mais pas avec suexec car vous ne l'avez pas dans le path indiqué.

Vérifier les paramètres de votre configuration dans les sources, un fichier config.status a du être créé qui récapitule les paramètres de configuration et comparez-les avec ceux qui ont été posté ci-dessus pour voir si vous n'avez rien zapper en route.

A tout hasard, vous avez bien un utilisateur nommé apache sur votre système ?

Un conseil, ne faite pas de copier coller du code complet dans votre console mais copier les sans les backslash (tout sur une ligne).

Code : Tout sélectionner

./configure --prefix=/usr/local/httpd2210 --enable-mods-shared=most --enable-suexec --with-suexec-safepath=/usr/local/bin:/usr/bin:/bin --with-suexec-logfile=/usr/local/httpd2210/logs/suexec_log --with-suexec-bin=/usr/local/httpd2210/bin/suexec ...etc...
ImageUNIX foreverImage
Avant toute demande de support, vérifiez votre fichier error.log Apache.
----------------------------------------

max2france
Membre
Membre
Messages : 15
Inscription : dim. 02 nov. 2008, 12:45

Re: Question sur Apache 2 en suexec

Messagepar max2france » lun. 03 nov. 2008, 9:41

J'ai ajouté les lignes suivantes dans mon apache :
LoadModule suexec_module modules/mod_suexec.so
AddHandler cgi-script .cgi .pl
AddHandler php4-script .php
Action php4-script /cgi-bin/php-cgi

User apache
Group apache

J'ai avancé, j'ai bien maintenant :

[Mon Nov 03 09:29:29 2008] [notice] Digest: done
[Mon Nov 03 09:29:29 2008] [notice] suEXEC mechanism enabled (wrapper: /usr/local/httpd2210/bin/suexec)
[Mon Nov 03 09:29:29 2008] [notice] Apache/2.2.10 (Unix) DAV/2 PHP/5.2.6 configured -- resuming normal operations

Le problème maintenant c'est que je ne trouve pas le binaire php-cgi pourtant l'installation c'est bien passée.

[root@localhost /]# /usr/local/bin/php -v
PHP 5.2.6 (cli) (built: Nov 2 2008 14:08:49)
Copyright (c) 1997-2008 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2008 Zend Technologies

[root@localhost /]# updatedb
[root@localhost /]# locate php-cgi
[root@localhost /]#

Il ne le trouve pas.

C'est bien lors de l'installation de php avec le ./configure Make make install qu'il crée normalement ce php-cgi non?

J'ai utilisé les options suivantes :

./configure --enable-cgi \
--enable-cli \
--enable-fastcgi \
--enable-force-cgi-redirect \
--with-prefix=/usr/local/php5 \
--exec-prefix=/usr/local/php5 \
--program-prefix=php5 \
--with-apxs2=/usr/local/httpd2210/bin/apxs \
--with-mhash=/usr/local \
--with-dbase \
--with-filepro \
--enable-exif \
--with-xml=/usr/local \
--enable-ftp \
--with-db \
--enable-bcmath \
--enable-calendar \
--with-jpeg-dir \
--with-png-dir \
--with-gd \
--enable-gd-native-ttf \
--with-freetype-dir \
--with-gettext \
--with-mysql \
--with-zlib-dir \
--enable-trans-sid \
--with-kerberos \
--with-openssl \
--enable-sysvsem \
--enable-sysvshm \
--with-gettext \
--with-dom \
--with-iconv \
--enable-mbstring=all \
--enable-mbregex \
--with-gd \
--with-png-dir=/usr \
--with-jpeg-dir=/usr \
--with-mime-magic

J'ai besoin de ce binaire, d'après les tuto pour le placer dans le cgi-bin du user.

Donc config.status de php, j'ai bien :

# ./configure --enable-cgi --enable-cli --enable-fastcgi --enable-force-cgi-redirect --with-prefix=/usr/local/php5 --exec-prefix=/usr/local/php5 --program-prefix=php5 --with-apxs2=/usr/local/httpd2210/bin/apxs --with-mhash=/usr/local --with-dbase --with-filepro --enable-exif --with-xml=/usr/local --enable-ftp --with-db --enable-bcmath --enable-calendar --with-jpeg-dir --with-png-dir --with-gd --enable-gd-native-ttf --with-freetype-dir --with-gettext --with-mysql --with-zlib-dir --enable-trans-sid --with-kerberos --with-openssl --enable-sysvsem --enable-sysvshm --with-gettext --with-dom --with-iconv --enable-mbstring=all --enable-mbregex --with-gd --with-png-dir=/usr --with-jpeg-dir=/usr --with-mime-magic

Je suis coincé à cause de l'absence de ce binaire.

Max

Max

Avatar de l’utilisateur
dexmon
Gourou
Gourou
Messages : 793
Inscription : sam. 18 juin 2005, 9:55
Localisation : /usr/local/apache
Contact :

Re: Question sur Apache 2 en suexec

Messagepar dexmon » lun. 03 nov. 2008, 16:37

regardez dans /usr/local/php5/bin/
ImageUNIX foreverImage
Avant toute demande de support, vérifiez votre fichier error.log Apache.
----------------------------------------

max2france
Membre
Membre
Messages : 15
Inscription : dim. 02 nov. 2008, 12:45

Re: Question sur Apache 2 en suexec

Messagepar max2france » lun. 03 nov. 2008, 16:37

L'absence de generation du binaire php-cgi est lié à ma liste d'option car si j'indique seulement les paramètres suivant, je trouve bien le binaire.

./configure --enable-cgi \
--enable-cli \
--enable-fastcgi \

Par contre, si je met tout ca, il le genere pas

./configure --enable-cgi \
--enable-cli \
--enable-fastcgi \
--enable-force-cgi-redirect \
--with-prefix=/usr/local/php5 \
--exec-prefix=/usr/local/php5 \
--program-prefix=php5 \
--with-apxs2=/usr/local/httpd2210/bin/apxs \
--with-mhash=/usr/local \
--with-dbase \
--with-filepro \
--enable-exif \
--with-xml=/usr/local \
--enable-ftp \
--with-db \
--enable-bcmath \
--enable-calendar \
--with-jpeg-dir \
--with-png-dir \
--with-gd \
--enable-gd-native-ttf \
--with-freetype-dir \
--with-gettext \
--with-mysql \
--with-zlib-dir \
--enable-trans-sid \
--with-kerberos \
--with-openssl \
--enable-sysvsem \
--enable-sysvshm \
--with-gettext \
--with-dom \
--with-iconv \
--enable-mbstring=all \
--enable-mbregex \
--with-gd \
--with-png-dir=/usr \
--with-jpeg-dir=/usr \
--with-mime-magic

Il ne doit pas aimer un paramètre.

Max

Avatar de l’utilisateur
dexmon
Gourou
Gourou
Messages : 793
Inscription : sam. 18 juin 2005, 9:55
Localisation : /usr/local/apache
Contact :

Re: Question sur Apache 2 en suexec

Messagepar dexmon » lun. 03 nov. 2008, 16:41

c ceci que vous devez supprimer:

Code : Tout sélectionner

--exec-prefix=/usr/local/php5 \
--program-prefix=php5 \
--with-apxs2=/usr/local/httpd2210/bin/apxs \
ImageUNIX foreverImage
Avant toute demande de support, vérifiez votre fichier error.log Apache.
----------------------------------------

max2france
Membre
Membre
Messages : 15
Inscription : dim. 02 nov. 2008, 12:45

Re: Question sur Apache 2 en suexec erreur PHP

Messagepar max2france » lun. 03 nov. 2008, 20:07

La compilation a reussi et j'ai trouvé le binaire.

J'ai crée un user/group pour suexec :
webuser1:x:501:501:Suexec user 1:/home/webuser1:/sbin/nologin
webusers:x:501:

Je fait tourner apache avec le user apache :
apache 19273 18962 0 20:54 ? 00:00:00 /usr/local/httpd2210/bin/httpd -k start
apache 19274 18962 0 20:54 ? 00:00:00 /usr/local/httpd2210/bin/httpd -k start


J'ai crée les dossier /home/webuser1/www et /home/webuser1/cgi-bin :
[root@localhost webuser1]# ls -lah
total 72K
drwxr-xr-x 5 webuser1 webusers 4,0K nov 3 19:45 .
drwxr-xr-x 7 root root 4,0K nov 3 09:33 ..
-rw-r--r-- 1 webuser1 webusers 33 nov 2 16:27 .bash_logout
-rw-r--r-- 1 webuser1 webusers 176 nov 2 16:27 .bash_profile
-rw-r--r-- 1 webuser1 webusers 124 nov 2 16:27 .bashrc
drwxr-xr-x 2 webuser1 webusers 4,0K nov 3 19:45 cgi-bin
drwxr-xr-x 4 webuser1 webusers 4,0K nov 2 16:27 .mozilla
drwxr-xr-x 2 webuser1 webusers 4,0K nov 3 19:48 www

Il porte bien les droits webuser1.webusers
Le dossier /home/webuser1 est en chmod 755

J'ai copié le php-cgi dans /home/webusers1/cgi-bin :

[root@localhost cgi-bin]# ls -liah
total 16M
32604170 drwxr-xr-x 2 webuser1 webusers 4,0K nov 3 19:45 .
32604161 drwxr-xr-x 5 webuser1 webusers 4,0K nov 3 19:45 ..
32604171 -rwxr-xr-x 1 webuser1 webusers 16M nov 3 19:45 php-cgi

Il porte également le user/group : webuser1/webusers

J'ai crée un VirtualHost dans /usr/local/httpd2210/conf/httpd.conf que voici :

<VirtualHost *>
ServerName nomdusite.com
DocumentRoot /home/webuser1/www
#SuexecUserGroup webuser1 webusers
ScriptAlias /cgi-bin/ "/home/webuser1/cgi-bin/"
<Directory "/home/webuser1/cgi-bin/">
AllowOverride None
Options -Indexes +ExecCGI
SetHandler cgi-script
Order allow,deny
Allow from all
</Directory>

Dans mon httpd.con j'ai :
LoadModule suexec_module modules/mod_suexec.so
AddHandler cgi-script .cgi .pl
AddHandler php4-script .php
Action php4-script /cgi-bin/php-cgi

Lorsque que je veux executer mon script test.php, il me sort dans error_log :

[Mon Nov 03 21:04:00 2008] [notice] suEXEC mechanism enabled (wrapper: /usr/local/httpd2210/bin/suexec)
[Mon Nov 03 21:04:00 2008] [notice] Digest: generating secret for digest authentication ...
[Mon Nov 03 21:04:00 2008] [notice] Digest: done
[Mon Nov 03 21:04:00 2008] [notice] Apache/2.2.10 (Unix) DAV/2 PHP/5.2.6 configured -- resuming normal operations
[Mon Nov 03 21:04:11 2008] [error] [client 88.160.152.96] client denied by server configuration: /home/webuser1/www/test.php

C'est à priori un problème de droit, je precise que sans le virutalhost mon phpinfo() dans le script test.php s'affiche correctement.

La j'ai un erreur 404, Le site Web a refusé d’afficher cette page Web

Merci de votre aide, je pense que j'y suis preque

Max

Avatar de l’utilisateur
dexmon
Gourou
Gourou
Messages : 793
Inscription : sam. 18 juin 2005, 9:55
Localisation : /usr/local/apache
Contact :

Re: Question sur Apache 2 en suexec

Messagepar dexmon » lun. 03 nov. 2008, 20:28

En premier:
Il te faut mettre dans le bloc directory de ton vhosts:

Code : Tout sélectionner

order allow, deny
allow from all


En second:

Code : Tout sélectionner

webuser1:x:501:501:Suexec user 1:/home/webuser1:/sbin/nologin


Cet utilisateur ne pourra pas utiliser suexec !!
Pourquoi ?

Réponse: car il a un uid inférieur à 1000
Tu te souvient de l'option de configuration --with-suexec-uidmin=1000 ??
Et ici il a un uid de 501

POur pouvoir utiliser suexec il doit avoir un UID supérieur ou égal à 1000
ImageUNIX foreverImage
Avant toute demande de support, vérifiez votre fichier error.log Apache.
----------------------------------------

max2france
Membre
Membre
Messages : 15
Inscription : dim. 02 nov. 2008, 12:45

Re: Question sur Apache 2 en suexec

Messagepar max2france » lun. 03 nov. 2008, 20:38

Exacte, j'aurai du m'en rendre compte.

J'ai donc modifié /etc/passwd par :
webuser1:x:1501:1501:Suexec user 1:/home/webuser1:/sbin/nologin

Et /etc/group :
webusers:x:1501:

J'avance mais ca ne change pas le message d'erreur :

[Mon Nov 03 21:35:30 2008] [error] [client 88.160.152.xx] client denied by server configuration: /home/webuser1/www/test.php

Sans doute un problème de reglage dans httpd.conf

max2france
Membre
Membre
Messages : 15
Inscription : dim. 02 nov. 2008, 12:45

Re: Question sur Apache 2 en suexec

Messagepar max2france » lun. 03 nov. 2008, 22:53

Bon j'ai modifié dans httpd.conf ca :

<Directory />
Options FollowSymLinks
# AllowOverride None
AllowOverride All
# Order deny,allow
# Deny from all
Order allow,deny
Allow from all
</Directory>

Et j'avance encore un peu, suexec à l'air de tourner mais ca pose un soucis, j'ai ca dans suexec_log :

[root@localhost logs]# tail -f /usr/local/httpd2210/logs/suexec_log
[2008-11-03 23:44:39]: uid: (1501/webuser1) gid: (1501/webusers) cmd: php-cgi
[2008-11-03 23:44:39]: command not in docroot (/home/webuser1/cgi-bin/php-cgi)
[2008-11-03 23:45:38]: uid: (1501/webuser1) gid: (1501/webusers) cmd: php-cgi
[2008-11-03 23:45:38]: command not in docroot (/home/webuser1/cgi-bin/php-cgi)

Le fichier test.php contient juste ca :
<?
echo " salut";
?>

J'ai le droit à un "Internal Server Error" :-(


Max

Avatar de l’utilisateur
dexmon
Gourou
Gourou
Messages : 793
Inscription : sam. 18 juin 2005, 9:55
Localisation : /usr/local/apache
Contact :

Re: Question sur Apache 2 en suexec

Messagepar dexmon » mar. 04 nov. 2008, 1:55

Ne modifiez pas votre fichier httpd.conf, il est très bien comme il est :wink: c'est le vhost ici qui commande.

Remettez le comme il est, cette config permet de tout protéger à partir de la racine du serveur...
La politique apache est de tout fermer et laisser passer seulement ce qu'on a décider.

Code : Tout sélectionner

<Directory />
Options FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
</Directory>


Pour la config du vhost c'est:

Code : Tout sélectionner

DocumentRoot /home/webuser1/www/
<Directory /home/webuser1/www>
   AllowOverride All
   Options All
   Order allow, deny
   Allow from all
</Directory>

et vous n'aurez plus de "client denied by server configuration..."

Pour l'erreur qui dit que la commande n'est pas dans le docroot.. que vous retourne cette commande ?

Code : Tout sélectionner

/usr/local/httpd2210/bin/httpd -V

C'est un V majuscule
ImageUNIX foreverImage
Avant toute demande de support, vérifiez votre fichier error.log Apache.
----------------------------------------

max2france
Membre
Membre
Messages : 15
Inscription : dim. 02 nov. 2008, 12:45

Re: Question sur Apache 2 en suexec

Messagepar max2france » mar. 04 nov. 2008, 3:14

Bonjour,

Suite au conseil, j'ai remis le httpd.conf et modifier le virtual host par :

<VirtualHost *:80>
ServerName suexec.site.fr
DocumentRoot "/home/webuser1/www"
SuexecUserGroup webuser1 webusers
ScriptAlias /cgi-bin/ "/home/webuser1/cgi-bin/"
DocumentRoot /home/webuser1/www/
<Directory /home/webuser1/www>
AllowOverride All
Options All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>

Error_log :
[Tue Nov 04 04:10:02 2008] [error] [client 88.160.152.66] client denied by server configuration: /home/webuser1/cgi-bin/php-cgi

Plus rien dans suexec et sur IE : Erreur 403 de nouveau

[root@localhost conf]# /usr/local/httpd2210/bin/httpd -V
Server version: Apache/2.2.10 (Unix)
Server built: Nov 3 2008 10:00:54
Server's Module Magic Number: 20051115:18
Server loaded: APR 1.3.3, APR-Util 1.3.4
Compiled using: APR 1.3.3, APR-Util 1.3.4
Architecture: 32-bit
Server MPM: Prefork
threaded: no
forked: yes (variable process count)
Server compiled with....
-D APACHE_MPM_DIR="server/mpm/prefork"
-D APR_HAS_SENDFILE
-D APR_HAS_MMAP
-D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
-D APR_USE_SYSVSEM_SERIALIZE
-D APR_USE_PTHREAD_SERIALIZE
-D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
-D APR_HAS_OTHER_CHILD
-D AP_HAVE_RELIABLE_PIPED_LOGS
-D DYNAMIC_MODULE_LIMIT=128
-D HTTPD_ROOT="/usr/local/httpd2210"
-D SUEXEC_BIN="/usr/local/httpd2210/bin/suexec"
-D DEFAULT_PIDLOG="logs/httpd.pid"
-D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
-D DEFAULT_LOCKFILE="logs/accept.lock"
-D DEFAULT_ERRORLOG="logs/error_log"
-D AP_TYPES_CONFIG_FILE="conf/mime.types"
-D SERVER_CONFIG_FILE="conf/httpd.conf"
[root@localhost conf]#

Avatar de l’utilisateur
dexmon
Gourou
Gourou
Messages : 793
Inscription : sam. 18 juin 2005, 9:55
Localisation : /usr/local/apache
Contact :

Re: Question sur Apache 2 en suexec

Messagepar dexmon » mar. 04 nov. 2008, 4:22

Error_log :
[Tue Nov 04 04:10:02 2008] [error] [client 88.160.152.66] client denied by server configuration: /home/webuser1/cgi-bin/php-cgi

Oui c'est normal, vous avez ajouté la configuration pour le documentroot (ok) mais vous avez supprimé celle du scriptalias :mrgreen:

Voici la bonne configuration pour le vhost:

<VirtualHost *:80>
ServerName suexec.site.fr
DocumentRoot "/home/webuser1/www"
SuexecUserGroup webuser1 webusers

DocumentRoot /home/webuser1/www/
<Directory /home/webuser1/www>
AllowOverride All
Options All
Order allow,deny
Allow from all
</Directory>

ScriptAlias /cgi-bin/ "/home/webuser1/cgi-bin/"
<Directory "/home/webuser1/cgi-bin/">
AllowOverride None
Options -Indexes +ExecCGI
SetHandler cgi-script
Order allow,deny
Allow from all
</Directory>

</VirtualHost>



le httpd -V ne me donne pas les renseignements nécessaire...
Qu'avez-vous indiqué dans le --with-suexec-docroot= et le --with-suexec-userdir= ???
ImageUNIX foreverImage
Avant toute demande de support, vérifiez votre fichier error.log Apache.
----------------------------------------


Revenir vers « Général »

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 1 invité