689 lines
32 KiB
XML
689 lines
32 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
|
<html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr"><head>
|
|
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
|
|
<!--
|
|
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
|
|
This file is generated from xml source: DO NOT EDIT
|
|
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
|
|
-->
|
|
<title>Support suEXEC - Serveur HTTP Apache Version 2.4</title>
|
|
<link href="./style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
|
|
<link href="./style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
|
|
<link href="./style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /><link rel="stylesheet" type="text/css" href="./style/css/prettify.css" />
|
|
<script src="./style/scripts/prettify.min.js" type="text/javascript">
|
|
</script>
|
|
|
|
<link href="./images/favicon.ico" rel="shortcut icon" /></head>
|
|
<body id="manual-page"><div id="page-header">
|
|
<p class="menu"><a href="./mod/">Modules</a> | <a href="./mod/directives.html">Directives</a> | <a href="http://wiki.apache.org/httpd/FAQ">FAQ</a> | <a href="./glossary.html">Glossaire</a> | <a href="./sitemap.html">Plan du site</a></p>
|
|
<p class="apache">Serveur HTTP Apache Version 2.4</p>
|
|
<img alt="" src="./images/feather.png" /></div>
|
|
<div class="up"><a href="./"><img title="<-" alt="<-" src="./images/left.gif" /></a></div>
|
|
<div id="path">
|
|
<a href="http://www.apache.org/">Apache</a> > <a href="http://httpd.apache.org/">Serveur HTTP</a> > <a href="http://httpd.apache.org/docs/">Documentation</a> > <a href="./">Version 2.4</a></div><div id="page-content"><div id="preamble"><h1>Support suEXEC</h1>
|
|
<div class="toplang">
|
|
<p><span>Langues Disponibles: </span><a href="./en/suexec.html" hreflang="en" rel="alternate" title="English"> en </a> |
|
|
<a href="./fr/suexec.html" title="Français"> fr </a> |
|
|
<a href="./ja/suexec.html" hreflang="ja" rel="alternate" title="Japanese"> ja </a> |
|
|
<a href="./ko/suexec.html" hreflang="ko" rel="alternate" title="Korean"> ko </a> |
|
|
<a href="./tr/suexec.html" hreflang="tr" rel="alternate" title="Türkçe"> tr </a></p>
|
|
</div>
|
|
|
|
<p>La fonctionnalité <strong>suEXEC</strong> permet
|
|
l'exécution des programmes <strong>CGI</strong> et
|
|
<strong>SSI</strong> sous un utilisateur autre que celui sous
|
|
lequel s'exécute le serveur web qui appelle ces programmes.
|
|
Normalement, lorsqu'un programme CGI ou SSI est lancé, il
|
|
s'exécute sous le même utilisateur que celui du serveur web qui
|
|
l'appelle.</p>
|
|
|
|
<p>Utilisée de manière appropriée, cette fonctionnalité peut
|
|
réduire considérablement les risques de sécurité encourus
|
|
lorsqu'on autorise les utilisateurs à développer et faire
|
|
s'exécuter des programmes CGI ou SSI de leur cru. Cependant, mal
|
|
configuré, suEXEC peut causer de nombreux problèmes et même créer
|
|
de nouvelles failles dans la sécurité de votre ordinateur. Si
|
|
vous n'êtes pas familier avec la gestion des programmes
|
|
<em>setuid root</em> et les risques de sécurité qu'ils comportent,
|
|
nous vous recommandons vivement de ne pas tenter
|
|
d'utiliser suEXEC.</p>
|
|
</div>
|
|
<div id="quickview"><a href="https://www.apache.org/foundation/contributing.html" class="badge"><img src="https://www.apache.org/images/SupportApache-small.png" alt="Support Apache!" /></a><ul id="toc"><li><img alt="" src="./images/down.gif" /> <a href="#before">Avant de commencer</a></li>
|
|
<li><img alt="" src="./images/down.gif" /> <a href="#model">Modèle de sécurité de suEXEC</a></li>
|
|
<li><img alt="" src="./images/down.gif" /> <a href="#install">Configurer et installer suEXEC</a></li>
|
|
<li><img alt="" src="./images/down.gif" /> <a href="#enable">Activation et désactivation
|
|
de suEXEC</a></li>
|
|
<li><img alt="" src="./images/down.gif" /> <a href="#usage">Utilisation de suEXEC</a></li>
|
|
<li><img alt="" src="./images/down.gif" /> <a href="#debug">Débogage de suEXEC</a></li>
|
|
<li><img alt="" src="./images/down.gif" /> <a href="#jabberwock">Avis à la population !
|
|
Avertissements et exemples</a></li>
|
|
</ul><h3>Voir aussi</h3><ul class="seealso"><li><a href="#comments_section">Commentaires</a></li></ul></div>
|
|
<div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
|
|
<div class="section">
|
|
<h2><a name="before" id="before">Avant de commencer</a></h2>
|
|
|
|
<p>Avant de foncer tête baissée dans la lecture de ce document,
|
|
vous devez tenir compte de certaines hypothèses concernant vous-même
|
|
et l'environnement dans lequel vous allez utiliser suexec.</p>
|
|
|
|
<p>Premièrement, vous devez utiliser un système d'exploitation
|
|
UNIX ou dérivé, capable d'effectuer des opérations
|
|
<strong>setuid</strong> et <strong>setgid</strong>. Tous les
|
|
exemples de commande sont donnés en conséquence. D'autres
|
|
plates-formes, même si elles supportent suEXEC, peuvent
|
|
avoir une configuration différente.</p>
|
|
|
|
<p>Deuxièmement, vous devez être familier avec les concepts de base
|
|
relatifs à la sécurité de votre ordinateur et son administration.
|
|
Ceci implique la compréhension des opérations
|
|
<strong>setuid/setgid</strong> et des différents effets qu'elles
|
|
peuvent produire sur votre système et son niveau de sécurité.</p>
|
|
|
|
<p>Troisièmement, vous devez utiliser une version
|
|
<strong>non modifiée</strong> du code de suEXEC. L'ensemble du
|
|
code de suEXEC a été scruté et testé avec soin par les développeurs
|
|
et de nombreux bêta testeurs. Toutes les précautions ont été prises
|
|
pour s'assurer d'une base sûre de code non seulement simple, mais
|
|
aussi solide. La modification de ce code peut causer des problèmes
|
|
inattendus et de nouveaux risques de sécurité. Il est
|
|
<strong>vivement</strong> recommandé de ne pas modifier le code de
|
|
suEXEC, à moins que vous ne soyez un programmeur spécialiste des
|
|
particularités liées à la sécurité, et souhaitez partager votre
|
|
travail avec l'équipe de développement du serveur HTTP Apache afin
|
|
de pouvoir en discuter.</p>
|
|
|
|
<p>Quatrièmement et dernièrement, l'équipe de développement du
|
|
serveur HTTP Apache a décidé de ne
|
|
<strong>PAS</strong> inclure suEXEC dans l'installation par défaut
|
|
d'Apache httpd. Pour pouvoir mettre en oeuvre suEXEC, l'administrateur
|
|
doit porter la plus grande attention aux détails. Après avoir bien
|
|
réfléchi aux différents points de la configuration de suEXEC,
|
|
l'administrateur peut l'installer selon les méthodes classiques.
|
|
Les valeurs des paramètres de configuration doivent être
|
|
déterminées et spécifiées avec soin par l'administrateur, afin de
|
|
maintenir la sécurité du système de manière appropriée lors de
|
|
l'utilisation de la fonctionnalité suEXEC. C'est par le biais de
|
|
ce processus minutieux que nous espérons réserver
|
|
l'installation de suEXEC aux administrateurs prudents et
|
|
suffisamment déterminés à vouloir l'utiliser.</p>
|
|
|
|
<p>Vous êtes encore avec nous ? Oui ? Bien.
|
|
Alors nous pouvons continuer !</p>
|
|
</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
|
|
<div class="section">
|
|
<h2><a name="model" id="model">Modèle de sécurité de suEXEC</a></h2>
|
|
|
|
<p>Avant d'installer et configurer suEXEC, nous allons tout d'abord
|
|
décrire le modèle de sécurité que vous êtes sur le point
|
|
d'implémenter. Vous devriez ainsi mieux comprendre ce qui se passe
|
|
vraiment à l'intérieur de suEXEC et quelles précautions ont été
|
|
prises pour préserver la sécurité de votre système.</p>
|
|
|
|
<p><strong>suEXEC</strong> est basé sur un programme "conteneur"
|
|
(wrapper) setuid qui est appelé par le serveur HTTP Apache principal.
|
|
Ce conteneur est appelé quand une requête HTTP concerne
|
|
un programme CGI ou SSI que l'administrateur
|
|
a décidé de faire s'exécuter
|
|
sous un utilisateur autre que celui du serveur principal.
|
|
Lorsqu'il reçoit une telle requête, Apache httpd fournit au conteneur
|
|
suEXEC le nom du programme, ainsi que les identifiants utilisateur
|
|
et groupe sous lesquels le programme doit s'exécuter.</p>
|
|
|
|
<p>Le conteneur effectue ensuite les vérifications suivantes afin
|
|
de déterminer la réussite ou l'échec du processus -- si une seule
|
|
de ces conditions n'est pas vérifiée, le programme journalise
|
|
l'erreur et se termine en retournant un code d'erreur, sinon il
|
|
continue :</p>
|
|
|
|
<ol>
|
|
<li>
|
|
<strong>L'utilisateur qui exécute le conteneur est-il un
|
|
utilisateur valide de ce système ?</strong>
|
|
|
|
<p class="indent">
|
|
Ceci permet de s'assurer que l'utilisateur qui exécute le
|
|
conteneur est vraiment un utilisateur appartenant au système.
|
|
</p>
|
|
</li>
|
|
|
|
<li>
|
|
<strong>Le conteneur a-t-il été appelé avec un nombre
|
|
d'arguments correct ?</strong>
|
|
|
|
<p class="indent">
|
|
Le conteneur ne s'exécutera que si on lui fournit un nombre
|
|
d'arguments correct. Le serveur HTTP apache sait quel est le
|
|
bon format des arguments. Si le conteneur ne reçoit pas un
|
|
nombre d'arguments correct, soit il a été modifié,
|
|
soit quelque chose ne va pas dans la portion suEXEC de
|
|
votre binaire Apache httpd.
|
|
</p>
|
|
</li>
|
|
|
|
<li>
|
|
<strong>Cet utilisateur valide est-il autorisé à exécuter le
|
|
conteneur ?</strong>
|
|
|
|
<p class="indent">
|
|
Cet utilisateur est-il celui autorisé à exécuter le
|
|
conteneur ? Un seul utilisateur (celui d'Apache) est
|
|
autorisé à exécuter ce programme.
|
|
</p>
|
|
</li>
|
|
|
|
<li>
|
|
<strong>Le chemin du programme CGI ou SSI cible est-il
|
|
non sûr ?</strong>
|
|
|
|
<p class="indent">
|
|
Le chemin du programme CGI ou SSI cible débute-t-il par un
|
|
'/' ou contient-il une référence arrière '..' ? Ceci est
|
|
interdit ; le programme CGI ou SSI cible doit se trouver dans
|
|
la hiérarchie de la racine des documents de suEXEC (voir
|
|
<code>--with-suexec-docroot=<em>DIR</em></code> ci-dessous).
|
|
</p>
|
|
</li>
|
|
|
|
<li>
|
|
<strong>Le nom utilisateur cible est-il valide ?</strong>
|
|
|
|
<p class="indent">
|
|
L'utilisateur cible existe-t-il ?
|
|
</p>
|
|
</li>
|
|
|
|
<li>
|
|
<strong>Le nom du groupe cible est-il valide ?</strong>
|
|
|
|
<p class="indent">
|
|
Le groupe cible existe-t-il ?
|
|
</p>
|
|
</li>
|
|
|
|
<li>
|
|
<strong>L'utilisateur cible n'est-il <em>PAS</em>
|
|
superutilisateur ?</strong>
|
|
|
|
|
|
<p class="indent">
|
|
suEXEc ne permet pas à
|
|
<code><em>root</em></code> d'exécuter des programmes CGI/SSI.
|
|
</p>
|
|
</li>
|
|
|
|
<li>
|
|
<strong>Le numéro de l'identifiant de l'utilisateur cible
|
|
est-il <em>SUPERIEUR</em> au numéro d'identifiant
|
|
minimum ?</strong>
|
|
|
|
<p class="indent">
|
|
Le numéro d'identifiant utilisateur minimum est défini à
|
|
l'exécution du script configure. Ceci vous permet de définir
|
|
le numéro d'identifiant utilisateur le plus bas qui sera
|
|
autorisé à éxécuter des programmes CGI/SSI. En particulier,
|
|
cela permet d'écarter les comptes système.
|
|
</p>
|
|
</li>
|
|
|
|
<li>
|
|
<strong>Le groupe cible n'est-il <em>PAS</em> le groupe
|
|
superutilisateur ?</strong>
|
|
|
|
<p class="indent">
|
|
Actuellement, suEXEC ne permet pas au groupe
|
|
<code><em>root</em></code> d'exécuter des programmes CGI/SSI.
|
|
</p>
|
|
</li>
|
|
|
|
<li>
|
|
<strong> Le numéro d'identifiant du groupe cible est-il
|
|
<em>SUPERIEUR</em> au numéro d'identifiant minimum ?</strong>
|
|
|
|
<p class="indent">
|
|
Le numéro d'identifiant de groupe minimum est spécifié lors
|
|
de l'exécution du script configure. Ceci vous permet de
|
|
définir l'identifiant de groupe le plus bas possible qui sera
|
|
autorisé à exécuter des programmes CGI/SSI, et est
|
|
particulièrement utile pour écarter les groupes "système".
|
|
</p>
|
|
</li>
|
|
|
|
<li>
|
|
<strong>Le conteneur peut-il obtenir avec succès l'identité
|
|
des utilisateur et groupe cibles ?</strong>
|
|
|
|
<p class="indent">
|
|
C'est ici que le programme obtient l'identité des utilisateur
|
|
et groupe cibles via des appels à setuid et setgid. De même,
|
|
la liste des accès groupe est initialisée avec tous les
|
|
groupes auxquels l'utilisateur cible appartient.
|
|
</p>
|
|
</li>
|
|
|
|
<li>
|
|
<strong>Peut-on se positionner dans le répertoire dans dequel
|
|
sont situés les programmes CGI/SSI ?</strong>
|
|
|
|
<p class="indent">
|
|
S'il n'existe pas, il ne peut pas contenir de fichier. Et si
|
|
l'on ne peut pas s'y positionner, il n'existe probablement
|
|
pas.
|
|
</p>
|
|
</li>
|
|
|
|
<li>
|
|
<strong>Le répertoire est-il dans l'espace web
|
|
de httpd ?</strong>
|
|
|
|
<p class="indent">
|
|
Si la requête concerne une portion de la racine du serveur,
|
|
le répertoire demandé est-il dans la hiérarchie de la racine
|
|
des documents de suEXEC ? Si la requête concerne un
|
|
<code class="directive"><a href="./mod/mod_userdir.html#userdir">UserDir</a></code>, le répertoire demandé est-il dans
|
|
la hiérarchie du répertoire défini comme le répertoire
|
|
utilisateur de suEXEC (voir les
|
|
<a href="#install">options de configuration de suEXEC</a>) ?
|
|
</p>
|
|
</li>
|
|
|
|
<li>
|
|
<strong>L'écriture dans le répertoire est-elle interdite pour
|
|
un utilisateur autre que le propriétaire </strong>
|
|
|
|
<p class="indent">
|
|
Le répertoire ne doit pas être ouvert aux autres
|
|
utilisateurs ; seul l'utilisateur propriétaire doit pouvoir
|
|
modifier le contenu du répertoire.
|
|
</p>
|
|
</li>
|
|
|
|
<li>
|
|
<strong>Le programme CGI/SSI cible existe-t-il ?</strong>
|
|
|
|
<p class="indent">
|
|
S'il n'existe pas, il ne peut pas être exécuté.
|
|
</p>
|
|
</li>
|
|
|
|
<li>
|
|
<strong>Les utilisateurs autres que le propriétaire n'ont-ils
|
|
<em>PAS</em> de droits en écriture sur le programme
|
|
CGI/SSI ?</strong>
|
|
|
|
<p class="indent">
|
|
Les utilisateurs autres que le propriétaire ne doivent pas
|
|
pouvoir modifier le programme CGI/SSI.
|
|
</p>
|
|
</li>
|
|
|
|
<li>
|
|
<strong>Le programme CGI/SSI n'est-il <em>PAS</em> setuid ou
|
|
setgid ?</strong>
|
|
|
|
<p class="indent">
|
|
Les programmes cibles ne doivent pas pouvoir modifier à
|
|
nouveau les identifiants utilisateur/groupe.
|
|
</p>
|
|
</li>
|
|
|
|
<li>
|
|
<strong>Le couple utilisateur/groupe cible est-il le même que
|
|
celui du programme ?</strong>
|
|
|
|
<p class="indent">
|
|
L'utilisateur est-il le propriétaire du fichier ?
|
|
</p>
|
|
</li>
|
|
|
|
<li>
|
|
<strong>Peut-on nettoyer avec succès l'environnement des
|
|
processus afin de garantir la sûreté des opérations ?</strong>
|
|
|
|
<p class="indent">
|
|
suExec nettoie l'environnement des processus en établissant
|
|
un chemin d'exécution sûr (défini lors de la configuration),
|
|
et en ne passant que les variables dont les noms font partie
|
|
de la liste de l'environnement sûr (créée de même lors de la
|
|
configuration).
|
|
</p>
|
|
</li>
|
|
|
|
<li>
|
|
<strong>Le conteneur peut-il avec succès se substituer au
|
|
programme CGI/SSI cible et s'exécuter ?</strong>
|
|
|
|
<p class="indent">
|
|
C'est là où l'exécution de suEXEC s'arrête et où commence
|
|
celle du programme CGI/ssi cible.
|
|
</p>
|
|
</li>
|
|
</ol>
|
|
|
|
<p>Ce sont les opérations standards effectuées par le modèle de
|
|
sécurité du conteneur suEXEC. Il peut paraître strict et est
|
|
susceptible d'imposer de nouvelles limitations et orientations
|
|
dans la conception des programmes CGI/SSI, mais il a été développé
|
|
avec le plus grand soin, étape par étape, en se focalisant sur
|
|
la sécurité.</p>
|
|
|
|
<p>Pour plus d'informations sur la mesure dans laquelle ce modèle
|
|
de sécurité peut limiter vos possibilités au regard de la
|
|
configuration du serveur, ainsi que les risques de sécurité qui
|
|
peuvent être évités grâce à une configuration appropriée de suEXEC,
|
|
se référer à la section <a href="#jabberwock">"Avis à la population !"</a> de ce document.</p>
|
|
</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
|
|
<div class="section">
|
|
<h2><a name="install" id="install">Configurer et installer suEXEC</a></h2>
|
|
|
|
<p>C'est ici que nous entrons dans le vif du sujet.</p>
|
|
|
|
<p><strong>Options de configuration de suEXEC</strong><br />
|
|
</p>
|
|
|
|
<dl>
|
|
<dt><code>--enable-suexec</code></dt>
|
|
|
|
<dd>Cette option active la fonctionnalité suEXEC qui n'est
|
|
jamais installée ou activée par défaut. Au moins une option
|
|
<code>--with-suexec-xxxxx</code> doit accompagner l'option
|
|
<code>--enable-suexec</code> pour qu'APACI (l'utilitaire de
|
|
configuration de la compilation d'Apache) accepte votre demande
|
|
d'utilisation de la fonctionnalité suEXEC.</dd>
|
|
|
|
<dt><code>--with-suexec-bin=<em>PATH</em></code></dt>
|
|
|
|
<dd>Le chemin du binaire <code>suexec</code> doit être codé en
|
|
dur dans le serveur pour des raisons de sécurité. Cette option
|
|
vous permet de modifier le chemin par défaut.
|
|
<em>Par exemple</em>
|
|
<code>--with-suexec-bin=/usr/sbin/suexec</code></dd>
|
|
|
|
<dt><code>--with-suexec-caller=<em>UID</em></code></dt>
|
|
|
|
<dd>L'<a href="mod/mpm_common.html#user">utilisateur</a> sous
|
|
lequel httpd s'exécute habituellement. C'est le seul utilisateur
|
|
autorisé à exécuter le wrapper suEXEC.</dd>
|
|
|
|
<dt><code>--with-suexec-userdir=<em>DIR</em></code></dt>
|
|
|
|
<dd>Cette option définit le sous-répertoire de la hiérarchie des
|
|
répertoires utilisateurs dans lequel l'utilisation
|
|
de suEXEC sera autorisée. Tous les exécutables situés dans ce
|
|
répertoire seront exécutables par suEXEC sous l'utilisateur
|
|
cible ; ces programmes doivent donc être sûrs. Si vous utilisez
|
|
une directive <code class="directive"><a href="./mod/mod_userdir.html#userdir">UserDir</a></code>
|
|
"simple" (c'est à dire ne contenant pas de
|
|
"*"), l'option --with-suexec-userdir
|
|
devra contenir la même valeur. SuEXEC ne fonctionnera pas
|
|
correctement si la directive <code class="directive"><a href="./mod/mod_userdir.html#userdir">UserDir</a></code> contient une valeur
|
|
différente du répertoire home de l'utilisateur tel qu'il est
|
|
défini dans le fichier <code>passwd</code>. la valeur par défaut
|
|
est "<code>public_html</code>".<br />
|
|
Si vous avez plusieurs hôtes virtuels avec une directive
|
|
<code class="directive"><a href="./mod/mod_userdir.html#userdir">UserDir</a></code> différente
|
|
pour chacun d'entre eux, vous devrez faire en sorte que chaque
|
|
UserDir possède un répertoire parent commun ; donnez alors à
|
|
l'option --with-suexec-userdir le nom
|
|
de ce répertoire commun. <strong>Si tout ceci n'est pas défini
|
|
correctement, les requêtes CGI "~userdir" ne fonctionneront
|
|
pas !</strong></dd>
|
|
|
|
<dt><code>--with-suexec-docroot=<em>DIR</em></code></dt>
|
|
|
|
<dd>Cette option fonctionne comme la directive DocumentRoot pour
|
|
httpd. Il s'agit de la seule hiérarchie (en dehors des directives
|
|
<code class="directive"><a href="./mod/mod_userdir.html#userdir">UserDir</a></code>) dans laquelle la fonctionnalité suEXEC
|
|
pourra être utilisée. La valeur par défaut est la valeur de
|
|
<code>--datadir</code> accompagnée du suffixe
|
|
"<code>/htdocs</code>" ;
|
|
<em>Par exemple</em>, si vous exécutez configure avec
|
|
"<code>--datadir=/home/apache</code>", la valeur
|
|
"<code>/home/apache/htdocs</code>" sera utilisée par défaut comme
|
|
racine des documents pour le conteneur suEXEC.</dd>
|
|
|
|
<dt><code>--with-suexec-uidmin=<em>UID</em></code></dt>
|
|
|
|
<dd>Cette option définit l'identifiant utilisateur le plus bas
|
|
avec lequel un utilisateur pourra être la cible de
|
|
suEXEC. 500 ou 100 sont des valeurs courantes sur la plupart des
|
|
systèmes. la valeur par défaut est 100.</dd>
|
|
|
|
<dt><code>--with-suexec-gidmin=<em>GID</em></code></dt>
|
|
|
|
<dd>Cette option définit l'identifiant de groupe le plus bas
|
|
avec lequel un utilisateur pourra être la cible de
|
|
suEXEC. 100 est une valeur courante sur la plupart des
|
|
systèmes et est par conséquent la valeur par défaut.</dd>
|
|
|
|
<dt><code>--with-suexec-logfile=<em>FILE</em></code></dt>
|
|
|
|
<dd>Cette option permet de définir le fichier dans lequel
|
|
toutes les transactions et erreurs de suEXEC seront journalisées
|
|
(à des fins d'analyse ou de débogage). Par défaut, le fichier
|
|
journal se nomme "<code>suexec_log</code>" et se trouve dans votre
|
|
répertoire standard des fichiers journaux défini par
|
|
<code>--logfiledir</code></dd>
|
|
|
|
<dt><code>--with-suexec-safepath=<em>PATH</em></code></dt>
|
|
|
|
<dd>Cette option permet de définir une variable d'environnement
|
|
PATH sûre à passer aux exécutables CGI. La valeur par défaut
|
|
est "<code>/usr/local/bin:/usr/bin:/bin</code>".</dd>
|
|
</dl>
|
|
|
|
<h3>Compilation et installation du conteneur suEXEC</h3>
|
|
|
|
|
|
<p>Si vous avez activé la fonctionnalité suEXEC à l'aide de
|
|
l'option <code>--enable-suexec</code>, le binaire
|
|
<code>suexec</code> sera automatiquement construit (en même temps
|
|
que httpd) lorsque vous exécuterez la commande
|
|
<code>make</code>.</p>
|
|
|
|
<p>Lorsque tous les composants auront été construits, vous pourrez
|
|
exécuter la commande <code>make install</code> afin de les
|
|
installer. Le binaire <code>suexec</code> sera installé dans le
|
|
répertoire défini à l'aide de l'option <code>--sbindir</code>. La
|
|
localisation par défaut est "/usr/local/apache2/bin/suexec".</p>
|
|
<p>Veuillez noter que vous aurez besoin des
|
|
<strong><em>privilèges root</em></strong> pour passer l'étape de
|
|
l'installation. Pour que le conteneur puisse changer
|
|
l'identifiant utilisateur, il doit avoir comme propriétaire
|
|
<code><em>root</em></code>, et les droits du fichier doivent
|
|
inclure le bit d'exécution setuserid.</p>
|
|
|
|
|
|
<h3>>Mise en place de permissions pour
|
|
paranoïaque</h3>
|
|
|
|
<p>Bien que le conteneur suEXEC vérifie que l'utilisateur qui
|
|
l'appelle correspond bien à l'utilisateur spécifié à l'aide de
|
|
l'option <code>--with-suexec-caller</code> du programme
|
|
<code class="program"><a href="./programs/configure.html">configure</a></code>, il subsiste toujours le risque qu'un
|
|
appel système ou une bibliothèque fasse appel à suEXEC avant que
|
|
cette vérification ne soit exploitable sur votre système. Pour
|
|
tenir compte de ceci, et parce que c'est en général la meilleure
|
|
pratique, vous devez utiliser les permissions du système de
|
|
fichiers afin de vous assurer que seul le groupe sous lequel
|
|
s'exécute httpd puisse faire appel à suEXEC.</p>
|
|
|
|
<p>Si, par exemple, votre serveur web est configuré pour
|
|
s'exécuter en tant que :</p>
|
|
|
|
<pre class="prettyprint lang-config">User www
|
|
Group webgroup</pre>
|
|
|
|
|
|
<p>et <code class="program"><a href="./programs/suexec.html">suexec</a></code> se trouve à
|
|
"/usr/local/apache2/bin/suexec", vous devez exécuter les
|
|
commandes</p>
|
|
|
|
<div class="example"><p><code>
|
|
chgrp webgroup /usr/local/apache2/bin/suexec<br />
|
|
chmod 4750 /usr/local/apache2/bin/suexec<br />
|
|
</code></p></div>
|
|
|
|
<p>Ceci permet de s'assurer que seul le groupe sous lequel httpd
|
|
s'exécute (ici webgroup) puisse faire appel au conteneur
|
|
suEXEC.</p>
|
|
|
|
</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
|
|
<div class="section">
|
|
<h2><a name="enable" id="enable">Activation et désactivation
|
|
de suEXEC</a></h2>
|
|
|
|
<p>Au démarrage, httpd vérifie la présence du fichier
|
|
<code class="program"><a href="./programs/suexec.html">suexec</a></code> dans le répertoire défini par
|
|
l'option <code>--sbindir</code> du script configure (le
|
|
répertoire par défaut est "/usr/local/apache/sbin/suexec"). Si
|
|
httpd trouve un conteneur suEXEC correctement configuré, il
|
|
enregistrera le message suivant dans le journal des erreurs :</p>
|
|
|
|
<div class="example"><p><code>
|
|
[notice] suEXEC mechanism enabled (wrapper: <var>/path/to/suexec</var>)
|
|
</code></p></div>
|
|
|
|
<p>Si ce message n'est pas généré au démarrage du serveur, ce
|
|
dernier ne trouve probablement pas le programme conteneur à
|
|
l'endroit où il est sensé être, ou l'exécutable suexec n'est pas
|
|
installé en <em>setuid root</em>.</p>
|
|
|
|
<p>Si le serveur HTTP Apache est déjà en cours d'exécution, et si
|
|
vous activez le mécanisme suEXEC pour la première fois, vous
|
|
devez arrêter et redémarrer httpd. Un redémarrage
|
|
à l'aide d'un simple signal HUP ou USR1 suffira. </p>
|
|
<p>Pour désactiver suEXEC, vous devez supprimer le fichier
|
|
<code class="program"><a href="./programs/suexec.html">suexec</a></code>, puis arrêter et redémarrer
|
|
httpd.</p>
|
|
</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
|
|
<div class="section">
|
|
<h2><a name="usage" id="usage">Utilisation de suEXEC</a></h2>
|
|
|
|
<p>Les requêtes pour des programmes CGI ne feront appel au
|
|
conteneur suEXEC que si elles concernent un hôte virtuel
|
|
contenant une directive <code class="directive"><a href="./mod/mod_suexec.html#suexecusergroup">SuexecUserGroup</a></code>, ou si elles sont
|
|
traitées par <code class="module"><a href="./mod/mod_userdir.html">mod_userdir</a></code>.</p>
|
|
|
|
<p><strong>Hôtes virtuels :</strong><br /> Une des méthodes
|
|
d'utilisation du conteneur suEXEC consiste à insérer une
|
|
directive <code class="directive"><a href="./mod/mod_suexec.html#suexecusergroup">SuexecUserGroup</a></code> dans une section
|
|
<code class="directive"><a href="./mod/core.html#virtualhost">VirtualHost</a></code>. En définissant
|
|
des valeurs différentes de celles du serveur principal, toutes les
|
|
requêtes pour des ressources CGI seront exécutées sous
|
|
les <em>User</em> et <em>Group</em> définis pour cette section
|
|
<code class="directive"><a href="./mod/core.html#virtualhost"><VirtualHost></a></code>. Si cette
|
|
directive est absente de la section <code class="directive"><a href="./mod/core.html#virtualhost"><VirtualHost></a></code>, l'utilisateur du
|
|
serveur principal sera pris par défaut</p>
|
|
|
|
<p><strong>Répertoires des utilisateurs :</strong><br /> Avec
|
|
cette méthode, les
|
|
requêtes traitées par <code class="module"><a href="./mod/mod_userdir.html">mod_userdir</a></code> appelleront le
|
|
conteneur suEXEC pour exécuter le programme CGI sous l'identifiant
|
|
utilisateur du répertoire utilisateur concerné. Seuls prérequis
|
|
pour pouvoir accéder à cette fonctionnalité : l'exécution des CGI
|
|
doit être activée pour l'utilisateur concerné, et le script doit
|
|
passer avec succès le test des <a href="#model">vérifications de
|
|
sécurité</a> décrit plus haut. Voir aussi l'
|
|
<a href="#install">option de compilation</a>
|
|
<code>--with-suexec-userdir</code>.</p> </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
|
|
<div class="section">
|
|
<h2><a name="debug" id="debug">Débogage de suEXEC</a></h2>
|
|
|
|
<p>Le conteneur suEXEC va écrire ses informations de journalisation
|
|
dans le fichier défini par l'option de compilation
|
|
<code>--with-suexec-logfile</code> comme indiqué plus haut. Si vous
|
|
pensez avoir configuré et installé correctement le conteneur,
|
|
consultez ce journal, ainsi que le journal des erreurs du serveur
|
|
afin de déterminer l'endroit où vous avez fait fausse route.</p>
|
|
|
|
</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
|
|
<div class="section">
|
|
<h2><a name="jabberwock" id="jabberwock">Avis à la population !
|
|
Avertissements et exemples</a></h2>
|
|
|
|
<p><strong>NOTE !</strong> Cette section est peut-être
|
|
incomplète.</p>
|
|
|
|
<p>Quelques points importants du conteneur peuvent
|
|
imposer des contraintes du point de vue de la configuration du
|
|
serveur. Veuillez en prendre connaissance avant de soumettre un
|
|
rapport de bogue à propos de suEXEC.</p>
|
|
|
|
<p><strong>Points importants à propos de suEXEC</strong></p>
|
|
<ul>
|
|
|
|
<li>
|
|
Limitations concernant la hiérarchie.
|
|
|
|
<p class="indent">
|
|
Pour des raisons de sécurité et d'efficacité, toutes les
|
|
requêtes suEXEC ne doivent concerner que des ressources
|
|
situées dans la racine des documents définie pour les
|
|
requêtes concernant un hôte virtuel, ou des ressources
|
|
situées dans la racine des documents définies pour les
|
|
requêtes concernant un répertoire utilisateur. Par exemple,
|
|
si vous avez configuré quatre hôtes virtuels, vous devrez
|
|
définir la structure des racines de documents de vos hôtes
|
|
virtuels en dehors d'une hiérarchie de documents principale
|
|
de httpd, afin de tirer parti de suEXEC dans le contexte des
|
|
hôtes virtuels (Exemple à venir).
|
|
</p>
|
|
</li>
|
|
|
|
<li>
|
|
La variable d'environnement PATH de suEXEC
|
|
|
|
<p class="indent">
|
|
Modifier cette variable peut s'avérer dangereux. Assurez-vous
|
|
que tout chemin que vous ajoutez à cette variable est un
|
|
répertoire <strong>de confiance</strong>. Vous n'avez
|
|
probablement pas l'intention d'ouvrir votre serveur de façon
|
|
à ce que l'on puisse y exécuter un cheval de Troie.
|
|
</p>
|
|
</li>
|
|
|
|
<li>
|
|
Modification de suEXEC
|
|
|
|
<p class="indent">
|
|
Encore une fois, ceci peut vous causer de
|
|
<strong>graves ennuis</strong> si vous vous y essayez sans
|
|
savoir ce que vous faites. Evitez de vous y risquer dans la
|
|
mesure du possible.
|
|
</p>
|
|
</li>
|
|
</ul>
|
|
|
|
</div></div>
|
|
<div class="bottomlang">
|
|
<p><span>Langues Disponibles: </span><a href="./en/suexec.html" hreflang="en" rel="alternate" title="English"> en </a> |
|
|
<a href="./fr/suexec.html" title="Français"> fr </a> |
|
|
<a href="./ja/suexec.html" hreflang="ja" rel="alternate" title="Japanese"> ja </a> |
|
|
<a href="./ko/suexec.html" hreflang="ko" rel="alternate" title="Korean"> ko </a> |
|
|
<a href="./tr/suexec.html" hreflang="tr" rel="alternate" title="Türkçe"> tr </a></p>
|
|
</div><div class="top"><a href="#page-header"><img src="./images/up.gif" alt="top" /></a></div><div class="section"><h2><a id="comments_section" name="comments_section">Commentaires</a></h2><div class="warning"><strong>Notice:</strong><br />This is not a Q&A section. Comments placed here should be pointed towards suggestions on improving the documentation or server, and may be removed by our moderators if they are either implemented or considered invalid/off-topic. Questions on how to manage the Apache HTTP Server should be directed at either our IRC channel, #httpd, on Libera.chat, or sent to our <a href="https://httpd.apache.org/lists.html">mailing lists</a>.</div>
|
|
<script type="text/javascript"><!--//--><![CDATA[//><!--
|
|
var comments_shortname = 'httpd';
|
|
var comments_identifier = 'http://httpd.apache.org/docs/2.4/suexec.html';
|
|
(function(w, d) {
|
|
if (w.location.hostname.toLowerCase() == "httpd.apache.org") {
|
|
d.write('<div id="comments_thread"><\/div>');
|
|
var s = d.createElement('script');
|
|
s.type = 'text/javascript';
|
|
s.async = true;
|
|
s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;
|
|
(d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);
|
|
}
|
|
else {
|
|
d.write('<div id="comments_thread">Comments are disabled for this page at the moment.<\/div>');
|
|
}
|
|
})(window, document);
|
|
//--><!]]></script></div><div id="footer">
|
|
<p class="apache">Copyright 2024 The Apache Software Foundation.<br />Autorisé sous <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
|
|
<p class="menu"><a href="./mod/">Modules</a> | <a href="./mod/directives.html">Directives</a> | <a href="http://wiki.apache.org/httpd/FAQ">FAQ</a> | <a href="./glossary.html">Glossaire</a> | <a href="./sitemap.html">Plan du site</a></p></div><script type="text/javascript"><!--//--><![CDATA[//><!--
|
|
if (typeof(prettyPrint) !== 'undefined') {
|
|
prettyPrint();
|
|
}
|
|
//--><!]]></script>
|
|
</body></html> |