|
このページは大阪弁化フィルタによって翻訳生成されたんですわ。 |
Ceci est le Shadow password HOWTO pour linux. Ce document d馗rit comment configurer votre syst鑪e linux pour utiliser le syst鑪e des mots de passe cach駸. Quelques exemples d'utilisation concernant certaines caract駻istiques de la suite Shadow (Note: ce terme n'est volontairement pas traduit afin de ne pas alourdir la compr馼ension du document) sont aussi inclus.
Lorsque vous installerez le paquetage des mots de passe cach駸 de faire des copies de sauvegarde de programmes indiqu駸. Je vous recommande aussi de lire et de comprendre toutes les instructions avant de commencer.
Tout au long du document vous constaterez tr鑚 certainement que je n'ai pas traduit le terme "Shadow Password". La raison est simple: le traduction de ce terme n'est pas 駘馮ante. Je pense qu'une simple explication (voir l'introduction) de celui-ci vaut beaucoup mieux qu'une "fran輅sation" douteuse.
Ajouts:
Ajout de la sous-section Pourquoi vous ne devriez pas
installer le syst鑪e Shadow Password/pub/Linux/docs/HOWTO/SHADOW-HOWTOou:
/pub/Linux/docs/HOWTO/other-formats/SHADOW-HOWTO{-html.tar,ps,dvi}.gz
2. Pourquoi utiliser le syst鑪e de mots de passe Shadow?
La plupart des distributions Linux actuelles ne contiennent pas le support des mots de passe shadow (La Slackware 2.3, Slackware 3.0 et d'autres distributions assez populaires...). Une des raisons est que le (comme un CD-ROM par exemple) et est responsable des droits pour cela.
Le mainteneur actuel de la Suite Shadow, Marek Michalkiewicz <marekm@il7linuxb.ists.pwr.wroc.pl> a re輹 les sources de l'auteur originel sour un copyright style BSD permettant la redistribution. Maintenant que le probl鑪e de la distribution est r駸olu, il est probable que les prochaines distributions contiendront les shadow password par d馭aut. En
Mais le pirate de syst鑪e sait tout cela, et va simplement encoder un dictionnaire de mots de passe usuels en utilisant les 4096 possibilit駸 de sel. Il va alors comparer les mots de passe encod駸 dans un disque dur de 4Go. Le pirate a juste besoin de les trier et de les comparer.
M麥e sans avoir beaucoup d'espace disque, des utilitaires comme crack(1) peuvent en g駭駻al casser pas mal de mots de passe sur un syst鑪e contenant groupe (GID) qui sont utilis駸 par de nombreux programmes. C'est pour cela que le fichier passwd doit 黎re lisible par tout le monde. Si vous changiez les permissions de
/etc/passwdde telle sorte que plus personne ne puisse le lire, la premi鑽e chose que vous pourriez constater, c'est que la commandels -laffiche d駸ormais le user ID au lieu du nom !Le kit Shadow r駸out ce probl鑪e en d駱la軋nt les mots de passe encod駸 vers un autre fichier (en g駭駻al
/etc/shadow). Il n'y a que le root qui a les permissions de lecture et d'馗riture sur le fichier shadow. Quelques programmes (comme xlock) n馗essitent que le groupe shadow puisse lire et 馗rire dans le fichier/etc/shadow. Il est pr馭駻able que les programmes qui ont juste besoin de lire et v駻ifier le mot de passe soient lanc駸 SGID shadow plutôt que SGID root.En d駱la軋nt les mots de passe vers le fichier
/etc/shadow, nous
/etc/login.defs),Il y a quelques circonstances et quelques configurations qui font qu'installer la Suite Shadow n'est pas une bonne id馥:
Sur un syst鑪e ne poss馘ant pas la suite Shadow, voici le format du
fichier /etc/passwd
username:passwd:UID:GID:full_name:directory:shell
En d騁ail:
directoryR駱ertoire personnel de l'utilisateur
shellShell par d馭aut de l'utilisateur
username:Npge08pfz4wuk:503:100:Full Name:/home/username:/bin/sh
Le fichier /etc/shadow contient les informations suivantes:
username:passwd:last:may:must:warn:expire:disable:reserved
En d騁ail:
expireNombre de jours entre l'expiration du mot de passe et la fermeture du compte.
disableDate de la fermeture du compte (en nombre de
extrait de la page de manuel de crypt(3)
"crypt est la fonction de cryptage du mot de passe. Elle est bas馥
Si vous envisagez d'utiliser crypt(3) pour un projet de cryptographie,
ne le faites pas, procurez-vous plut? un bon livre sur le cryptage
de donn馥s et une des nombreuses biblioth鑷ues DES."
Si vous recherchez un bon livre sur le cryptage de donn馥s, je vous recommande:
"Applied Cryptography: Protocols, Algorithms, and Source Code in C"
par Bruce Schneier <schneir@chinet.com>
ISBN: 0-471-59756-2
N'UTILISEZ PAS LES PAQUETAGES DECRITS DANS CETTE SECTION, ILS CONTIENNENT DES PROBLEMES DE SECURITE
Florian La Roche (flla@stud.uni-sb.de) et contient quelques am駘iorations.Joseph R.M. Zbiciak
Il y a des trous de s馗urité dans les versions
3.3.1, 3.3.1-2 et shadow-mk qui sont d? au programme
login. Le bogue login implique de ne pas v駻ifier la
longueur du nom de login. Cela entra?e un surpassement de la
Les miroirs suivants sont aussi disponibles :
Vous devez utiliser la version actuelle disponible.
La paquetage shadow contient les programmes de remplacement pour:
su, login, passwd, newgrp, chfn, chsh, et id
Mais il contient aussi des nouveaux programmes:
chage, newusers, dpasswd, gpasswd, useradd, userdel, usermod,
groupadd, groupdel, groupmod, groups, pwck, grpck, lastlog, pwconv,
et pwunconv
De plus, la biblioth鑷ue: libshadow.a est incluse pour permettre de
compiler les programmes n馗essitant un acc鑚 en lecture/馗ritures aux
mots de passe.
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.
cach駸, mais si vous souhaitez r馥llement des mots de
passe pour les groupes ainsi que des administrateurs de groupes vous
pourrez ult駻ieurement valider l'option et recompiler le
tout. Si vous la laissez valid馥, vous devez cr馥r le
fichier /etc/gshadow.
Valider l'option g駻ant les longs mots de passe n'est pas recommand馥.
Ne PAS changer le champ: #undef AUTOSHADOW
L'option AUTOSHADOW 騁ait pr騅ue pour que les programmes non
adapt駸 aux mots de passe shadow puissent toujours
fonctionner. Cela para? int駻essant en th駮rie
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 馗rive la donn馥
modifi馥 dans le fichier /etc/passwd. Il ne
poss鐡era donc plus les propri騁駸 shadow
passwords. chfn et chsh sont de tels programmes (Vous
pouvez passer outre en 馗hangeant l'uid r馥l
et effectif avant d'appeler getpwnam() car root peut
utiliser chfn et chsh aussi).
Le m麥e avertissement est aussi valable si vous compilez la
libc. Il y a une option SHADOW_COMPAT qui fait la m麥e
chose. Elle ne doit PAS 黎re utilis馥! Si vous
commencez à remettre des mots de passe encod駸 dans le
fichier /etc/passwd, cela pose un probl鑪e.
#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 黎re remplac駸 par le kit shadow. Sur un syst鑪e Slackware 3.0:
Vous avez besoin d'黎re
Lancez make pour compiler les ex馗utables du paquetage.
make all
l'affaire. Dans le cas contraire, vous devrez en g駭駻er: jetez un coup
d'oeil au
Bootdisk-HOWTO (version francaise:
Si vous utilisez la distribution Slackware 3.0, alors les pages de manuel que vous devez supprimer sont:
Regardez dans les sous r駱ertoires /var/man/cat[1-9]
Il est possible qu'il y ait des pages de manuel du m麥e nom qui devront
黎re effac馥s.
C'est d駸ormais le moment de taper: (faites ceci en tant que root).
make install
Ceci installera les nouveaux programmes, remplacera les anciens, d馭inira les permissions de fichiers, et installera les pages de manuel.
Make install prend en compte l'installation des fichiers include pour les
mettre au bon endroit dans /usr/include/shadow.
/etc/passwd et /etc/shadow.
Faites aussi une copie de votre fichier /etc/passwd
original, mais faites attention que seul le
cd /etc
cp passwd ~passwd
chmod 600 ~passwd
mv npasswd passwd
mv nshadow shadow
V駻ifiez aussi que les permissions et les propri騁aires des fichiers soient
Les distributions Slackware (et probablement d'autres) contiennent
un programme interactif /bin/adduser permettant d'ajouter
facilement des utilisateurs. Une version Shadow de ce programme peut
黎re trouv馥 sur:
/etc/passwd et /etc/shadow, ce que ne fait pas
adduser
Lisez la section sec-fonction pour de plus amples informations.
L'installation est ais馥:
tar -xzvf adduser.shadow-1.4.tar.gz
cd adduser.shadow.1.4
make adduser
chmod 700 adduser
make install
La plupart des distributions Linux incluent le serveur wu_ftpd. Si votre
compilation installer le r駸ultat:
cd /usr/src/wu-ftpd-2.4-fixed
/usr/src/wu-ftpd-2.4-fixed/build lnx
cp /usr/sbin/wu-ftpd /usr/src/wu-ftpd.old
cp ./bin/ftpd /usr/sbin/wu-ftpd
tar -xzvf wu-ftpd-2.4.2-beta-10.tar.gz
cd wu-ftpd-beta-10
cd ./src/config
馘itez alors le fichier config.lnx et remplacez:
#undef SHADOW_PASSWORD
par
#define SHADOW_PASSWORD
Allez alors dans le r駱ertoire des Makefiles
cd ../Makefiles
et 馘itez le fichier Makefile.lnx. Modifiez alors:
cp /usr/sbin/wu-ftpd /usr/sbin/wu-ftpd.old
cp ./bin/ftpd /usr/sbin/wu-ftpd
Notez que vous devrez contr?er le fichier
/etc/inetd.conf afin d'黎re s? que votre
serveur wu-ftpd soit r馥llement pr駸ent. Il a
du support NIS - le fichier est sur Sunsite:
ftpd-shadow-nis.tgz
xlock, je vous recommande celle-ci.
xlockmore-3.7.tgz disponible sur Sunsite:
ftp://sunsite.unc.edu/pub/Linux/X11/xutils/screen-savers/ xlockmore-3.7.tgz
Editez le fichier: /usr/X11R6/lib/X11/config/linux.cf, et changez
la ligne:
#define HasShadowPasswd NO
en
#define HasShadowPasswd YES
cp xlock /usr/X11R6/bin/
cp XLock /var/X11R6/lib/app-defaults/
chown root.shadow /usr/X11R6/bin/xlock
chmod 2755 /usr/X11R6/bin/xlock
chown root.shadow /etc/shadow
chmod 640 /etc/shadow
Votre xlock fonctionnera d駸ormais correctement.
xdm est un programme qui pr駸ente un 馗ran de
login pour W-Window. Quelques syt鑪es
d駑arrent xdm lorsqu'il se situe dans un niveau
xdm.tar.gz est disponible à:
<ftp://sunsite.unc.edu/pub/Linux/X11/xutils/xdm.tar.gz>;
R馗up駻ez xdm.tar.gz et placez-le dans le
r駱ertoire /usr/src, et d馗ompressez-le:
tar -xzvf xdm.tar.gz
馘itez le fichier /usr/X11R6/lib/X11/config/linux.cf,
et changez la ligne:
#define HasShadowPassword NO
en
#define HasShadowPassword YES
Vous pouvez alors compiler les ex馗utables;:
cd /usr/src/xdm
xmkmf
make depend
make
Copier alors l'ex馗utable:
cd sudo-1.2-shadow
make all
make install
imapd est un serveur e-mail tout comme pop3d. imapd est compris dans
commande, soit dans le fichier de configuration). Si l'option login est
utilis馥, alors pppd utilisera pour le PAP le fichier /etc/passwd
pour le nom d'utilisateur et le mot de passe. Bien sur 軋 ne fonctionnera plus
sont orient馥s ``ligne de commande'', pour ajouter, modifier et
supprimer des utilisateurs. Vous avez aussi sûrement dû
installer le programme adduser.
la commande useradd peut 黎re utilis馥 pour
Pour effectuer ces changements, j'ai dû utiliser:
useradd -D -g100 -e60 -f0 -s/bin/bash
Maintenant, lancer useradd -D donne:
GROUP=100 HOME=/home INACTIVE=0 EXPIRE=60 SHELL=/bin/bash SKEL=/etc/skel
fred, en utilisant les valeurs par
d馭aut, vous devez utiliser ce qui suit:
useradd -m -c "Fred Flintstone" fred
Cela cr馥ra une entr馥 dans le fichier
/etc/passwd:
fred:*:505:100:Fred Flintstone:/home/fred:/bin/bash
Ainsi que cette entr馥 dans le fichier /etc/shadow:
fred:!:0:0:60:0:0:0:0
Le compte de fred est maintenant cr鳬, mais
fred ne peut pas se loger tant que nous ne
d騅駻ouillons pas le compte. Nous effectuons cela en
changeant le mot de passe.
passwd fred
Changing password for fred Enter the new password (minimum of 5 characters) Please use a combination of upper and lower case letters and numbers. New Password: ******* Re-enter new password: *******
Maintenant /etc/shadow contient:
et des autres programmes provenant de la Suite Shadow, est qu'ils
effectuent les changements dans les fichiers /etc/passwd et
/etc/shadow automatiquement. Donc si vous ajoutez un
utilisateur, et qu'un autre utilisateur change son mot de passe au
m麥e moment, les deux op駻ations sont effectu馥s
correctement.
Vous devriez plut? utiliser les commandes fournies
qu'馘iter directement les fichier /etc/passwd et
/etc/shadow. Si vous 馘itez le fichier
/etc/shadow et qu'un utilisateur change son mot de passe au
m麥e moment, ce que vous sauverez, sera bien dans le fichier
mais, le nouveau mot de passe de l'utilisateur sera perdu.
Voici un petit script int駻actif permettant d'ajouter des utilisateurs
en utilisant les commandes useradd et passwd:
#!/bin/bash
#
# /sbin/newuser - A script to add users to the system using the Shadow
# Suite's useradd and passwd commands.
#
# Written my Mike Jackson <mhjack@tscnet.com> as an example for the Linux
# Shadow Password Howto. Permission to use and modify is expressly granted.
#
# This could be modified to show the defaults and allow modification similar
# to the Slackware Adduser program. It could also be modified to disallow
# stupid entries. (i.e. better error checking).
#
##
# Defaults for the useradd command
##
GROUP=100 # Default Group
HOME=/home # Home directory location (/home/username)
SKEL=/etc/skel # Skeleton Directory
INACTIVE=0 # Days after password expires to disable account (0=never)
EXPIRE=60 # Days that a passwords lasts
SHELL=/bin/bash # Default Shell (full path)
##
# Defaults for the passwd command
##
PASSMIN=0 # Days between password changes
PASSWARN=14 # Days before password expires that a warning is given
##
# Ensure that root is running the script.
##
WHOAMI=`/usr/bin/whoami`
if [ $WHOAMI != "root" ]; then
echo "You must be root to add news users!"
exit 1
fi
##
# Ask for username and fullname.
##
echo ""
echo -n "Username: "
read USERNAME
echo -n "Full name: "
read FULLNAME
#
echo "Adding user: $USERNAME."
#
# Note that the "" around $FULLNAME is required because this field is
# almost always going to contain at least on space, and without the
# the useradd command would think that you we moving on to the next
# parameter when it reached the SPACE character.
#
/usr/sbin/useradd -c"$FULLNAME" -d$HOME/$USERNAME -e$EXPIRE \
-f$INACTIVE -g$GROUP -m -k$SKEL -s$SHELL $USERNAME
##
# Set password defaults
##
/bin/passwd -n $PASSMIN -w $PASSWARN $USERNAME >/dev/null 2>&1
##
# Let the passwd command actually ask for password (twice)
##
/bin/passwd $USERNAME
##
# Show what was done.
##
echo ""
echo "Entry from /etc/passwd:"
echo -n " "
grep "$USERNAME:" /etc/passwd
echo "Entry from /etc/shadow:"
echo -n " "
grep "$USERNAME:" /etc/shadow
echo "Summary output of the passwd command:"
echo -n " "
passwd -S $USERNAME
echo ""
Maintenant l'entr馥 concernant fred dans le fichier
/etc/passwd est devenue:
fred:*:505:100:Fred
Flintstone:/home/fred:/bin/tcsh
On change la date d'expiration du compte au 15/09/97:
usermod -e 09/15/97 fred
Maintenant l'entr馥 concernant fred dans le fichier
/etc/shadow est devenue:
fred:J0C.WDR1amIt6:9559:0:60:0:0:10119:0
Pour plus d'informations concernant usermod, consultez la
page de manuel en ligne.
userdel fait exactement ce que vous voulez, il efface le
compte d'un utilisateur. Utilisez simplement:
userdel -r username
L'option -r implique que tous les fichiers du
r駱ertoire d'accueil d'un utilisateur seront
effac駸. Les fichiers situ駸 en dehors du
r駱ertoire d'accueil devront 黎re cherch駸 et
effac駸 manuellement.
Si vous souhaitez simplement v駻ouiller un compte au lieu de
l'effacer, utilisez la commande passwd.
La commande passwd a pour but de changer les mots de passe. De
plus, elle est utilis馥 par l'utilisateur
Pour de plus amples informations concernant passwd, se
r馭駻er au manuel en ligne.
Le fichier /etc/login.defs est le fichier de configuration du
Des informations pr馗馘antes on peut en d馘uire que c'est un fichier important, vous devez 黎re sûr qu'il existe et que les valeurs sont celles que vous d駸irez pour votre syst鑪e.
Le fichier /etc/groups peut contenir des mots de passe
Si vous d馭inissez cette constante et que vous compilez, vous
devez cr馥r un fichier /etc/gshadow pour stocker les
mots de passe pour les groupes, ainsi que les informations concernant
l'administration du groupe.
Lorsque vous avez cr鳬 le fichier /etc/shadow,
GIDL'identificateur num駻ique du groupe,
memberLa liste des membres du groupe.
Le format du fichier /etc/gshadow est:
groupname:password:admin,admin,...:member,member,...
memberLa liste des membres du groupe.
La commande gpasswd est utilis馥 pour ajouter, retirer
des administrateurs et des membres d'un groupe. root ou un
pour gpasswd, tapez gpasswd sans param鑼res
pour obtenir la liste des options. C'est relativement facile de
comprendre comment tout marche un fois que vous avez compris le format
du fichier et les concepts.
7.5 Programmes de v駻ification de la structure
pwck
Le programme pwck est fourni pour v駻ifier la
coh駻ence des fichiers /etc/passwd et
/etc/shadow. Il v駻ifie chaque nom d'utilisateur
ainsi que les points suivants:
- Le nombre correct de champs,
- Nom unique,
- Nom et groupe valide,
- Groupe primaire valide,
- R駱ertoire d'accueil valide,
- Shell valide.
Il pr騅ient aussi lorsqu'un compte ne poss鐡e pas de mot
utiliser cron pour lancer une analyse r馮uli鑽e
et avoir un rapport sous forme de courrier.
grpck
grpck est le programme de v駻ification de la
coh駻ance des fichiers /etc/group et
Ceci pr駸ente un r馥l probl鑪e, il faut faire tr鑚 attention lors de la
cr饌tion de programmes SUID. Par exemple, il ne faut pas qu'un programme
SUID root puisse permettre un acc鑚 au shell.
SUID root, donc ajouter le support shadow ne le rendra pas plus vuln駻able.
8.1 Les fichiers d'en-t黎e
Les fichiers d'en-t黎e doivent 黎re stock駸 dans le r駱ertoire
/usr/include/shadow. Le fichier /usr/include/shadow.h,
La meilleure solution est d'utiliser des directives de compilation pour
compiler conditionnellement le code shadow (Il y aura un exemple par la
suite).
8.2 La biblioth鑷ue libshadow.a
programmes plus ou moins gros utilisent un fichier Makefile, qui en g駭駻al,
utilise une variable appel馥 LIBS=... que vous pourrez modifier.
8.3 La structure shadow
La biblioth鑷ue libshadow.a utilise une structure appel馥
spwd pour r馗up駻er les informations contenues dans le fichier
/etc/shadow. Voici la d馭inition de la structure spwd
provenant de /usr/include/shadow/shadow.h:
struct spwd
{
char *sp_namp; /* nom de login */
char *sp_pwdp; /* mot de passe encode */
sptime sp_lstchg; /* date de la derniere modification */
sptime sp_min; /* nombre de jours minimum entre les modifs */
sptime spmax; /* nombre de jours maximum entre les modifs*/
sptime sp_warn; /* nombre de jours de warning avant l'expiration
du mot de passe */
sptime sp_inact; /* nombre de jours d'utilisation du compte
apres l'expiration. */
sptime sp_expire; /* nombre de jours a partir du 01/01/70 jusqu'a
l'expiration du compte */
unsigned long sp_flag; /* reserve pour une utilisation future */
};
8.4 Les fonctions Shadow.
Le fichier shadow.h contient aussi la d馗laration des
fonctions contenues dans la biblioth鑷ue libshadow.a:
extern void setspent __P ((void));
extern void endspent __P ((void));
extern struct spwd *sgetspent __P ((__const char *__string));
extern struct spwd *fgetspent __P ((FILE *__fp));
extern struct spwd *getspent __P ((void));
extern struct spwd *getspnam __P ((__const char *__name));
#ifdef HAS_SHADOW
#include <shadow.h>
#include <shadow/pwauth.h>
#endif
Maintenant, il faut modifier le code actuel. Nous sommes toujours avec le
fichier auth.c.
La fonction auth.c avant les modifications:
/*
* login - Controle le nom d'utilisateur et le mot de passe par rapport
* a ceux stockes sur le systeme.
* Accepte la connection si l'utilisateur est OK.
*
* retourne:
* UPAP_AUTHNAK: Connection refusee.
* UPAP_AUTHACK: Connection Acceptee.
* Dans un cas comme dans l'autre, msg pointe sur le message approprie.
*/
static int
login(user, passwd, msg, msglen)
char *user;
char *passwd;
char **msg;
int *msglen;
{
struct passwd *pw;
char *epasswd;
char *tty;
if ((pw = getpwnam(user)) == NULL) {
return (UPAP_AUTHNAK);
}
/*
* XXX Si il n'y a pas de mots de passe, accepte la connection.
*/
if (pw->pw_passwd == '\0') {
return (UPAP_AUTHACK);
}
epasswd = crypt(passwd, pw->pw_passwd);
if (strcmp(epasswd, pw->pw_passwd)) {
return (UPAP_AUTHNAK);
}
syslog(LOG_INFO, "user %s logged in", user);
/*
* Ecris une entree wtmp pour cet utilisateur.
*/
tty = strrchr(devname, '/');
if (tty == NULL)
tty = devname;
else
tty++;
logwtmp(tty, user, ""); /* Ajoute une entree wtmp de connection */
logged_in = TRUE;
return (UPAP_AUTHACK);
}
* a ceux stockes sur le systeme.
* Accepte la connection si l'utilisateur est OK.
*
* Cette fonction a ete modifiee pour etre compatible avec les mots de
* passe Shadow Linux si USE_SHADOW a ete defini
*
* retourne:
* UPAP_AUTHNAK: Connection refusee.
* UPAP_AUTHACK: Connection Acceptee.
* Dans un cas comme dans l'autre, msg pointe sur le message approprie.
*/
static int
login(user, passwd, msg, msglen)
char *user;
char *passwd;
char **msg;
int *msglen;
{
struct passwd *pw;
char *epasswd;
char *tty;
#ifdef USE_SHADOW
struct spwd *spwd;
struct spwd *getspnam();
#endif
if ((pw = getpwnam(user)) == NULL) {
return (UPAP_AUTHNAK);
}
#ifdef USE_SHADOW
if ((spwd = getspnam(user)) == NULL) {
pw->pw_passwd = "";
} else {
pw->pw_passwd = spwd->sp_pwdp;
}
#endif
/*
* XXX Si il n'y a pas de mots de passe, accepte la connection.
*/
if (pw->pw_passwd == '\0') {
return (UPAP_AUTHNAK);
}
#ifdef HAS_SHADOW
if ((pw->pw_passwd && pw->pw_passwd[0] == '@'
&& pw_auth (pw->pw_passwd+1, pw->pw_name, PW_LOGIN, NULL))
|| !valid (passwd, pw)) {
return (UPAP_AUTHNAK);
}
#else
epasswd = crypt(passwd, pw->pw_passwd);
if (strcmp(epasswd, pw->pw_passwd)) {
return (UPAP_AUTHNAK);
}
#endif
syslog(LOG_INFO, "user %s logged in", user);
/*
* Ecris une entree wtmp pour cet utilisateur.
*/
tty = strrchr(devname, '/');
if (tty == NULL)
tty = devname;
else
tty++;
logwtmp(tty, user, ""); /* Ajoute une entree wtmp de connection */
logged_in = TRUE;
return (UPAP_AUTHACK);
}
Editez le Makefile, et ajoutez:
LIBS = -shadow
Alors, trouvez la ligne:
COMPILE_FLAGS = -I.. -D_linux_=1 -DGIDSET_TYPE=gid_t
et replacez-la par:
COMPILE_FLAGS = -I.. -D_linux_=1 -DGIDSET_TYPE=gid_t -DUSE_SHADOW
Maintenant, lancez make et installez.
9. Foire Aux Questions
Q: J'essaye de contrôler sur quel terminal root
peut se connecter en utilisant /etc/securettys, mais il
semble que cela ne marcher plus. Qu'arrive-t-il ?
R: Les fichier /etc/securettys ne fait absolument
/etc/npasswd vers le fichier /etc/passwd ainsi que
le fichier /etc/nshadow vers le fichier
/etc/shadow. De plus vous aurez besoin de placer le fichier
login.defs dans le r駱ertoire /etc/.
incluse dans chacune des copies.
Il est permis de copier et distribuer des versions modifi馥s de ce document
dans les conditions ci-dessus. Une notice doit appara?re sp馗ifiant bien qu'il
s'agit d'une version modifi馥.
Il est permis de copier et distribuer des versions traduites dans d'autres
langues, dans les conditions g駭駻ales cit馥s pr馗馘emment.
Il est permis de diffuser ce document sous un autre support selon les
trancher lorsqu'il y a le moindre doute sur cette d馭inition "d'騅idence".
11. Divers et Remerciements
Les exemples de code pour auth.c proviennent de pppd-1.2.1d et
ont permis d'am駘iorer ce document.
S'il vous plait, si vous avez des suggestions ou des commentaires,
envoyez-moi un courrier.
amiti駸