<HTML> <HEAD> <TITLE>Compiler les programmes.</TITLE> </HEAD> <BODY> <H1>4. <A NAME="s4"></A>Compiler les programmes.</H1> <P> <A HREF="Shadow-Password-HOWTO.html#toc4">Contenu de cette section</A></P> <H2>4.1 <A NAME="ss4.1"></A> Extraire l'archive</H2> <P>La première étape après avoir récupéré les paquetage est l'extraction de l'archive. C'est une archive de format tar et compressée avec gzip. Donc tout d'abord déplacez la vers <CODE>/usr/src</CODE>, et tapez: <BLOCKQUOTE><CODE> <PRE> tar -xzvf shadow-current.tar.gz </PRE> </CODE></BLOCKQUOTE> </P> <P>Ceci extraira l'ensemble dans le répertoire: <CODE>/usr/src/shadow-AAMMJJ</CODE></P> <P></P> <H2>4.2 <A NAME="ss4.2"></A> Configurer le fichier config.h</H2> <P>La première chose à faire est d'écraser les fichiers <CODE>Makefile</CODE> et <CODE>config.h</CODE>: <BLOCKQUOTE><CODE> <PRE> cd /usr/src/shadow-AAMMJJ cp Makefile.linux Makefile cp config.h.linux config.h </PRE> </CODE></BLOCKQUOTE> </P> <P>Jetez un coup d'oeil au fichier <CODE>config.h</CODE>. Ce fichier contient les définitions pour quelques options de configuration. Si vous utilisez le paquetage shadow <EM>recommandé</EM>, je vous recommande de dévalider le support de groupes <CODE>shadow</CODE>; pour la première fois.</P> <P>Par défaut les mots de passe pour les groupes caché sont validés. Pour les dévalider, éditez le fichier <CODE>config.h</CODE>, et remplacez <CODE>#define SHADOWGRP</CODE> en <CODE>#undef SHADOWGRP</CODE>. Je recommande de commencer sans les groupes cachés, mais si vous souhaitez réellement des mots de passe pour les groupes ainsi que des administrateurs de groupes vous pourrez ultérieurement valider l'option et recompiler le tout. Si vous la laissez validée, vous devez créer le fichier <CODE>/etc/gshadow</CODE>.</P> <P>Valider l'option gérant les longs mots de passe n'est pas recommandée.</P> <P><EM>Ne PAS changer</EM> le champ: <CODE>#undef AUTOSHADOW</CODE></P> <P>L'option <CODE>AUTOSHADOW</CODE> était prévue pour que les programmes non adaptés aux mots de passe shadow puissent toujours fonctionner. Cela paraît intéressant en théorie mais ne fonctionne pas correctement. Si vous validez cette option, et qu'un programme focntionne avec les droits de <CODE>root</CODE>, il se peut qu'il utilise la fonction <CODE>getpwnam()</CODE> avec les droits <CODE>root</CODE>, et, plus tard, qu'il écrive la donnée modifiée dans le fichier <CODE>/etc/passwd</CODE>. Il ne possèdera donc plus les propriétés <EM>shadow passwords</EM>. <EM>chfn</EM> et <EM>chsh</EM> sont de tels programmes (Vous pouvez passer outre en échangeant l'uid réel et effectif avant d'appeler <CODE>getpwnam()</CODE> car <CODE>root</CODE> peut utiliser <EM>chfn</EM> et <EM>chsh</EM> aussi).</P> <P>Le même avertissement est aussi valable si vous compilez la <CODE>libc</CODE>. Il y a une option <CODE>SHADOW_COMPAT</CODE> qui fait la même chose. Elle ne <EM>doit PAS être</EM> utilisée! Si vous commencez à remettre des mots de passe encodés dans le fichier <CODE>/etc/passwd</CODE>, cela pose un problème.</P> <P>Si vous utilisez une <CODE>libc</CODE> de versions inférieure à 4.6.27, vous devriez faire un ou deux changements dans le fichier <CODE>config.h</CODE> ainsi que dans le <CODE>Makefile</CODE>. En ce qui concerne le fichier <CODE>config.h</CODE>, éditez le et remplacez: <BLOCKQUOTE><CODE> <PRE> #define HAVE_BASENAME </PRE> </CODE></BLOCKQUOTE> par <BLOCKQUOTE><CODE> <PRE> #undef HAVE_BASENAME </PRE> </CODE></BLOCKQUOTE> Dans le fichier <CODE>Makefile</CODE>, remplacez: <BLOCKQUOTE><CODE> <PRE> SOBJS = smain.o env.o entry.o susetup.o shell.o \ sub.o mail.o motd.o sulog.o age.o tz.o hushed.o SSRCS = smain.c enc.c entry.c setup.c shell.c \ pwent.c sub.c mail.c motd.c sulog.c shadow.c age.c pwpack.c rad64.c \ tz.c hushed.c </PRE> </CODE></BLOCKQUOTE> par <BLOCKQUOTE><CODE> <PRE> SOBJS = smain.o env.o entry.o susetup.o shell.o \ sub.o mail.o motd.o sulog.o age.o tz.o hushed.o basename.o SSRCS = smain.c enc.c entry.c setup.c shell.c \ pwent.c sub.c mail.c motd.c sulog.c shadow.c age.c pwpack.c rad64.c \ tz.c hushed.c basename.c </PRE> </CODE></BLOCKQUOTE> Ce changement ajoute le code contenu dans <CODE>basename.c</CODE> qui est contenu dans la <CODE>libc 4.6.27</CODE> ou plus.</P> <P></P> <H2>4.3 <A NAME="ss4.3"></A> Faire une copie de sauvegarde de vos programmes originaux.</H2> <P>Faites une copie de sauvegarde des fichiers qui vont être remplacés par le kit shadow. Sur un système Slackware 3.0: <UL> <LI>/bin/su</LI> <LI>/bin/login</LI> <LI>/usr/bin/passwd</LI> <LI>/usr/bin/newgrp</LI> <LI>/usr/bin/chfn</LI> <LI>/usr/bin/chsh</LI> <LI>/bin/id</LI> </UL> </P> <P>Le paquetage béta possède une cible <EM>save</EM> dans le <CODE>Makefile</CODE>, mais elle est commentée car les différentes distributions placent ces programmes à différents endroits.</P> <P>Vous devriez aussi faire une copie de sauvegarde du fichier <CODE>/etc/passwd</CODE>, mais faites attention à le nommer différemment de façon à ne pas écraser l'original.</P> <P></P> <H2>4.4 <A NAME="ss4.4"></A> Lancer make</H2> <P><EM>Vous avez besoin d'être <SF>root</SF> pour la plupart de l'installation</EM></P> <P>Lancez make pour compiler les exécutables du paquetage. <BLOCKQUOTE><CODE> <PRE> make all </PRE> </CODE></BLOCKQUOTE> Vous pourrez voir les avertissements suivants: <CODE>rcsid defined but not used</CODE>. Ce n'est rien, il survient seulement parce que l'auteur utilise un paquetage de contrôle de version.</P> <P></P> <HR> <P> Chapitre <A HREF="Shadow-Password-HOWTO-5.html">suivant</A>, Chapitre <A HREF="Shadow-Password-HOWTO-3.html">Précédent</A> <P> Table des matières de <A HREF="Shadow-Password-HOWTO.html#toc4">ce chapitre</A>, <A HREF="Shadow-Password-HOWTO.html#toc">Table des matières</A> générale</P> <P> <A HREF="Shadow-Password-HOWTO.html">Début</A> du document, <A HREF="#0"> Début de ce chapitre</A></P> </BODY> </HTML>