4. Compiler les programmes.

Contenu de cette section

4.1 Extraire l'archive

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 /usr/src, et tapez:

tar -xzvf shadow-current.tar.gz

Ceci extraira l'ensemble dans le répertoire: /usr/src/shadow-AAMMJJ

4.2 Configurer le fichier config.h

La première chose à faire est d'écraser les fichiers Makefile et config.h:

cd /usr/src/shadow-AAMMJJ
cp Makefile.linux Makefile
cp config.h.linux config.h

Jetez un coup d'oeil au fichier config.h. Ce fichier contient les définitions pour quelques options de configuration. Si vous utilisez le paquetage shadow recommandé, je vous recommande de dévalider le support de groupes shadow; pour la première fois.

Par défaut les mots de passe pour les groupes caché sont validés. Pour les dévalider, éditez le fichier config.h, et remplacez #define SHADOWGRP en #undef SHADOWGRP. 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 /etc/gshadow.

Valider l'option gérant les longs mots de passe n'est pas recommandée.

Ne PAS changer le champ: #undef AUTOSHADOW

L'option AUTOSHADOW é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 root, il se peut qu'il utilise la fonction getpwnam() avec les droits root, et, plus tard, qu'il écrive la donnée modifiée dans le fichier /etc/passwd. Il ne possèdera donc plus les propriétés shadow passwords. chfn et chsh sont de tels programmes (Vous pouvez passer outre en échangeant l'uid réel et effectif avant d'appeler getpwnam() car root peut utiliser chfn et chsh aussi).

Le même avertissement est aussi valable si vous compilez la libc. Il y a une option SHADOW_COMPAT qui fait la même chose. Elle ne doit PAS être utilisée! Si vous commencez à remettre des mots de passe encodés dans le fichier /etc/passwd, cela pose un problème.

Si vous utilisez une libc de versions inférieure à 4.6.27, vous devriez faire un ou deux changements dans le fichier config.h ainsi que dans le Makefile. En ce qui concerne le fichier config.h, éditez le et remplacez:

#define HAVE_BASENAME
par
#undef HAVE_BASENAME
Dans le fichier Makefile, remplacez:
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
par
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
Ce changement ajoute le code contenu dans basename.c qui est contenu dans la libc 4.6.27 ou plus.

4.3 Faire une copie de sauvegarde de vos programmes originaux.

Faites une copie de sauvegarde des fichiers qui vont être remplacés par le kit shadow. Sur un système Slackware 3.0:

Le paquetage béta possède une cible save dans le Makefile, mais elle est commentée car les différentes distributions placent ces programmes à différents endroits.

Vous devriez aussi faire une copie de sauvegarde du fichier /etc/passwd, mais faites attention à le nommer différemment de façon à ne pas écraser l'original.

4.4 Lancer make

Vous avez besoin d'être root pour la plupart de l'installation

Lancez make pour compiler les exécutables du paquetage.

make all
Vous pourrez voir les avertissements suivants: rcsid defined but not used. Ce n'est rien, il survient seulement parce que l'auteur utilise un paquetage de contrôle de version.


Chapitre suivant, Chapitre Précédent

Table des matières de ce chapitre, Table des matières générale

Début du document, Début de ce chapitre