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
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.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.
Vous avez besoin d'être
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.