<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE article PUBLIC "-//FreeBSD//DTD DocBook XML V4.5-Based Extension//EN"
	"../../../share/xml/freebsd45.dtd">

<!--
  - Copyright (c) 2001-2003 Networks Associates Technology, Inc.
  - All rights reserved.
  -
  - This software was developed for the FreeBSD Project by ThinkSec AS and
  - Network Associates Laboratories, the Security Research Division of
  - Network Associates, Inc.  under DARPA/SPAWAR contract N66001-01-C-8035
  - ("CBOSS"), as part of the DARPA CHATS research program.
  -
  - Redistribution and use in source and binary forms, with or without
  - modification, are permitted provided that the following conditions
  - are met:
  - 1. Redistributions of source code must retain the above copyright
  -    notice, this list of conditions and the following disclaimer.
  - 2. Redistributions in binary form must reproduce the above copyright
  -    notice, this list of conditions and the following disclaimer in the
  -    documentation and/or other materials provided with the distribution.
  - 3. The name of the author may not be used to endorse or promote
  -    products derived from this software without specific prior written
  -    permission.
  -
  - THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
  - ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  - ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
  - FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  - DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  - OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  - HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  - LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  - OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  - SUCH DAMAGE.
  -->

<article xmlns:xi="http://www.w3.org/2001/XInclude" lang='fr'>
  <articleinfo>
    <title>Pluggable Authentication Modules</title>

    <abstract>
      <para>Cet  article  d�crit  les  principes sous-jacent  et  les
      m�canismes  de   la  biblioth�que  PAM,   il  explique  comment
      configurer PAM,  l'int�grer dans  les applications, et
      �crire ses propres modules PAM.</para>

	  &trans.a.mathieu;
    </abstract>

    <copyright>
      <year>2001</year>
      <year>2002</year>
      <year>2003</year>
      <holder>Networks Associates Technology, Inc.</holder>
    </copyright>

    <authorgroup>
      <author>
	<firstname>Dag-Erling</firstname>
	<surname>Sm&oslash;rgrav</surname>
	<contrib>Contributed by </contrib>
      </author>
    </authorgroup>

    <legalnotice>
      <para>Cet  article  a  �t�  �crit  pour le  Projet  FreeBSD  par
      ThinkSec  AS et  les laboratoires  de Networks  Associates,  la
      division de  recherche en  s�curit� de Networks  Associates, Inc.
      sous      le      contrat     DARPA/SPAWAR      N66001-01-C-8035
      (<quote>CBOSS</quote>),  en  tant  que  partie du  programme  de
      recherche DARPA CHATS.</para>
    </legalnotice>

    <releaseinfo>$FreeBSD$</releaseinfo>
  </articleinfo>

  <section id="pam-intro">
    <title id="pam-intro.title">Introduction</title>

	 <para>La  biblioth�que  PAM  est  une  API  g�n�ralis�e  pour  les
	 services   relevant  de   l'authentification  permettant   &agrave;  un
	 administrateur    syst�me   d'ajouter    une    nouvelle   m�thode
	 d'authentification en  ajoutant simplement un  nouveau module PAM,
	 ainsi que de  modifier  les  r�gles d'authentification  en  �ditant  les
	 fichiers de configuration.</para>

	 <para>PAM  a �t� con�u  et d�velopp�  en 1995  par Vipin  Samar et
	 Charlie  Lai  de Sun  Microsystems,  et  n'a  pas beaucoup  �volu�
	 depuis. En  1997 l'Open Group publie  les premi�res sp�cifications
	 XSSO  qui standardisent  l'API  PAM et  ajoute  des extensions  pour
	 un simple (ou plutot int�gr�) &quot;sign-on&quot;.  Lors  de l'�criture de  cet article, la  sp�cification n'a
	 toujours pas �t� adopt�e comme standard.</para>

	 <para>Bien  que  cet  article  se  concentre  principalement  sur
	 FreeBSD  5.x,  qui  utilise  OpenPAM, il  devrait  �galement  �tre
	 applicable  &agrave; FreeBSD 4.x  qui utilise  Linux-PAM, ainsi qu'&agrave; d'autres
	 syst�mes d'exploitations tels que Linux ou Solaris.</para>

    <section id="pam-trademarks">
      <title id="pam-trademarks.title">Marques d�pos�es</title>

      <para>Sun, Sun Microsystems, SunOS and Solaris are trademarks or
	registered trademarks of Sun Microsystems, Inc.</para>

      <para>UNIX and The Open Group are trademarks or registered
	trademarks of The Open Group.</para>

      <para>All other brand or product names mentioned in this
	document may be trademarks or registered trademarks of their
	respective owners.</para>
    </section>
  </section>

  <section id="pam-terms">
    <title id="pam-terms.title">Termes et conventions</title>

    <section id="pam-definitions">
      <title id="pam-definitions.title">D�finitions</title>


		<para>La  terminologie   de  PAM  est  plut�t   confuse.  Ni  la
		publication originale  de Samar et Lai, ni  la sp�cification XSSO
		n'ont essay� de d�finir formellement des termes pour les acteurs
		et  les  entit�s intervenant  dans  PAM, les termes  qu'ils
		utilisent (mais  ne d�finissent  pas) sont parfois  trompeurs et
		ambigus.   Le   premier   essai  d'�tablir   une   terminologie
		consistante  et  non ambigu�  fut  un  papier  �crit par  Andrew
		G. Morgan (l'auteur de Linux-PAM) en 1999. Bien que les choix de
		Morgan furent  un �norme  pas en avant,  ils ne sont  pas parfait
		d'apr�s  l'auteur de  ce  document.  Ce qui  suit,
		largement  inspir� par  Morgan, est un  essai de  d�finir pr�cis�ment  et sans
		ambigu�t� des termes pour  chaque acteur ou entit� utilis� dans
		PAM.</para>

      <glosslist>
	<glossentry>
	  <glossterm>compte</glossterm>
	  <glossdef>
	    <para>L'ensemble  de  permissions  que  le demandeur  demande  a
	 	l'arbitre.</para>
	  </glossdef>
	</glossentry>

	<glossentry>
	  <glossterm>demandeur</glossterm>
	  <glossdef>
	    <para>L'utilisateur         ou        l'entit�        demandant
	    authentification.</para>
	  </glossdef>
	</glossentry>

	<glossentry>
	  <glossterm>arbitre</glossterm>
	  <glossdef>
	    <para>L'utilisateur ou l'entit� poss�dant les privil�ges n�cessaires
	    pour   v�rifier  la  requ�te   du  demandeur   ainsi que  l'autorit�
	    d'accorder ou de rejeter la requ�te.</para>
	  </glossdef>
	</glossentry>

	<glossentry>
	  <glossterm>cha�ne</glossterm>
	  <glossdef>
	    <para>Une s�quence de modules qui sera invoqu�e pour r�pondre &agrave;
	    une requ�te  PAM. La cha�ne comprend  les informations concernant
	    l'ordre dans lequel invoquer  les modules, les arguments &agrave; leur
	    passer et la fa�on d'interpr�ter les r�sultats.</para>
	  </glossdef>
	</glossentry>

	<glossentry>
	  <glossterm>client</glossterm>
	  <glossdef>
	    <para>L'application      responsable     de      la     requ�te
	    d'authentification   au   nom   du   demandeur   et   de recueillir
	    l'information d'authentification n�cessaire.</para>
	  </glossdef>
	</glossentry>

	<glossentry>
	  <glossterm>m�canisme</glossterm>
	  <glossdef>
	    <para>Il  s'agit  de  l'un  des  quatre  groupes  basiques  de
	    fonctionnalit�s  fournit par PAM  : authentification,  gestion de
	    compte,   gestion   de   session   et   mise &agrave; jour   du   jeton
	    d'authentification.</para>
	  </glossdef>
	</glossentry>

	<glossentry>
	  <glossterm>module</glossterm>
	  <glossdef>
	    <para>Une collection d'une ou plusieurs fonctions impl�mentant
	    un  service  d'authentification  particulier,  rassembl�es  dans  un
	    fichier binaire (normalement chargeable dynamiquement)
	    et identifi� par un nom unique.</para>
	  </glossdef>
	</glossentry>

	<glossentry>
	  <glossterm>r�gles</glossterm>
	  <glossdef>
	    <para>Le  jeu  complet  de  configuration  des r�gles  d�crivant
	    comment   traiter   les    requ�tes   PAM   pour   un   service
	    particulier. Une r�gle consiste normalement en quatre cha�nes,
	    une   pour  chaque   m�canisme,  bien   que   quelques  services
	    n'utilisent pas les quatre m�canismes.</para>

 </glossdef>
	</glossentry>

	<glossentry>
	  <glossterm>serveur</glossterm>
	  <glossdef>
	    <para>L'application agissant au nom de l'arbitre pour converser
	    avec le client,  r�cup�rer les informations d'authentification,
	    v�rifier les droits du demandeur et autoriser ou rejeter
	    la requ�te.</para>
	  </glossdef>
	</glossentry>

	<glossentry>
	  <glossterm>service</glossterm>
	  <glossdef>
	    <para>Un  ensemble de  serveurs  fournissant des  fonctionnalit�s
	    similaires  ou   li�es  et  n�cessitant   une  authentification
	    similaire. Les r�gles  de PAM sont d�finies sur  un le principe
	    de par-service;  ainsi tous les serveurs qui  demandent le m�me
	    nom de service seront soumis aux m�mes r�gles.</para>
	  </glossdef>
	</glossentry>

	<glossentry>
	  <glossterm>session</glossterm>
	  <glossdef>
	    <para>Le  contexte  dans  lequel  le  service  est  d�livr�  au
	    demandeur par le serveur. L'un  des quatre m�canismes de PAM, la
	    gestion  de   session,  s'en occupe   exclusivement  par  la
	    mise en place  et le rel�chement  de ce contexte.</para>
	  </glossdef>
	</glossentry>

	<glossentry>
	  <glossterm>jeton</glossterm>
	  <glossdef>
	    <para>Un morceau d'information associ� avec un compte tel qu'un
	    mot de passe  ou une passphrase que le  demandeur doit fournir
	    pour prouver son identit�.</para>
	  </glossdef>
	</glossentry>

	<glossentry>
	  <glossterm>transaction</glossterm>
	  <glossdef>
	    <para>Une s�quence de requ�tes depuis le m�me demandeur vers la
	    m�me    instance    du    m�me   serveur,    commen�ant    avec
	    l'authentification  et la  mise en  place de  la session  et se
	    terminant avec le d�montage de la session.</para>
	  </glossdef>
	</glossentry>
      </glosslist>
    </section>

    <section id="pam-usage-examples">
      <title id="pam-usage-examples.title"> Exemples d'utilisation</title>

      <para>Cette section  a pour but d'illustrer
      quelques-uns des termes  d�finis pr�c�demment  &agrave; l'aide
      d'exemples basiques.</para>

      <section>
	<title>Client et serveurs ne font qu'un</title>

	<para>Cet exemple  simple montre <literal>alice</literal> utilisant
	&man.su.1; pour devenir <literal>root</literal>.</para>


<screen>&prompt.user; <userinput>whoami</userinput>
alice
&prompt.user; <userinput>ls -l `which su`</userinput>
-r-sr-xr-x  1 root  wheel  10744 Dec  6 19:06 /usr/bin/su
&prompt.user; <userinput>su -</userinput>
Password: <userinput>xi3kiune</userinput>
&prompt.root; whoami
root
</screen>

	<itemizedlist>
	  <listitem>
	    <para>Le demandeur est <literal>alice</literal>.</para>
	  </listitem>
	  <listitem>
	    <para>Le compte est <literal>root</literal>.</para>
	  </listitem>
	  <listitem>
	    <para>Le processus  &man.su.1; est &agrave; la fois client et serveur.</para>
	  </listitem>
	  <listitem>
	    <para>Le jeton d'authentification est
	    <literal>xi3kiune</literal>.</para>
	  </listitem>
	  <listitem>
	    <para>L'arbitre  est <literal>root</literal>,  ce  qui explique
		   pourquoi            &man.su.1;           est           setuid
		   <literal>root</literal>.</para>
	  </listitem>
	</itemizedlist>
      </section>

      <section>
	<title>Client et serveur sont distincts.</title>

	<para>L'exemple  suivant   montre  <literal>eve</literal>  essayant
	d'initier        une       connexion        &man.ssh.1;       vers
	<literal>login.exemple.com</literal>, en demandant  &agrave; se logguer en
	tant que <literal>bob</literal>. La connexion r�ussit. Bob aurait du choisir
	un meilleur mot de passe !</para>

<screen>&prompt.user; <userinput>whoami</userinput>
eve
&prompt.user; <userinput>ssh bob@login.example.com</userinput>
bob@login.example.com's password: <userinput>god</userinput>
Last login: Thu Oct 11 09:52:57 2001 from 192.168.0.1
Copyright (c) 1980, 1983, 1986, 1988, 1990, 1991, 1993, 1994
	The Regents of the University of California.  All rights reserved.
FreeBSD 4.4-STABLE (LOGIN) #4: Tue Nov 27 18:10:34 PST 2001

Welcome to FreeBSD!
&prompt.user;</screen>

	<itemizedlist>
	  <listitem>
	    <para>Le demandeur est  <literal>eve</literal>.</para>
	  </listitem>
	  <listitem>
	    <para>Le client d'<literal>eve</literal> est repr�sent� par les processus &man.ssh.1; </para>
	  </listitem>
	  <listitem>
	    <para>Le serveur est le processus &man.sshd.8; sur
	      <literal>login.example.com</literal></para>
	  </listitem>
	  <listitem>
	    <para>Le compte est <literal>bob</literal>.</para>
	  </listitem>
	  <listitem>
	    <para>Le jeton d'identification est
	    <literal>god</literal>.</para>
	  </listitem>
	  <listitem>
	    <para>Bien  que  cela ne  soit  pas  montr�  dans cet  exemple,
	     l'arbitre est <literal>root</literal>.</para>
	  </listitem>
	</itemizedlist>
      </section>

      <section>
	<title>Exemple de r�gles</title>

	<para>Les  lignes  qui  suivent  sont  les  r�gles  par  d�faut  de
	  <literal>sshd</literal>:</para>

<programlisting>
sshd	auth		required	pam_nologin.so	no_warn
sshd	auth		required	pam_unix.so	no_warn try_first_pass
sshd	account		required	pam_login_access.so
sshd	account		required	pam_unix.so
sshd	session		required	pam_lastlog.so	no_fail
sshd	password	required	pam_permit.so</programlisting>

	<itemizedlist>
	  <listitem>
	  	 <para>Cette      politique      s'applique      au      service
	  	 <literal>sshd</literal> (qui n'est pas n�cessairement restreint
	  	 au serveur &man.sshd.8;)</para>
	  </listitem>
	  <listitem>
	    <para><literal>auth</literal>, <literal>account</literal>,
	      <literal>session</literal> et
	      <literal>password</literal> sont des m�canismes.</para>
	  </listitem>
	  <listitem>
	    <para><filename>pam_nologin.so</filename>,
	      <filename>pam_unix.so</filename>,
	      <filename>pam_login_access.so</filename>,
	      <filename>pam_lastlog.so</filename>                         et
	      <filename>pam_permit.so</filename> sont  des modules.  Il est
	      clair  dans cet exemple  que <filename>pam_unix.so</filename>
	      fournit  au  moins  deux  m�canismes (  authentification  et
	      gestion de compte).</para>
	  </listitem>
	</itemizedlist>
      </section>
    </section>

    <section id="pam-conventions">
      <title id="pam-conventions.title">Conventions</title>

      <para><!--XXX-->Cette section n'a pas encore �t� �crite.</para>
    </section>
  </section>

  <section id="pam-essentials">
    <title id="pam-essentials.title">Les bases de PAM</title>

    <section id="pam-facilities-primitives">
      <title id="pam-facilities-primitives.title">M�canismes et primitives</title>

		<para>L'API   PAM  fournit  six   primitives  d'authentification
		diff�rentes  regroup�es dans quatre  m�canismes qui  seront d�crits
		dans la partie suivante.</para>


      <variablelist>
	<varlistentry>
	  <term><literal>auth</literal></term>
	  <listitem>
	    <para><emphasis>Authentification.</emphasis>    Ce   m�canisme
	      concerne  l'authentification  du  demandeur  et  �tablit  les
	      droits du compte. Il fournit deux primitives :</para>


	    <itemizedlist>
	      <listitem>
		<para>&man.pam.authenticate.3;    authentifie    le   demandeur,
		g�n�ralement  en demandant  un jeton  d'identification et  en le
		comparant  a une  valeur stock�e  dans une  base de  donn�es ou
		obtenue par le biais d'un serveur d'authentification.</para>
	      </listitem>

	      <listitem>
		<para>&man.pam.setcred.3;  �tabli les  param�tres du  compte tel
		que l'uid, les groupes dont  le compte fait parti ou les limites
		sur l'utilisation des ressources.</para>
	      </listitem>
	    </itemizedlist>
	  </listitem>
	</varlistentry>

	<varlistentry>
	  <term><literal>account</literal></term>
	  <listitem>
	    <para><emphasis>Gestion  de  compte.</emphasis>  Ce  m�canisme
	    concerne la  disponibilit� du  compte pour des raisons autres que
	    l'authentification.  Par exemple  les  restrictions bas�es  sur
	    l'heure courante ou la charge  du serveur. Il fournit une seule
	    primitive:</para>

	    <itemizedlist>
	      <listitem>
		<para>&man.pam.acct.mgmt.3;  v�rifie que  le compte  demand� est
		disponible.</para>
	</listitem>
	    </itemizedlist>
	  </listitem>
	</varlistentry>

	<varlistentry>
	  <term><literal>session</literal></term>
	  <listitem>
	    <para><emphasis>Gestion  de  session.</emphasis> Ce  m�canisme
	    concerne la mise en place de la session  et sa terminaison, par
	    exemple l'enregistrement  de la  session dans les  journaux. Il
	    fournit deux primitives:</para>
	    <itemizedlist>
	      <listitem>
		<para>&man.pam.open.session.3; accomplie  les t�ches associ�es &agrave;
		la mise  en place  d'une session :  ajouter une entr�e  dans les
		bases  <filename>utmp</filename>  et  <filename>wtmp</filename>,
		d�marrer un agent SSH...</para>
	      </listitem>

	      <listitem>
		<para>&man.pam.close.session.3; accomplie les t�ches associ�es &agrave;
		la terminaison d'une session : ajouter une entr�e dans les bases
		<filename>utmp</filename>  et <filename>wtmp</filename>, arr�ter
		l'agent SSH...</para>
	      </listitem>
	    </itemizedlist>
	  </listitem>
	</varlistentry>

	<varlistentry>
	  <term><literal>password</literal></term>
	  <listitem>
	    <para><emphasis>Gestion   des  mots  de   passe.</emphasis>  Ce
	 m�canisme est  utilis� pour modifier  le jeton d'authentification
	 associ� &agrave; un  compte, soit parce qu'il a expir�,  soit parce que
	 l'utilisateur   d�sire   le   changer.   Il  fournit   une   seule
	 primitive:</para>
	    <itemizedlist>
	      <listitem>
		<para>&man.pam.chauthtok.3; modifie le jeton d'authentification,
		et �ventuellement v�rifie que celui-ci est assez robuste pour ne
		pas  �tre  devin�  facilement  ou  qu'il  n'a  pas  d�j&agrave; utilis�.
		</para>

	      </listitem>
	    </itemizedlist>
	  </listitem>
	</varlistentry>
      </variablelist>

    </section>

    <section id="pam-modules">
      <title id="pam-modules.title">Modules</title>


      <para>Les modules  sont le concept  clef de PAM; apr�s  tout ils
      constituent  le  <quote>M</quote>  de  PAM. Un  module  PAM  est
      lui-m�me un  morceau de code qui impl�mente  les primitives d'un
      ou   plusieurs   m�canismes    pour   une   forme   particuli�re
      d'authentification; par  exemple, les bases de mots  de passe UNIX
      que sont NIS, LDAP et Radius.</para>

      <section id="pam-module-naming">
	<title id="pam-module-naming.title">Nom des modules</title>


	<para>FreeBSD impl�mente chaque  m�canismes dans un module distinct
	  nomm�
	  <literal>pam_<replaceable>m�canisme</replaceable>.so</literal>
	  (par  exemple  <literal>pam_unix.so</literal>  pour le  m�canisme
	  Unix  .)   Les autres  implementations  poss�dent  parfois des  modules
	  s�par�s pour  des m�canismes s�par�s et incluent aussi  bien le
	  nom du service  que celui du m�canisme dans le  nom du module. Un
	  exemple  est le  module  <literal>pam_dial_auth.so.1</literal> de
	  Solaris  qui  est  utilis�  pour  authentifier  les  utilisateurs
	  dialup.</para>
      </section>

      <section id="pam-module-versioning">
	<title id="pam-module-versioning.title">Gestion des versions de module </title>

	<para>L'impl�mentation  originale  de PAM  par  FreeBSD, bas�e  sur
	Linux-PAM, n'utilisait  pas de num�ro  de version pour  les modules
	PAM. Ceci peut poser des  probl�mes avec les applications tiers qui
	peuvent �tre li�es avec  d'anciennes biblioth�ques syst�mes, puisqu'il
	n'y  a pas  possibilit�  de charger  la  version correspondante  du
	module d�sir�.</para>

	<para>Pour  sa part,  OpenPAM cherche  les  modules qui  ont la  m�me
	version que la biblioth�que PAM (pour le moment 2) et se rabat sur
	un module  sans version si aucun  module avec version  n'a put �tre
	charg�.  Ainsi les anciens  modules peuvent  �tre fournis  pour les
	anciennes  applications,   tout  en  permettant   aux  nouvelles applications
	(ou  bien nouvellement  compil�es)  de  tirer parti  des
	modules les plus r�cents.</para>

	<para>Bien que les modules PAM de Solaris poss�dent g�n�ralement un
	num�ro de version, ils ne sont pas r�ellement versionn�s car
	le num�ro  correspond &agrave; une  partie du nom  du module et  doit �tre
	inclus dans la configuration.</para>
      </section>
    </section>

    <section id="pam-chains-policies">
      <title id="pam-chains-policies.title">Cha�nes et politiques</title>

      <para>Lorsqu'un   <!--XXX-->serveur  initie   une   transaction  PAM,   la
      biblioth�que PAM essaie de  charger une politique pour le service
      sp�cifi�  dans  l'appel  a  &man.pam.start.3;  .   La  politique
      indique comment la requ�te d'authentification doit �tre trait�e
      et est d�finie dans un  fichier de configuration. Il  s'agit de
      l'autre   concept    clef   de   PAM :    la   possibilit�   pour
      l'administrateur  de  configurer  la  politique de  s�curit�  d'un
      syst�me en �ditant simplement une fichier texte.</para>

      <para>Une politique consiste en quatre cha�nes, une pour chacune
      des  quatre m�canismes  de PAM. Chaque  cha�ne est  une  suite de
      r�gles  de  configuration,  chacune  sp�cifiant un  module  &agrave;
      invoquer, des param�tres, options,  &agrave; passer au module et un
      drapeau de  contr�le qui d�crit  comment interpr�ter le  code de
      retour du module.</para>

      <para>Comprendre  le  drapeau  de  contr�le est  essentiel  pour
      comprendre  les  fichiers de  configuration  de  PAM. Il  existe
      quatre drapeaux de contr�le diff�rents :</para>

      <variablelist>
	<varlistentry>
	  <term><literal>binding</literal></term>
	  <listitem>
	    <para>Si le  module r�ussit et qu'aucun module  pr�c�dent de la
	    cha�ne n'a  �chou�, la cha�ne s'interrompt  imm�diatement et la
	    requ�te  est autoris�e.  Si le  module �choue  le reste  de la
	    cha�ne   est  ex�cut�,   mais   la  requ�te   est  rejet�e   au
	    final.</para>

	    <para>Ce drapeau  de contr�le a  �t� introduit par  Sun Solaris
	    dans la  version 9  (SunOS 5.9);  il est aussi  support� par
	    OpenPAM.</para>
	  </listitem>
	</varlistentry>

	<varlistentry>
	  <term><literal>required</literal></term>
	  <listitem>
	    <para>Si le module r�ussit, le  reste de la cha�ne est ex�cut�,
	    et  la  requ�te est  autoris�e  si  aucun  des autres  modules
	    n'�choue.  Si le  module  �choue,  le reste  de  la cha�ne  est
	    ex�cut�, mais au final la requ�te est rejet�e.</para>
	  </listitem>
	</varlistentry>

	<varlistentry>
	  <term><literal>requisite</literal></term>
	  <listitem>
	    <para>Si le module  r�ussit le reste de la  cha�ne est ex�cut�,
	    et  la   requ�te  est   autoris�e  sauf  si   d'autres  modules
	    �chou�s.  Si  le  module  �choue la  cha�ne  est  imm�diatement
	    termin�e et la requ�te est rejet�e.</para>
	  </listitem>
	</varlistentry>

	<varlistentry>
	  <term><literal>sufficient</literal></term>
	  <listitem>
	    <para>Si le  module r�ussit  et qu'aucun des  modules pr�c�dent
	    n'a �chou�  la cha�ne est imm�diatement termin�e  et la requ�te
	    est allou�e. Si  le module �choue il est ignore  et le reste de
	    la cha�ne est ex�cut�.</para>

	    <para>Puisque  la s�mantique  de  ce drapeau  peut  �tre un  peu
	    confuse,  sp�cialement  lorsqu'il s'agit  de  celui du  dernier
	    module de  la cha�ne, il  est recommand� d'utiliser  le drapeau
	    <literal>binding</literal>   &agrave;   la   place  de   celui-ci   sous la condition que
	    l'impl�mentation le supporte.</para>
	  </listitem>
	</varlistentry>

	<varlistentry>
	  <term><literal>optional</literal></term>
	  <listitem>
	    <para>Le  module est ex�cut�  mais le  r�sultat est  ignor�. Si
	    tout    les    modules    de    la    cha�ne    sont    marqu�s
	    <literal>optional</literal>,   toutes   les   requ�tes   seront
	    toujours accept�es.</para>
	  </listitem>
	</varlistentry>
      </variablelist>

      <para>Lorsqu'un  serveur invoque l'une  des six  primitives PAM,
       PAM  r�cup�re  la cha�ne  du  m�canisme  &agrave;  laquelle la  requ�te
      correspond et  invoque chaque module de la  cha�ne dans l'ordre
      indiqu�,  jusqu'&agrave;  ce que  la  fin  soit  atteinte ou  qu'aucune
      ex�cution  suppl�mentaire ne  soit n�cessaire  (soit &agrave;  cause du
      succ�s    d'un   module    en    <literal>binding</literal>   ou
      <literal>sufficient</literal>,  soit  &agrave;  cause de  l'�chec  d'un
      module <literal>requisite</literal>). La requ�te est accept�e si
      et seulement  si au moins un  module a �t� invoqu�,  et que tout
      les modules non optionnels ont r�ussi.</para>

      <para>Notez qu'il est possible, bien que peu courant, d'avoir le
      m�me  module  list� plusieurs  fois  dans  la  m�me cha�ne.  Par
      exemple un module qui d�termine  le nom utilisateur et le mot de
      passe  &agrave;  l'aide  d'un   serveur  directory  peut  �tre  invoqu�
      plusieurs  fois   avec  des  param�tres   sp�cifiant  diff�rents
      serveurs a contacter.  PAM consid�re les diff�rentes occurrences
      d'un  m�me  module  dans  une  m�me  cha�ne  comme  des  modules
      diff�rents et non li�s.</para>
    </section>

    <section id="pam-transactions">
      <title id="pam-transactions.title">Transactions</title>

      <para>Le cycle  de vie d'une transaction PAM  typique est d�crit
      ci-dessous. Notez que si l'une  de ces �tapes �choue, le serveur
      devrait  reporter un message  d'erreur au  client et  arr�ter la
      transaction.</para>

      <orderedlist>
	<listitem>
	  <para>Si  n�cessaire,  le   serveur  obtient  les  privil�ges  de
	  l'arbitre par le biais d'un m�canisme ind�pendant de PAM &mdash;
	  g�n�ralement en ayant  �t� d�marr� par <literal>root</literal> ou
	  en �tant setuid <literal>root</literal>.</para>
	</listitem>

	<listitem>
	  <para>Le  serveur appel  &man.pam.start.3; afin  d'initialiser la
	  biblioth�que PAM  et indique  le service et  le compte  cible, et
	  enregistre une fonction de conversation appropri�e.</para>
	</listitem>

	<listitem>
	  <para>Le  serveur  obtient  diverses informations  concernant  la
	  transaction (tel que le nom  d'utilisateur du demandeur et le nom
	  d'h�te de la machine sur  lequel le client tourne) et les soumet
	  &agrave; PAM en utilisant la fonction &man.pam.set.item.3;.</para>
	</listitem>

	<listitem>
	  <para>Le serveur appel  &man.pam.authenticate.3; pour authentifier le demandeur.</para>
	</listitem>

	<listitem>
	  <para>Le  serveur  appel  la fonction  &man.pam.acct.mgmt.3;  qui
	  v�rifie  que le compte  est valide  et disponible.  Si le  mot de
	  passe est correct mais a expir�, &man.pam.acct.mgmt.3; retournera
	  <literal>PAM_NEW_AUTHTOK_REQD</literal>    &agrave;    la    place    de
	  <literal>PAM_SUCCESS</literal>.</para>
	</listitem>

	<listitem>
	  <para>Si        l'�tape        pr�c�dente       a        retourn�
	  <literal>PAM_NEW_AUTHTOK_REQD</literal>,    le    serveur   appel
	  maintenant  &man.pam.chauthtok.3;  pour  obliger l'utilisateur  &agrave;
	  changer le jeton d'authentification du compte d�sir�.</para>
	</listitem>

	<listitem>
	  <para>Maintenant que le demandeur a �t� correctement authentifi�,
	  le serveur appelle  &man.pam.setcred.3; pour obtenir les privil�ges
	  du compte d�sir�. Il lui est  possible de faire ceci parce qu'il
	  agit au nom de l'arbitre dont il poss�de les privil�ges.</para>
	</listitem>

	<listitem>
	  <para>Lorsque les privil�ges corrects  ont �t� �tabli le serveur
	  appelle   &man.pam.open.session.3;   pour   mettre  en   place   la
	  session.</para>
	</listitem>

	<listitem>
	  <para>Maintenant le serveur effectue les services demand�s par le
	  client &mdash; par exemple fournir un shell au demandeur.</para>
	</listitem>

	<listitem>
	  <para>Lorsque le  serveur a  fini de servir  le client,  il appelle
	  &man.pam.close.session.3; afin de  terminer la session.</para>
	</listitem>

	<listitem>
	  <para>Pour finir, le  serveur appelle &man.pam.end.3; afin signaler
	  &agrave; la biblioth�que  PAM que la transaction se termine et qu'elle peut lib�rer
	  les   ressources    qu'elle   a    allou�   au   cours    de   la
	  transaction.</para>
	</listitem>
      </orderedlist>
    </section>
  </section>

  <section id="pam-config">
    <title id="pam-config.title">Configuration de PAM</title>

    <section id="pam-config-file-locations">
      <title id="pam-config-file-locations.title">Emplacement des fichiers de configuration</title>

      <para>Le fichier de  configuration de PAM est traditionnellement
      <filename>/etc/pam.conf</filename>.  Ce fichier  contient toutes
      les  politiques  de PAM  pour  votre  syst�me.  Chaque ligne  du
      fichier d�crit une �tape dans une cha�ne, tel que nous allons le
      voir ci-dessous:</para>

<programlisting>login   auth    required        pam_nologin.so  no_warn</programlisting>

      <para>Les champs  sont respectivement, le service, le nom  du m�canisme, le
      drapeau  de contr�le,  le nom  du  module et  les arguments  du
      module. Tout  champ additionnel est consid�r�  comme argument du
      module.</para>

      <para>Une   cha�ne  diff�rente   est   construite  pour   chaque couple
      service/m�canisme;  ainsi,  alors  que  l'ordre  des  lignes  est
      important  lorsqu'il s'agit  des m�mes  services  ou m�canismes,
      l'ordre  dans  lequel  les  diff�rents  services  et  m�canismes
      apparaissent  ne  l'est pas  &mdash;  except�  l'entr�e pour  le
      service  <literal>other</literal>, qui  sert de  r�f�rence par d�faut  et doit
      �tre  plac� &agrave;  la  fin.  L'exemple du  papier  original sur  PAM
      regroupait  les lignes  de configurations  par m�canisme  et le
      fichier   <filename>pam.conf</filename>  de   Solaris   le  fait
      toujours, mais  FreeBSD groupe  les lignes de  configuration par
      service. Toutefois il ne s'agit pas de la seule possibilit� et les autres poss�dent
      aussi un sens.</para>


      <para>OpenPAM et Linux-PAM offrent un m�canisme de configuration
      alternatif  o� les  politiques  sont plac�es  dans des  fichiers
      s�par�s portant  le nom du service auquel  ils s'appliquent. Ces
      fichiers  sont situ�s dans  <filename>/etc/pam.d/</filename> et
      ne contiennent que  quatre champs &agrave; la place  de cinq &mdash; le
      champ contenant  le nom du service  est omis. Il  s'agit du mode
      par  d�faut   dans  FreeBSD  4.x.   Notez  que  si   le  fichier
      <filename>/etc/pam.conf</filename>   existe   et  contient   des
      informations de configuration pour des services qui n'ont pas de
      politique  sp�cifi�e  dans <filename>/etc/pam.d</filename>,  ils
      seront utilis�s pour ces services.</para>



      <para>Le  gros avantage de  <filename>/etc/pam.d/</filename> sur
      <filename>/etc/pam.conf</filename>   est   qu'il  est   possible
      d'utiliser  la m�me  politique pour  plusieurs services  en liant
      chaque  nom  de service  &agrave;  un  fichier  de configuration.  Par
      exemple  pour  utiliser  la  m�me politique  pour  les  services
      <literal>su</literal>  et <literal>sudo</literal>,  nous pouvons
      faire comme ceci :</para>

<screen>&prompt.root; <userinput>cd /etc/pam.d</userinput>
&prompt.root; <userinput>ln -s su sudo</userinput></screen>

      <para>Ceci  fonctionne car  le nom  de service  est  d�termin� a
      partir  du nom  de fichier  plut�t qu'indiqu�  &agrave;  l'int�rieur du
      fichier de configuration, ainsi le m�me fichier peut �tre utilis�
      pour des services nomm�s diff�remment.</para>

      <para>Un autre avantage est  qu'un logiciel tiers peu facilement
      installer  les politiques  pour ses  services sans  avoir besoin
      d'�diter  <filename>/etc/pam.conf</filename>. Pour  continuer la
      tradition     de     FreeBSD,     OpenPAM     regardera     dans
      <filename>/usr/local/etc/pam.d</filename>   pour   trouver   les
      fichiers  de  configurations; puis si  aucun n'est  trouv�  pour  le
      service   demand�,   il cherchera dans   <filename>/etc/pam.d/</filename>   ou
      <filename>/etc/pam.conf</filename>.</para>

      <para>Finalement,   quelque   soit   le   m�canisme   que   vous
      choisissiez,       la      politique      <quote>magique</quote>
      <literal>other</literal> est  utilis�e par d�faut  pour tous les
      services qui n'ont pas leur propre politique.</para>

    </section>

    <section id="pam-config-breakdown">
      <title id="pam-config-breakdown.title">Breakdown of a
	configuration line</title>

      <para>Comme      expliqu�     dans     la      section     <link
	linkend="pam-config-file-locations"
	endterm="pam-config-file-locations.title"></link>,  chaque ligne de
	<filename>pam.conf</filename> consiste en quatre champs ou plus: le
	nom de service, le nom du m�canisme, le drapeau de contr�le, le nom
	du module et la pr�sence ou non d'arguments pour le module.</para>

      <para>Le nom du service  est g�n�ralement, mais pas toujours, le
      nom  de  l'application auquelle  les  r�gles  s'appliquent. Si  vous
      n'�tes pas s�r, r�f�rez vous &agrave; la documentation de l'application
      pour d�terminer quel nom de service elle utilise.</para>


      <para>Notez         que         si         vous         utilisez
      <filename>/etc/pam.d/</filename>      &agrave;     la      place     de
      <filename>/etc/pam.conf</filename>,   le  nom  du   service  est
      sp�cifi� par  le nom du  fichier de configuration et  n'est pas
      indiqu�  dans   les  lignes  de  configuration   qui,  d�s  lors,
      commencent par le nom du m�canisme.</para>


      <para>Le m�canisme est  l'un des quatre mots clef  d�crit dans la
      section         <link        linkend="pam-facilities-primitives"
      endterm="pam-facilities-primitives.title"></link></para>

      <para>De m�me, le  drapeau de contr�le est l'un  des quatre mots
      clef d�crits dans la section <link linkend="pam-chains-policies"
      endterm="pam-chains-policies.title"></link>  et  d�crit comment
      le   module   doit   interpr�ter    le   code   de   retour   du
      module.  Linux-PAM  supporte une  syntaxe  alternative qui  vous
      laisse  sp�cifier l'action &agrave;  associer &agrave;  chaque code  de retour
      possible;  mais ceci  devrait �tre  �vit� puisque  ce  n'est pas
      standard et �troitement li� &agrave; la fa�on dont Linux-PAM appelle les
      services  (qui diff�re  grandement  de la  fa�on  de Solaris  et
      OpenPAM). C'est  sans �tonnement que l'on  apprend qu'OpenPAM ne
      supporte pas cette syntaxe.</para>
    </section>

    <section id="pam-policies">
      <title id="pam-policies.title">Politiques</title>

      <para>Pour  configurer  PAM correctement,  il  est essentiel  de
      comprendre comment les politiques sont interpr�t�es.</para>

      <para>Lorsqu'une   application   appelle  &man.pam.start.3;   la
      biblioth�que  PAM charge  la  politique du  service sp�cifi�  et
      construit  les  quatre  cha�nes   de  module  (une  pour  chaque
      m�canisme). Si  une ou plusieurs cha�nes sont  vides, les cha�nes
      de  la   politique  du  service   <literal>other</literal>  sont
      utilis�es.</para>

      <para>Plus  tard,  lorsque  l'application  appelle  l'une  des  six
      primitives  PAM,  la  biblioth�que  PAM r�cup�re  la  cha�ne  du
      m�canisme  correspondant et  appelle la  fonction  appropri�e avec
      chaque  module list� dans  la cha�ne.  Apr�s chaque  appel d'une
      fonction  de service,  le type  du  module et  le code  d'erreur
      sont retourn�s par  celle-ci pour  d�terminer quoi faire.  � quelques
      exceptions  pr�s,  dont  nous  parlerons  plus  tard,  la  table
      suivante s'applique:</para>

      <table>
	<title>R�sum� de la cha�ne d'ex�cution PAM </title>
	<tgroup cols="4">
	  <colspec colwidth="1*" colname="type"/>
	  <colspec colwidth="1*" colname="success"/>
	  <colspec colwidth="1*" colname="ignore"/>
	  <colspec colwidth="1*" colname="other"/>
	  <thead>
	    <row>
	      <entry colname="type"></entry>
	      <entry colname="success"><literal>PAM_SUCCESS</literal></entry>
	      <entry colname="ignore"><literal>PAM_IGNORE</literal></entry>
	      <entry colname="other"><literal>other</literal></entry>
	   </row>
	  </thead>
	  <tbody>
	    <row>
	      <entry colname="type">binding</entry>
	      <entry colname="success">if (!fail) break;</entry>
	      <entry colname="ignore">-</entry>
	      <entry colname="other">fail = true;</entry>
	    </row>
	    <row>
	      <entry colname="type">required</entry>
	      <entry colname="success">-</entry>
	      <entry colname="ignore">-</entry>
	      <entry colname="other">fail = true;</entry>
	    </row>
	    <row>
	      <entry colname="type">requisite</entry>
	      <entry colname="success">-</entry>
	      <entry colname="ignore">-</entry>
	      <entry colname="other">fail = true; break;</entry>
	    </row>
	    <row>
	      <entry colname="type">sufficient</entry>
	      <entry colname="success">if (!fail) break;</entry>
	      <entry colname="ignore">-</entry>
	      <entry colname="other">-</entry>
	    </row>
	    <row>
	      <entry colname="type">optional</entry>
	      <entry colname="success">-</entry>
	      <entry colname="ignore">-</entry>
	      <entry colname="other">-</entry>
	    </row>
	  </tbody>
	</tgroup>
      </table>

      <para>Si <varname>fail</varname> est vrai &agrave; la fin de la cha�ne,
      ou  lorsqu'un <quote>break</quote>  est atteint,  le dispatcheur
      retourne le  code d'erreur renvoy�  par le premier module  qui a
      �chou�.     Autrement     <literal>PAM_SUCCESS</literal>     est
      retourn�.</para>

      <para>La   premi�re   exception  est   que   le  code   d'erreur
      <literal>PAM_NEW_AUTHOK_REQD</literal>  soit consid�r�  comme un
      succ�s, sauf si  aucun module n'�choue et qu'au  moins un module
      retourne  <literal>PAM_NEW_AUTHOK_REQD</literal>  le dispatcheur
      retournera <literal>PAM_NEW_AUTHOK_REQD</literal>.</para>

     <para>La seconde exception  est que &man.pam.setcred.3; consid�re
     les         modules         <literal>binding</literal>         et
     <literal>sufficient</literal>       comme      s'ils      �taient
     <literal>required</literal>.</para>

      <para>La    troisi�me   et    derni�re    exception   est    que
      &man.pam.chauthtok.3; ex�cute la totalit� de la cha�ne deux fois
      (la premi�re pour des v�rifications pr�liminaires et la deuxi�me
      pour mettre le  mot de passe) et lors  de la premi�re ex�cution
      il    consid�re   les   modules    <literal>binding</literal>   et
      <literal>sufficient</literal>      comme      s'ils      �taient
      <literal>required</literal>.</para>

    </section>
  </section>

  <section id="pam-freebsd-modules">
    <title id="pam-freebsd-modules.title">Les modules PAM de FreeBSD</title>

    <section id="pam-modules-deny">
      <title id="pam-modules-deny.title">&man.pam.deny.8;</title>

      <para>Le module &man.pam.deny.8; est l'un des modules disponibles
      les  plus simples;  il r�pond  &agrave; n'importe  qu'elle  requ�te par
      <literal>PAM_AUTH_ERR</literal>.  Il est  utile  pour d�sactiver
      rapidement un service (ajoutez-le au d�but de chaque cha�ne), ou
      pour       terminer      les       cha�nes       de      modules
      <literal>sufficient</literal>.</para>
    </section>

    <section id="pam-modules-echo">
      <title id="pam-modules-echo.title">&man.pam.echo.8;</title>

      <para>Le module &man.pam.echo.8;  passe simplement ses arguments
      &agrave;    la   fonction    de   conversation    comme    un   message
      <literal>PAM_TEXT_INFO</literal>. Il est principalement utilis�
      pour  le debogage  mais  il  peut aussi  servir  &agrave; afficher  un
      message    tel   que    <quote>Les    acc�s   ill�gaux    seront
      poursuivits</quote>    avant    de    commencer   la    proc�dure
      d'authentification.</para>
    </section>

    <section id="pam-modules-exec">
      <title id="pam-modules-exec.title">&man.pam.exec.8;</title>

      <para>Le module &man.pam.exec.8; prend comme premier argument le
      nom  du programme  &agrave; ex�cuter, les arguments  restant �tant
      utilis�s   comme  arguments   pour  ce   programme.   L'une  des
      applications possibles est d'utiliser un programme  qui monte le
      r�pertoire de l'utilisateur lors du login.</para>
    </section>

    <section id="pam-modules-ftp">
      <title id="pam-modules-ftp.title">pam_ftp(8)</title>

      <para>Le module pam_ftp(8)</para>
    </section>

    <section id="pam-modules-ftpusers">
      <title id="pam-modules-ftpusers.title">&man.pam.ftpusers.8;</title>

      <para>Le module &man.pam.ftpusers.8;</para>
    </section>

    <section id="pam-modules-group">
      <title id="pam-modules-group.title">&man.pam.group.8;</title>

      <para>Le   module  &man.pam.group.8;   accepte  ou   rejette  le
      demandeur &agrave;  partir de son appartenance &agrave;  un groupe particulier
      (g�n�ralement  <literal>wheel</literal> pour  &man.su.1;).  Il a
      pour but  premier de  conserver le comportement  traditionnel de
      &man.su.1; mais poss�de  d'autres applications comme par exemple
      exclure   un   certain   groupe   d'utilisateurs   d'un   service
      particulier.</para>

    </section>

    <section id="pam-modules-krb5">
      <title id="pam-modules-krb5.title">&man.pam.krb5.8;</title>

      <para>Le module &man.pam.krb5.8; </para>
    </section>

    <section id="pam-modules-ksu">
      <title id="pam-modules-ksu.title">&man.pam.ksu.8;</title>

      <para>Le module &man.pam.ksu.8; </para>
    </section>

    <section id="pam-modules-lastlog">
      <title id="pam-modules-lastlog.title">&man.pam.lastlog.8;</title>

      <para>Le module &man.pam.lastlog.8; </para>
    </section>

    <section id="pam-modules-login-access">
      <title id="pam-modules-login-access.title">&man.pam.login.access.8;</title>

      <para>Le module  &man.pam.login.access.8; </para>
    </section>

    <section id="pam-modules-nologin">
      <title id="pam-modules-nologin.title">&man.pam.nologin.8;</title>

      <para>Le module &man.pam.nologin.8; </para>
    </section>

    <section id="pam-modules-opie">
      <title id="pam-modules-opie.title">&man.pam.opie.8;</title>

      <para>Le   module   &man.pam.opie.8;   impl�mente   la   m�thode
      d'authentification &man.opie.4;. Le  syst�me &man.opie.4; est un
      m�canisme  de challenge-response o�  la r�ponse  &agrave; chaque
      challenge est une fonction directe  du challenge et une phrase de
      passe, ainsi la r�ponse  peut facilement �tre calcul�e <quote>en
      temps  voulu</quote> par  n'importe qui  poss�dant la  phrase de
      passe ce qui �limine le besoin  d'une liste de mots de passe. De
      plus, puisque  &man.opie.4; ne r�utilise  jamais un mot  de passe
      qui a  re�u une  r�ponse correcte, il  n'est pas  vuln�rable aux
      attaques bas�e sur le rejouage.</para>
    </section>

    <section id="pam-modules-opieaccess">
      <title id="pam-modules-opieaccess.title">&man.pam.opieaccess.8;</title>

      <para>Le  module  &man.pam.opieaccess.8;  est  un  compagnon  du
      module   &man.pam.opie.8;.  Son   but  est   de   renforcer  les
      restrictions  codifi�es  dans  &man.opieaccess.5;, il  r�gule  les
      conditions  sous  lesquelles   un  utilisateur  qui  normalement
      devrait s'authentifier  par &man.opie.4; est  amen� &agrave; utiliser
      d'autres m�thodes. Ceci  est g�n�ralement utilis� pour interdire
      l'authentification par  mot de passe depuis des  h�tes non digne
      de confiance.</para>

      <para>Pour     �tre    r�ellement     effectif,     le    module
      &man.pam.opieaccess.8;      doit      �tre      list�      comme
      <literal>requisite</literal>  imm�diatement   apr�s  une  entr�e
      <literal>sufficient</literal>  pour  &man.pam.opie.8; et  avant
      tout       autre        module,       dans       la       cha�ne
      <literal>auth</literal>.</para>

    </section>

    <section id="pam-modules-passwdqc">
      <title id="pam-modules-passwdqc.title">&man.pam.passwdqc.8;</title>

      <para>Le module  &man.pam.passwdqc.8; </para>
    </section>

    <section id="pam-modules-permit">
      <title id="pam-modules-permit.title">&man.pam.permit.8;</title>

      <para>Le   module  &man.pam.permit.8;   est  l'un   des  modules
      disponibles  les  plus simples;  il  r�pond  &agrave; n'importe  quelle
      requ�te  par <literal>PAM_SUCCESS</literal>.  Il est  utile pour
      les  services  o�   une  ou  plusieurs  cha�nes  auraient
      autrement �t� vides.</para>
    </section>

    <section id="pam-modules-radius">
      <title id="pam-modules-radius.title">&man.pam.radius.8;</title>

      <para>Le module &man.pam.radius.8; </para>
    </section>

    <section id="pam-modules-rhosts">
      <title id="pam-modules-rhosts.title">&man.pam.rhosts.8;</title>

      <para>Le module &man.pam.rhosts.8; </para>
    </section>

    <section id="pam-modules-rootok">
      <title id="pam-modules-rootok.title">&man.pam.rootok.8;</title>

      <para>Le  module  &man.pam.rootok.8; retourne  un  succ�s si  et
      seulement  si  l'identifiant  d'utilisateur  r�el  du  processus
      appelant est 0. Ceci est utile pour les services non bas�s sur
      le  r�seau  tel   que  &man.su.1;  ou  &man.passwd.1;  o�
      l'utilisateur   <literal>root</literal>  doit  avoir   un  acc�s
      automatique.</para>
    </section>

    <section id="pam-modules-securetty">
      <title id="pam-modules-securetty.title">&man.pam.securetty.8;</title>

      <para>Le module &man.pam.securetty.8; </para>
    </section>

    <section id="pam-modules-self">
      <title id="pam-modules-self.title">&man.pam.self.8;</title>

      <para>Le  module  &man.pam.self.8;  retourne  un  succ�s  si  et
      seulement si  le nom  du demandeur correspond  au nom  du compte
      d�sir�. Il est  utile pour les services non  bas�s sur le r�seau
      tel que  &man.su.1; o� l'identit� du  demandeur peut �tre
      v�rifi�e facilement .</para>
    </section>

    <section id="pam-modules-ssh">
      <title id="pam-modules-ssh.title">&man.pam.ssh.8;</title>

      <para>Le module  &man.pam.ssh.8; </para>
    </section>

    <section id="pam-modules-tacplus">
      <title id="pam-modules-tacplus.title">&man.pam.tacplus.8;</title>

      <para>Le module  &man.pam.tacplus.8; </para>
    </section>

    <section id="pam-modules-unix">
      <title id="pam-modules-unix.title">&man.pam.unix.8;</title>

      <para>Le  module &man.pam.unix.8;  impl�mente l'authentification
      Unix   traditionnelle    par   mot   de    passe,   il   utilise
      &man.getpwnam.3; pour obtenir le mot  de passe du compte vis� et
      le compare avec celui fournit par le demandeur. Il fournit aussi
      des services  de gestion de  compte (d�sactivation du  compte et
      date d'expiration) ainsi que  des services pour le changement de
      mot de passe. Il s'agit certainement du module le plus utile car
      la plupart  des administrateurs d�sirent  garder le comportement
      historique pour quelques services.</para>
    </section>
  </section>

  <section id="pam-appl-prog">
    <title id="pam-appl-prog.title">Programmation d'applications PAM </title>

    <para><!--XXX-->Cette section n'a pas encore �t� �crite.</para>

    <!--

      Note that while the original PAM paper includes a sample PAM
      application that calls pam_open_session() before pam_setcred(),
      the Linux-PAM documentation states that pam_setcred() must be
      called first, which makes more sense.

      Also note that the example in the paper calls setgid(),
      initgroups() and setuid() itself rather than rely on
      pam_setcred() to do it.

      -->

  </section>

  <section id="pam-module-prog">
    <title id="pam-module-prog.title">Programmation de modules PAM</title>

    <para><!--XXX-->Cette section n'a pas �t� encore �crite.</para>
  </section>

  <appendix id="pam-sample-appl">
    <title id="pam-sample-appl.title">Exemples d'application PAM </title>

    <para>Ce qui suit est une impl�mentation minimale de &man.su.1; en
    utilisant PAM.  Notez qu'elle utilise la  fonction de conversation
    &man.openpam.ttyconv.3;  sp�cifique &agrave;  OpenPAM qui  est prototyp�e
    dans                                                      <filename
    class="headerfile">security/openpam.h</filename>.  Si vous d�sirez
    construire  cette   application  sur  un   syst�me  utilisant  une
    biblioth�que  PAM  diff�rente  vous  devrez fournir  votre  propre
    fonction de conversation. Une fonction de conversation robuste est
    �tonnamment   difficile  &agrave;   impl�menter;  celle   pr�sent�e  dans
    l'appendice<link                          linkend="pam-sample-conv"
    endterm="pam-sample-conv.title"></link>   est  un  bon   point  de
    d�part, mais  ne devrait pas  �tre utilis�e dans  des applications
    r�elles.</para>

<programlisting>
<xi:include href="su.c" parse="text"/>
</programlisting>
  </appendix>

  <appendix id="pam-sample-module">
    <title id="pam-sample-module.title">Exemple d'un module PAM</title>

    <para>Ce   qui   suit   est   une   impl�mentation   minimale   de
    &man.pam.unix.8;      offrant     uniquement      les     services
    d'authentification.  Elle  devrait  compiler  et tourner  avec  la
    plupart  des impl�mentations  PAM, mais  tire parti  des extensions
    d'OpenPAM  si  elles  sont  disponibles :  notez  l'utilisation  de
    &man.pam.get.authtok.3;  qui simplifie  �norm�ment  l'affichage de
    l'invite pour demander le mot de passe &agrave; l'utilisateur.</para>


<programlisting>
<xi:include href="pam_unix.c" parse="text"/>
</programlisting>
  </appendix>

  <appendix id="pam-sample-conv">
    <title id="pam-sample-conv.title">Exemple d'une fonction de conversation PAM</title>

    <para>La  fonction  de conversation  pr�sent�e  ci-dessous est  une
    version      grandement     simplifi�e     de      la     fonction
    &man.openpam.ttyconv.3; d'OpenPAM. Elle est pleinement fonctionnelle
    et devrait  donner au  lecteur une bonne  id�e de comment  doit se
    comporter une fonction de  conversation, mais elle est trop simple
    pour une utilisation r�elle.  M�me si vous n'utilisez pas OpenPAM,
    N'h�sitez pas &agrave;  t�l�charger le  code  source et  d'adapter
    &man.openpam.ttyconv.3;  &agrave; vos besoins,  nous pensons  qu'elle est
    raisonnablement  aussi  robuste  qu'une fonction  de  conversation
    orient�e tty peut l'�tre.</para>

<programlisting>
<xi:include href="converse.c" parse="text"/>
</programlisting>
  </appendix>

  <bibliography id="pam-further">
    <title id="pam-further.title">Lectures compl�mentaires</title>

    <abstract>
      <para>Ceci  est une  liste  de documents  concernant  PAM et  les
      domaines  gravitant autours.   Elle    n'a   pas   la   pr�tention   d'�tre
      compl�te.</para>
    </abstract>

    <bibliodiv>
      <title>Publications</title>

      <biblioentry>
	<title><ulink
	  url="http://www.sun.com/software/solaris/pam/pam.external.pdf">
	  Rendre les services de connexion ind�pendants des technologies d'authentification
	  </ulink></title>
	<authorgroup>
	  <author>
	    <surname>Samar</surname>
	    <firstname>Vipin</firstname>
	  </author>
	  <author>
	    <surname>Lai</surname>
	    <firstname>Charlie</firstname>
	  </author>
	</authorgroup>
	<orgname>Sun Microsystems</orgname>
      </biblioentry>

      <biblioentry>
	<title><ulink
	  url="http://www.opengroup.org/pubs/catalog/p702.htm">X/Open
	  Single Sign-on Preliminary Specification</ulink></title>
	<orgname>The Open Group</orgname>
	<isbn>1-85912-144-6</isbn>
	<pubdate>June 1997</pubdate>
      </biblioentry>

      <biblioentry>
	<title><ulink
	  url="http://www.kernel.org/pub/linux/libs/pam/pre/doc/current-draft.txt">
	  Pluggable Authentication Modules</ulink></title>
	<author>
	  <surname>Morgan</surname>
	  <firstname>Andrew</firstname>
	  <othername role="mi">G.</othername>
	</author>
	<pubdate>October 6, 1999</pubdate>
      </biblioentry>
    </bibliodiv>

    <bibliodiv>
      <title>Guides utilisateur</title>

      <biblioentry>
	<title><ulink
	  url="http://www.sun.com/software/solaris/pam/pam.admin.pdf">Administration de PAM
	 </ulink></title>
	<orgname>Sun Microsystems</orgname>
      </biblioentry>
    </bibliodiv>

    <bibliodiv>
      <title>Page internet li�es</title>

      <biblioentry>
	<title><ulink url="http://openpam.sourceforge.net/">La page d'OpenPAM</ulink></title>
	<author>
	  <surname>Sm&oslash;rgrav</surname>
	  <firstname>Dag-Erling</firstname>
	</author>
	<orgname>ThinkSec AS</orgname>
      </biblioentry>

      <biblioentry>
	<title><ulink url="http://www.kernel.org/pub/linux/libs/pam/">La page de Linux-PAM</ulink></title>
	<author>
	  <surname>Morgan</surname>
	  <firstname>Andrew</firstname>
	  <othername role="mi">G.</othername>
	</author>
      </biblioentry>

      <biblioentry>
	<title><ulink url="http://wwws.sun.com/software/solaris/pam/">La page de Solaris PAM</ulink></title>
	<orgname>Sun Microsystems</orgname>
      </biblioentry>
    </bibliodiv>
  </bibliography>
</article>