Linux Shadow Password HOWTO, Version francaise
Michael H. Jackson,
[email protected]
_T_r_a_d_u_c_t_i_o_n _f_r_a_n_c_a_i_s_e _: _I_g_o_r _G_e_n_i_b_e_l _(_I_g_o_r_._G_e_n_i_b_e_l_@_e_m_i_._u_-
_b_o_r_d_e_a_u_x_._f_r_) .
v1.3, 3 Avril 1996
Ce document decrit comment obtenir, installer et configurer l'ensemble
_S_h_a_d_o_w _P_a_s_s_w_o_r_d sous Linux. Il prend aussi en compte l'adaptation des
autres logiciels et demons reseau accedant habituellement aux mots de
passe des utilisateurs. Bien qu'ils ne fassent pas parti du paque-
tage, ces programmes ne fonctionnerons plus correctement apres son
installation. Ce document contient en plus un exemple de code pour
mettre a jour vos applications pour qu'elles supportent le systeme de
mots de passe caches. Des reponses a des questions frequemment posees
sont fournies en fin de document.
11.. IInnttrroodduuccttiioonn
Ceci est le Shadow password HOWTO pour linux. Ce document decrit
comment configurer votre systeme linux pour utiliser le systeme des
mots de passe caches. Quelques exemples d'utilisation concernant
certaines caracteristiques de la _s_u_i_t_e _S_h_a_d_o_w (Note: ce terme n'est
volontairement pas traduit afin de ne pas alourdir la comprehension du
document) sont aussi inclus.
Lorsque vous installerez le paquetage des mots de passe caches et
lorsque vous vous servirez des utilitaires, vous devrez etre loge
root. Lorsque vous installerez le paquetage, vous devrez effectuer
certains changements sur des utlitaires systemes, il est donc tres
fortement recommende de faire des copies de sauvegarde de programmes
indiques. Je vous recommande aussi de lire et de comprendre toutes les
instructions avant de commencer.
11..11.. NNoottee dduu ttrraadduucctteeuurr
Tout au long du document vous constaterez tres certainement que je
n'ai pas traduit le terme "Shadow Password". La raison est simple: le
traduction de ce terme n'est pas elegante. Je pense qu'une simple
explication (voir l'introduction) de celui-ci vaut beaucoup mieux
qu'une "francisation" douteuse.
11..22.. CChhaannggeemmeennttss ppaarr rraappppoorrtt aauuxx vveerrssiioonnss pprreecceeddeenntteess
Ajouts:
+o Ajout de la sous-section Pourquoi vous ne devriez pas installer le
systeme Shadow Password
+o Ajout de la sous-section Mise a jour du programme xdm
+o Ajout de la section Comment faire que les caracteristiques de la
suite Shadow fonctionnent
+o Ajout de la section contenant les questions les plus frequemment
posees
Corrections/Mise a jour:
+o Correction des references html sur Sunsite
+o Correction dans la section sur wu-ftp pour ajouter -lshadow dans le
Makefile
+o Correction de quelques fautes de frappes et de langage
+o Chagement dans la section sur wu-ftp pour supporter le format ELF
+o Mise a jour pour mettre en evidence les problemes de securite de
certains programmes de login
+o Mise a jour pour recommander la Suite Linux Shadow par Marek
Michalkiewicz
11..33.. NNoouuvveelllleess vveerrssiioonnss ddee ccee ddooccuummeenntt::
La derniere version de ce document pourra toujours etre recuperee via
FTP anonyme sur:
+o Version Originale: ssuunnssiittee..uunncc..eedduu
/pub/Linux/docs/HOWTO/SHADOW-HOWTO
ou:
/pub/Linux/docs/HOWTO/other-formats/SHADOW-HOWTO{-html.tar,ps,dvi}.gz
+o Version Francaise: ffttpp..lliipp66..ffrr
/pub/linux/french/docs/HOWTO/Shadow-Password-HOWTO*
Ou bien par le World Wide Web: Linux Documentation Project Web Server
<
http://sunsite.unc.edu/mdw/linux.html>, a la page: SHADOW-HOWTO
<
http://sunsite.unc.edu/linux/HOWTO/Shadow-Password-HOWTO.html> sinon
directement par moi, <
[email protected]>. Il sera aussi poste dans le
newsgroup: comp.os.linux.answers
Ce document est maintenant stocke en portant le nom Shadow-AAJJMM.
11..44.. CCoommmmeennttaaiirreess oouu ssuuggggeessttiioonnss..
Merci de m'envoyer tout commentaire, mise a jour ou suggestion:
Michael H. Jackson <
[email protected]>. Plus vite je recois vos
commentaires, plus vite je mets a jour ce document. Si vous avez des
problemes, merci de m'ecrire directement, je suis tres rarement a jour
avec les newsgroups.
22.. PPoouurrqquuooii uuttiilliisseerr llee ssyysstteemmee ddee mmoottss ddee ppaassssee SShhaaddooww??
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 copyright concernant la suite Shadow n'etait pas clair sur les
droits de distribution. LLiinnuuxx utilise la licence GNU (quelques fois
referencee sous le nom de _C_o_p_y_l_e_f_t) qui permet a quiconque de le
stocker sur n'importe quel support (comme un CD-ROM par exemple) et
est responsable des droits pour cela.
Le mainteneur actuel de la _S_u_i_t_e _S_h_a_d_o_w, Marek Michalkiewicz
<
[email protected]> a recu les sources de l'auteur
originel sour un copyright style BSD permettant la redistribution.
Maintenant que le probleme de la distribution est resolu, il est
probable que les prochaines distributions contiendront les shadow
password par defaut. En attendant vous devrez l'installer vous-meme.
Si vous avez installe votre distribution depuis un CD-ROM, vous pouvez
trouver que, dans la mesure ou la distribution n'a pas la _s_u_i_t_e _s_h_a_d_o_w
d'installee, quelques fichiers dont vous avez besoin pour installer la
_s_u_i_t_e _s_h_a_d_o_w peuvent se situer sur le CD-ROM.
_C_e_p_e_n_d_a_n_t_, _l_a _s_u_i_t_e _s_h_a_d_o_w _3_._3_._1_, _3_._3_._1_-_2 _e_t _s_h_a_d_o_w_-_m_k _p_o_s_s_e_d_e_n_t
_t_o_u_t_e_s _u_n _p_r_o_b_l_e_m_e _d_e _s_e_c_u_r_i_t_e _a_v_e_c _l_e_u_r _p_r_o_g_r_a_m_m_e _d_e _l_o_g_i_n _a_i_n_s_i
_q_u_'_a_v_e_c _d_'_a_u_t_r_e_s _p_r_o_g_r_a_m_m_e_s _p_o_s_s_e_d_a_n_t _l_e _d_r_o_i_t setuid root. En
consequence, elle ne doivent pas etre utilises plus longtemps.
Tous les fichiers necessaires peuvent etre recuperes via ftp anonyme
ou via le World Wide Web.
Sur un systeme linux sans l'ensemble Shadow installe, les informations
sur l'utilisateur, et en particulier le mot de passe sont stockees
dans le fichier /etc/passwd. Le mot de passe est enregistre dans un
format _e_n_c_r_y_p_t_e. Si vous demandez a un expert en cryptographie, il (ou
elle) vous repondra que le mot de passe n'est pas _e_n_c_r_y_p_t_e mais
_e_n_c_o_d_e. En fait, lors de l'utilisation de crypt(3), le mot de passe
est considere comme la cle pour encoder un texte de valeur nulle.
C'est la raison pour laquelle a partir de maintenant, j'utiliserai le
terme _e_n_c_o_d_e.
L'algorithme utilise pour encoder le mot de passe fonctionne a sens
unique, c'est-a-dire qu'il est tres difficile a partir du mot de passe
encode de retrouver l'original. Vous trouverez plus d'informations a
propos de l'algorithme utilise dans la section ``'' les pages de
manuel de crypt(3).
Lorsqu'un utilisateur definit un mot de passe, il est encode avec une
valeur aleatoire appelee _s_e_l (Note : _s_a_l_t en Anglais). C'est-a-dire
qu'un meme mot de passe pourrait etre enregistre de 4096 facons
differentes. La valeur du _s_e_l est alors enregistree avec le mot de
passe desormais encode.
Lorsqu'un utilisateur se connecte et saisit son mot de passe, le _s_e_l
est tout d'abord retrouve a partir du mot de passe encode. Alors, le
mot de passe entre est encode avec le _s_e_l precedemment retrouve.
Il est, avec des moyens informatiques, difficile (mais pas impossible)
de prendre un mot de passe _e_n_c_o_d_e aleatoirement et de retrouver le mot
de passe original. Quoi qu'il en soit, sur un systeme ayant de
nombreux utilisateurs, il est probable que certains mots de passes
soient evidents: un simple mot, un nom, ou une combinaison de mots
simples.
Mais le pirate de systeme sait tout cela, et va simplement encoder un
dictionnaire de mots de passe usuels en utilisant les 4096
possibilites de _s_e_l. Il va alors comparer les mots de passe encodes
dans le fichier /etc/passwd par sa propre base de donnee. Quand il
aura trouve une equivalence, il aura le mot de passe d'un compte.
Cela s'appelle une _a_t_t_a_q_u_e _a_u _d_i_c_t_i_o_n_n_a_i_r_e, et c'est une des methodes
les plus courantes pour acceder a un systeme sans autorisation.
En y reflechissant, a un seul mot de passe de 8 caracteres correspond
4096 mots de passes encodes de 13 caracteres (c'est a dire 4096x13
octets). Donc un dictionnaire de 400 000 mots simples, noms, mots de
passes, ou simple variations, tiendrait facilement sur un disque dur
de 4Go. Le pirate a juste besoin de les trier et de les comparer.
Meme sans avoir beaucoup d'espace disque, des utilitaires comme
crack(1) peuvent en general casser pas mal de mots de passe sur un
systeme contenant suffisamment d'utilisateurs. (En considerant que les
utilisateurs du systeme sont autorises a lire leur propre mot de
passe).
Le fichier /etc/passwd contient aussi des informations comme
l'identificateur de l'utilisateur (UID) et l'identificateur de groupe
(GID) qui sont utilises par de nombreux programmes. C'est pour cela
que le fichier passwd _d_o_i_t etre lisible par tout le monde. Si vous
changiez les permissions de /etc/passwd de telle sorte que plus
personne ne puisse le lire, la premiere chose que vous pourriez
constater, c'est que la commande ls -l affiche desormais le user ID au
lieu du nom !
Le kit Shadow resout ce probleme en deplacant les mots de passe
encodes vers un autre fichier (en general /etc/shadow). Il n'y a que
le root qui a les permissions de lecture et d'ecriture sur le fichier
_s_h_a_d_o_w. Quelques programmes (comme xlock) necessitent que le groupe
_s_h_a_d_o_w puisse lire et ecrire dans le fichier /etc/shadow. Il est
preferable que les programmes qui ont juste besoin de lire et verifier
le mot de passe soient lances SGID _s_h_a_d_o_w plutot que SGID root.
En deplacant les mots de passe vers le fichier /etc/shadow, nous
ecartons effectivement au pirate la possibilite d'avoir acces aux mots
de passe encodes avec lesquels ils auraient pu faire une _a_t_t_a_q_u_e _a_u
_d_i_c_t_i_o_n_n_a_i_r_e.
De plus, le _k_i_t _s_h_a_d_o_w propose de nouvelles possibilites
interessantes:
+o Un fichier de configuration pour configurer les options de login
(/etc/login.defs),
+o Des utilitaires pour ajouter, modifier et effacer des comptes
utilisateurs,
+o Gestion de la duree des mots de passe,
+o Gestion de la duree d'un compte,
+o Groupes shadow (optionnels),
+o Mots de passe de double longueur (16 caracteres),
+o Meilleur controle sur la selection du mot de passe d'un
utilisateur,
+o Mots de passe Dial-up,
+o Programmes d'authentification secondaire.
Installer l'_e_n_s_e_m_b_l_e _s_h_a_d_o_w, c'est contribuer a la securite de votre
systeme, mais il y a bien d'autre choses a faire pour securiser votre
systeme. Il y aura probablement une serie de HOWTO discutant de la
securite et des methodes de securisation.
Pour le moment, pour avoir des informations sur la securite et linux,
incluant les vulnerabilites connues du systeme, allez voir la: Linux
Security home page. <
http://bach.cis.temple.edu/linux/linux-security/>
22..11.. PPaasssswwoorrdd PPoouurrqquuooii nnee ddeevvrriieezz--vvoouuss ppaass iinnssttaalllleerr llee ssyysstteemmee
SShhaaddooww
Il y a quelques circonstances et quelques configurations qui font
qu'installer la _S_u_i_t_e _S_h_a_d_o_w n'est pas une bonne idee:
+o La machine ne possede pas de comptes utilisateurs,
+o Votre machine fonctionne sur un reseau local et utilise NIS
(Network Information Service) pour recuperer ou fournir des noms
d'utilisateurs et des mots de passe a d'autres machines sur le
reseau (Cela peut actuellement etre fait et n'ameliore pas la
securite pour autant),
+o Votre machine est utilisee par des serveurs de terminaux afin de
verifier des utilisateurs via NFS (Network File Sytem), NIS, ou
quelqu'autre methode,
+o Votre machine utilise d'autres logiciels pour valider les
utilisateurs, et il n'y a pas de version disponible, et vous n'avez
pas les sources.
22..22.. FFoorrmmaatt dduu ffiicchhiieerr //eettcc//ppaasssswwdd
Sur un systeme ne possedant pas la suite Shadow, voici le format du
fichier /etc/passwd
username:passwd:UID:GID:full_name:directory:shell
En detail:
uusseerrnnaammee
Le nom de l'utilisateur (login)
ppaasssswwdd
Le mot de passe encode
UUIIDD
Identificatuer de l'utilisateur: user ID
GGIIDD
Identificatuer du groupe: group ID
ffuullll__nnaammee
Le nom complet de l'utilisateur (Prenom Nom) - Ce champ est
appele le champ GECOS (General Electric Comprehensive Operating
System) et peut eventuellement contenir d'autres informations
ddiirreeccttoorryy
Repertoire personnel de l'utilisateur
sshheellll
Shell par defaut de l'utilisateur
Par exemple:
username:Npge08pfz4wuk:503:100:Full Name:/home/username:/bin/sh
Np est le _s_e_l et ge08pfz4wuk est le mot de passe _e_n_c_o_d_e. Pour le meme
mot de passe, son equivalent encode aurait tout aussi bien pu etre
kbeMVnZM0oL7I. Il y a 4096 possibilites d'encodage pour le meme mot de
passe. (Le mot de passe de cet exemple est
Une fois l'ensemble shadow installe, voila a quoi ressemblera votre
fichier /etc/passwd:
username:x:503:100:Full Name:/home/username:/bin/sh
Un x est venu remplacer le mot de passe encode. Mis a part ca, le for-
mat du fichier /etc/passwd reste en fait inchange. Ceci permet a tous
les programmes qui lisent le fichier /etc/passwd sans avoir besoin
d'acceder aux mots de passe de fonctionner correctement.
Les mots de passes encodes sont desormais dans le fichier /etc/shadow.
22..33.. FFoorrmmaatt dduu ffiicchhiieerr //eettcc//sshhaaddooww
Le fichier /etc/shadow contient les informations suivantes:
username:passwd:last:may:must:warn:expire:disable:reserved
En detail:
uusseerrnnaammee
Le Nom de l'Utilisateur
ppaasssswwdd
Le mot de passe encode
llaasstt
Date de la derniere modification (en nombre de jours depuis le
1er janvier 1970).
mmaayy
Nombre de jours avant que le mot de passe puisse etre modifie
mmuusstt
Nombre de jours avant que le mot de passe doive etre modifie
wwaarrnn
Nombre de jours durant lesquels l'utilisateur est prevenu de
l'expiration de son mot de passe.
eexxppiirree
Nombre de jours entre l'expiration du mot de passe et la
fermeture du compte.
ddiissaabbllee
Date de la fermeture du compte (en nombre de jours depuis le 1er
janvier 1970).
rreesseerrvveedd
Champ reserve
Donc, l'exemple precedent devrait etre:
username:Npge08pfz4wuk:9479:0:10000::::
22..44.. AAppeerrccuu ddee llaa ffoonnccttiioonn ccrryypptt((33))
extrait de la page de manuel de crypt(3)
"_c_r_y_p_t est la fonction de cryptage du mot de passe. Elle est basee sur
l'algorithme du DES (_D_a_t_a _E_n_c_r_y_p_t_i_o_n _S_t_a_n_d_a_r_d) avec quelques
modifications pour eviter les recherches materielles de la cle.
La cle est le mot de passe de l'utilisateur
Le _s_e_l est compose de deux caracteres choisis dans l'ensemble a-zA-
Z0-9./. cette chaine de caractere est utilisee pour perturber
l'algorithme de 4096 differentes facons.
En prenant les 7 derniers bits de chaque caractere du mot de passe, on
obtient une cle de 56 bits. Cette cle est utilisee pour crypter une
chaine de caractere constante (generalement constituee de zero). La
valeur retournee pointe sur le mot de passe crypte: une serie de 13
caracteres ASCII imprimables (les deux premiers caracteres
correspondent au sel). La valeur retournee pointe sur une donnee
statique dont le contenu est modifie a chaque appel.
AAtttteennttiioonn:: Une cle de 56 bits correspond a: 2^56 donc 7.3e16 valeurs
possibles. Les recherches exhaustives ssoonntt ppoossssiibblleess en utilisant des
ordinateurs a architecture massivement parallele. Des logiciels comme
crack(1) travaillent avec des cles qui sont generalement utilisees par
les humains. C'est-a-dire que la selection de mots de passe testes
sont des mots simples, mots de passe frequemment utilises et des noms.
L'utilisation d'un programme passwd(1) qui recherche des mots de passe
trop simple est recommande.
L'algorithme DES lui-meme est tres limite, ce qui fait qu'envisager
l'utilisation de crypt(3) pour autre chose que de l'authentification
de mots de passe n'est pas une bonne idee. Si vous envisagez
d'utiliser crypt(3) pour un projet de cryptographie, ne le faites pas,
procurez-vous plutot un bon livre sur le cryptage de donnees et une
des nombreuses bibliotheques DES."
Si vous recherchez un bon livre sur le cryptage de donnees, je vous
recommande:
"Applied Cryptography: Protocols, Algorithms, and Source Code in C"
par Bruce Schneier <
[email protected]>
ISBN: 0-471-59756-2
33.. SSee pprrooccuurreerr llee ppaaqquueettaaggee SShhaaddooww..
33..11.. HHiissttoorriiqquuee dduu ppaaqquueettaaggee SShhaaddooww ppoouurr LLiinnuuxx??
_N_'_U_T_I_L_I_S_E_Z _P_A_S _L_E_S _P_A_Q_U_E_T_A_G_E_S _D_E_C_R_I_T_S _D_A_N_S _C_E_T_T_E _S_E_C_T_I_O_N_, _I_L_S
_C_O_N_T_I_E_N_N_E_N_T _D_E_S _P_R_O_B_L_E_M_E_S _D_E _S_E_C_U_R_I_T_E
Le paquetage Shadow original a ete ecrit par John F. Haugh II.
De nombreuses versions peuvent etre utilisees sur un systeme Linux:
+o shadow-3.3.1 est l'original
+o shadow-3.3.1-2 est le patch specifique a Linux fait par Florian La
Roche (
[email protected]) et contient quelques ameliorations.
+o shadow-mk est le paquetage specifique a Linux.
Le paquetage shadow-mk est en fait constitue du paquetage shadow-3.3.1
distribue par John F. Haugh II patche avec shadow-3.3.1-2 avec en
plus:
+o des corrections par Mohan Kokal <
[email protected]> rendant
l'installation bien plus evidente,
+o un patch par Joseph R.M. Zbiciak pour login1.c (login.secure) qui
elimine les trous de securite -f, -h de /bin/login et quelques
autres patches divers.
Le paquetage shadow-mk etait precedemment recommande, mais il doit
etre remplace a cause d'un trou de securite du programme login.
Il y a des _t_r_o_u_s _d_e _s_e_c_u_r_i_t_e dans les versions 3.3.1, 3.3.1-2 et
shadow-mk qui sont dus au programme login. Le bogue login implique de
ne pas verifier la longueur du nom de login. Cela entraine un
surpassement de la zone tampon qui provoque un crash ou pire encore.
Il est dit que ce surpassement de zone tampon pourrait permettre a
quiconque ayant un compte sur le systeme d'utiliser ce bogue ainsi que
des bibliotheques partagees pour gagner un acces root. Je ne pourrais
pas vous dire exactement comment cela est possible mais de nombreux
systemes Linux sont affectes. Mais les systemes possedants ces
_p_a_q_u_e_t_a_g_e_s _S_h_a_d_o_w, ainsi que la plupart des distributions pre-ELF _s_a_n_s
le _p_a_q_u_e_t_a_g_e _S_h_a_d_o_w sont vulnerables !
Pour de plus amples informations sur cette publication ainsi que
d'autres publications concernant les problemes de securite de Linux,
consultez la _L_i_n_u_x _S_e_c_u_r_i_t_y _H_o_m_e _P_a_g_e _(_S_h_a_r_e_d _L_i_b_r_a_r_i_e_s _a_n_d _l_o_g_i_n
_P_r_o_g_r_a_m _V_u_l_n_e_r_a_b_i_l_i_t_y_) a <
http://bach.cis.temple.edu/linux/linux-
security/Linux-Security-Faq/Linux-telnetd.html>
33..22.. OOuu ttrroouuvveerr llaa SSuuiittee SShhaaddooww
La seule suite recommandee est en beta test, donc les dernieres
versions sont utilisables en environnement de production et ne
contiennent pas de programme login vulnerable.
Le paquetage utilise la convention de notation suivante :
shadow-AAMMJJ.tar.gz
ou AAMMJJ est la date de publication de la suite.
Cette version sera eventuellement la version 3.3.3 lorsqu'elle sera
publiee apres le beta test; et est maintenue par Marek Michalkiewicz
<
[email protected]>. Elle est disponible sous la forme
: _s_h_a_d_o_w_-_c_u_r_r_e_n_t_._t_a_r_._g_z a l'adresse
<
ftp://il7linuxb.ists.pwr.wroc.pl/pub/linux/shadow/shadow-
current.tar.gz>.
Les miroirs suivants sont aussi disponibles :
+o
ftp://ftp.icm.edu.pl/pub/Linux/shadow/shdow-current.tar.gz
+o
ftp://iguana.hut.fi/pub/linux/shadow/shadow-current.tar.gz
+o
ftp://ftp.cin.net/usr/ggallag/shadow/shadow-current.tar.gz
+o
ftp://ftp.netural.com/pub/linux/shadow/shadow-current.tar.gz
Vous devez utiliser la version actuelle disponible.
Vous NE devez PAS utiliser une version plus ancienne que la version
shadow-960129 du fait qu'elles possedent le probleme de securite
decrit plus avant.
Lorsque ce document fait reference a la _S_u_i_t_e _S_h_a_d_o_w, je ferais
reference a ce paquetage. Il est donc suppose que vous utilisez ce
paquetage.
Pour information, j'ai utilise le paquetage shadow-960129 pour faire
les instructions d'installation.
Si vous utilisiez precedemment le paquetage shadow-mk, vous devriez
mettre a jour cette version et reconstruire tout ce que vous avez
originellement compile.
33..33.. CCee qquuii eesstt iinncclluuss ddaannss llee ppaaqquueettaaggee SShhaaddooww
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 bibliotheque: libshadow.a est incluse pour permettre de
compiler les programmes necessitant un acces en lecture/ecritures aux
mots de passe.
Les pages de manuel sont aussi incluses.
Il y a aussi un programme de configuration pour le program login
intalle sous le nom de /etc/login.defs.
44.. CCoommppiilleerr lleess pprrooggrraammmmeess..
44..11.. EExxttrraaiirree ll''aarrcchhiivvee
La premiere etape apres avoir recupere les paquetage est l'extraction
de l'archive. C'est une archive de format tar et compressee avec gzip.
Donc tout d'abord deplacez la vers /usr/src, et tapez:
tar -xzvf shadow-current.tar.gz
Ceci extraira l'ensemble dans le repertoire: /usr/src/shadow-AAMMJJ
44..22.. CCoonnffiigguurreerr llee ffiicchhiieerr ccoonnffiigg..hh
La premiere chose a faire est d'ecraser 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
definitions pour quelques options de configuration. Si vous utilisez
le paquetage shadow _r_e_c_o_m_m_a_n_d_e, je vous recommande de devalider le
support de groupes shadow; pour la premiere fois.
Par defaut les mots de passe pour les groupes cache sont valides. Pour
les devalider, editez le fichier config.h, et remplacez #define
SHADOWGRP en #undef SHADOWGRP. Je recommande de commencer sans les
groupes caches, mais si vous souhaitez reellement des mots de passe
pour les groupes ainsi que des administrateurs de groupes vous pourrez
ulterieurement valider l'option et recompiler le tout. Si vous la
laissez validee, vous devez creer le fichier /etc/gshadow.
Valider l'option gerant les longs mots de passe n'est pas recommandee.
_N_e _P_A_S _c_h_a_n_g_e_r le champ: #undef AUTOSHADOW
L'option AUTOSHADOW etait prevue pour que les programmes non adaptes
aux mots de passe shadow puissent toujours fonctionner. Cela parait
interessant en theorie 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 ecrive la donnee modifiee dans le fichier
/etc/passwd. Il ne possedera donc plus les proprietes _s_h_a_d_o_w
_p_a_s_s_w_o_r_d_s. _c_h_f_n et _c_h_s_h sont de tels programmes (Vous pouvez passer
outre en echangeant l'uid reel et effectif avant d'appeler getpwnam()
car root peut utiliser _c_h_f_n et _c_h_s_h aussi).
Le meme avertissement est aussi valable si vous compilez la libc. Il y
a une option SHADOW_COMPAT qui fait la meme chose. Elle ne _d_o_i_t _P_A_S
_e_t_r_e utilisee! Si vous commencez a remettre des mots de passe encodes
dans le fichier /etc/passwd, cela pose un probleme.
Si vous utilisez une libc de versions inferieure a 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, editez
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.
44..33.. FFaaiirree uunnee ccooppiiee ddee ssaauuvveeggaarrddee ddee vvooss pprrooggrraammmmeess oorriiggiinnaauuxx..
Faites une copie de sauvegarde des fichiers qui vont etre remplaces
par le kit shadow. Sur un systeme Slackware 3.0:
+o /bin/su
+o /bin/login
+o /usr/bin/passwd
+o /usr/bin/newgrp
+o /usr/bin/chfn
+o /usr/bin/chsh
+o /bin/id
Le paquetage beta possede une cible _s_a_v_e dans le Makefile, mais elle
est commentee car les differentes distributions placent ces programmes
a differents endroits.
Vous devriez aussi faire une copie de sauvegarde du fichier
/etc/passwd, mais faites attention a le nommer differemment de facon a
ne pas ecraser l'original.
44..44.. LLaanncceerr mmaakkee
_V_o_u_s _a_v_e_z _b_e_s_o_i_n _d_'_e_t_r_e root pour la plupart de l'installation
Lancez make pour compiler les executables 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 controle de version.
55.. IInnssttaalllleerr
55..11.. AAyyeezz uunnee ddiissqquueettttee ddee bboooott aa ppoorrtteeee ddee mmaaiinn
Si la mise a jour se deroulait mal, il serait utile d'avoir une
disquette de boot. Si vous avez l'ensemble des deux disquettes
boot/root que vous avez utilisees lors de l'installation de votre
systeme, elles feront probablement l'affaire. Dans le cas contraire,
vous devrez en generer: jetez un coup d'oeil au Bootdisk-HOWTO
<
http://sunsite.unc.edu/mdw/HOWTO/Bootdisk-HOWTO.html> (version
francaise: Bootdisk-HOWTO
<
ftp://ftp.ibp.fr/pub/linux/french/docs/HOWTO/Bootdisk-HOWTO>) qui
vous decrira la marche a suivre.
55..22.. SSuupppprriimmeerr lleess ppaaggeess ddee mmaannuueell eenn ddoouubbllee
Vous devriez aussi deplacer les pages de manuels qui vont etre
remplacees. Meme si vous avez le courage d'installer le kit Shadow
sans proceder a un quelconque sauvegarde, vous aurez a supprimer vos
anciennes pages: elles ne sont pas ecrasees car - dans la plupart des
cas - elles sont enregistrees dans un format compresse.
Vous pouvez utiliser une combinaison de la commande man -aW et de la
commande locate pour localiser les pages a effacer. Il est
generalement plus aise de retrouver les anciennes pages avant de
lancer make intall.
Si vous utilisez la distribution Slackware 3.0, alors les pages de
manuel que vous devez supprimer sont:
+o /usr/man/man1/chfn.1.gz
+o /usr/man/man1/chsh.1.gz
+o /usr/man/man1/id.1.gz
+o /usr/man/man1/login.1.gz
+o /usr/man/man1/passwd.1.gz
+o /usr/man/man1/su.1.gz
+o /usr/man/man5/passwd.5.gz
Regardez dans les sous repertoires /var/man/cat[1-9] Il est possible
qu'il y ait des pages de manuel du meme nom qui devront etre effacees.
55..33.. LLaanncceerr mmaakkee iinnssttaallll
C'est desormais le moment de taper: (faites ceci en tant que root).
make install
Ceci installera les nouveaux programmes, remplacera les anciens,
definira 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.
Si vous utilisez le paquetage beta, vous devez copier a la main le
fichier login.defs dans les repertoires /etc/ et etre sur que seul
root peut le modifier.
cp login.defs /etc
chmod 700 /etc/login.defs
Ce fichier est le fichier de configuration pour le programme _l_o_g_i_n.
Vous devriez regarder et faire des changements dans ce fichier pour
votre propre systeme. C'est la que vous decidez sur quel terminal root
peut se connecter, ainsi que d'autres parametres de securite (comme
l'expiration par defaut des mots de passe).
55..44.. LLaanncceerr ppwwccoonnvv
La prochaine etape consiste a lancer pwconv. Ceci doit etre fait en
tant que root, et a partir du repertoire /etc :
cd /etc
/usr/sbin/pwconv
pwconv lit les donnees du fichier /etc/passwd et les separe en deux
fichiers: /etc/npasswd et /etc/nshadow.
Un programme pwunconv permet de faire la demarche inverse: a partir du
fichier /etc/passwd et /etc/shadow, il genere un unique /etc/passwd.
55..55.. RReennoommmmeerr nnppaasssswwdd eett nnsshhaaddooww
Apres avoir lance pwconv, vous avez normalement cree deux fichiers:
/etc/npasswd et /etc/nshadow. Ses fichiers doivent etre respectivement
renommes en /etc/passwd et /etc/shadow. Faites aussi une copie de
votre fichier /etc/passwd original, mais faites attention que seul le
root puisse y avoir l'acces. Nous le deplacerons dans le repertoire
personnel de root:
cd /etc
cp passwd ~passwd
chmod 600 ~passwd
mv npasswd passwd
mv nshadow shadow
Verifiez aussi que les permissions et les proprietaires des fichiers
soient corrects. Si vous utilisez _X_-_w_i_n_d_o_w_s, le programme xlock doit
pouvoir lire directement le fichier /etc/shadow (mais pas y ecrire).
La meilleure solution consiste a configurer le fichier shadow en
utilisateur root et groupe shadow. Avant toute chose verifiez que le
groupe shadow existe bien (regardez dans le fichier /etc/group).
Actuellement, il ne devrait y avoir aucun utilisateur appartenant a ce
groupe.
chown root.root passwd
chown root.shadow shadow
chmod 0644 passwd
chmod 0640 shadow
Votre systeme est desormais equipe de mots de passe shadow. Deplacez-
vous vers une autre console virtuelle et verifier si vous pouvez vous
loguer.
Si vous ne pouvez pas vous loguer c'est que la mise a jour s'est mal
deroulee ! Pour revenir a un systeme de mot de passes non shadow,
entrez ce qui suit:
cd /etc
cp ~passwd passwd
chmod 644 passwd
cd /usr/src/shadow-mk
make restore
Ceci restaurera le fichier passwd original, et restaurera tous les
fichiers precedemment sauvegardes.
66.. LLeess aauuttrreess pprrooggrraammmmeess aa mmeettttrree aa jjoouurr
Le paquetage shadow contient la plupart des programmes de remplacement
aux programmes accedant aux mots de passe. Mais toutefois, il reste
quelques programmes presents en general sur la plupart des systemes
qui necessitent une mise a jour pour fonctionner correctement.
Si vous utilisez une _D_i_s_t_r_i_b_u_t_i_o_n _D_e_b_i_a_n (et meme si vous n'en
utilisez pas), vous pouvez obtenir les sources des programmes que vous
avez besoin de recompiler a :
<
ftp://ftp.debian/org/debian/stable/source/>
La but de cette section concerne la mise a jour des programmes:
adduser, wu_ftpd, ftpd, pop3d, xlock xdm et sudo
Reportez vous a la section ``'' pour vous aider a mettre a jour les
programmes qui necessitent l'acces aux mots de passes (sans que le
programme soit SUID root ou SGID shadow).
66..11.. llee pprrooggrraammmmee AAdddduusseerr ((SSllaacckkwwaarree))
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 etre trouvee
sur:
ftp://sunsite.unc.edu/pub/Linux/
system/Admin/accounts/adduser.shadow-1.4.tar.gz.
Je vous encourage a utiliser les programmes qui sont fournis par le
paquetage shadow (useradd, usermod et userdel) a la place de adduser.
Ils necessitent un peu de temps pour savoir s'en servir, mais l'effort
est d'autant plus grand que ces programmes effectuent un blocage de
fichier sur /etc/passwd et /etc/shadow, ce que ne fait pas adduser
Lisez la section ``'' pour de plus amples informations.
L'installation est aisee:
tar -xzvf adduser.shadow-1.4.tar.gz
cd adduser.shadow.1.4
make adduser
chmod 700 adduser
make install
66..22.. LLee sseerrvveeuurr wwuu__ffttppdd
La plupart des distributions Linux incluent le serveur wu_ftpd. Si
votre distribution n'est pas ``native shadow'', votre serveur wu_ftpd
n'est pas compile pour le support shadow. wu_ftpd est lance a partir
de inetd/tcpd en tant que processus root. Si vous utilisez un ancien
demon wu_ftpd, vous devrez de toute facon le mettre a jour car les
vieilles versions ont un bug, le compte root pouvait etre compromis
(pour plus d'informations, consultez la page web:
<
http://bach.cis.temple.edu/linux/linux-security/Linux- Security-
FAQ/Linux-wu.ftpd-2.4-Update.html>).
Heureusement, la seule demarche a faire est de recuperer les sources
et de les compiler avec l'option shadow.
Le serveur wu_ftpd peut etre recupere sur Sunsite: wu-
ftp-2.4-fixed.tar.gz
<
ftp://sunsite.unc.edu/pub/Linux/system/Network/file-transfer/wu-
ftpd-2.4-fixed.tar.gz>
Une fois l'archive recuperee, placez la dans /usr/src et tapez:
cd /usr/src
tar -xzvf wu-ftpd-2.4-fixed.tar.gz
cd wu-ftpd-2.4-fixed
cp ./src/config/config.lnx.shadow ./src/config/config.lnx
editer alors le fichier ./src/makefiles/Makefile.lnx et changez la
ligne:
LIBES = -lbsd -support
par
LIBES = -lbsd -support -lshadow
Maintenant vous etes pres a lancer le script de compilation installer
le resultat:
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
Sur mon systeme base sur une Slackware 3.0 j'ai du faire ces
modifications avant de lancer build: build:
cd /usr/include/netinet
ln -s in_systm.h in_system.h
cd -
Des problemes ont ete rapportes lors de la compilation de ce paquetage
sous des systemes ELF, mais la beta version de la prochaine
publication fonctionne bien. Elle peut etre trouve a: wu-
ftp-2.4.2-beta-10.tar.gz <
ftp://tscnet.com/pub/linux/network/ftp/wu-
ftpd-2.4.2-beta-20.tar.gz>
Une fois que vous avez recupere le serveur, placez-le dans le
repertoire /usr/src/ et tapez:
cd /usr/src
tar -xzvf wu-ftpd-2.4.2-beta-10.tar.gz
cd wu-ftpd-beta-10
cd ./src/config
editez alors le fichier config.lnx et remplacez:
#undef SHADOW_PASSWORD
par
#define SHADOW_PASSWORD
Allez alors dans le repertoire des Makefiles
cd ../Makefiles
et editez le fichier Makefile.lnx. Modifiez alors:
LIBES = -lsupport -lbsd # -lshadow
par
LIBES = -lsupport -lbsd -lshadow
Il ne reste plus qu'a compiler le programme et l'installer:
cd ..
build lnx
cp /usr/sbin/wu-ftpd /usr/sbin/wu-ftpd.old
cp ./bin/ftpd /usr/sbin/wu-ftpd
Notez que vous devrez controler le fichier /etc/inetd.conf afin d'etre
sur que votre serveur wu-ftpd soit reellement present. Il a ete
rapporte que certaines distributions placent les serveurs demons a
d'autres endroits, et donc, wu-ftpd en particulier pourrait etre nomme
differemment.
66..33.. ffttppdd ssttaannddaarrdd
Si vous utilisez le serveur ftpd standard, tout d'abord, je vous
recommande de passer au serveur wu_ftpd, mis a part les bugs cites
precedemment, il est considere comme plus securise.
Si vous insistez et voulez garder la version standard - ou bien vous
avez besoin du support NIS - le fichier est sur Sunsite: ftpd-shadow-
nis.tgz <
ftp://sunsite.unc.edu/pub/Linux/system/Network/file-
transfer/ftpd-shadow-nis.tgz>
66..44.. ppoopp33dd ((PPoosstt OOffffiiccee PPrroottooccooll 33))
Si vous utilisez le 3eme _P_o_s_t _O_f_f_i_c_e _P_r_o_t_o_c_o_l (POP3), vous devrez
recompiler le programme pop3d. pop3d est normalement lance par
inet2/tcpd dans un process root.
Il y a deux versions disponibles sur Sunsite:
pop3d-1.00.4.linux.shadow.tar.gz
<
ftp://sunsite.unc.edu/pub/Linux/system/Mail/pop/
pop3d-1.00.4.linux.shadow.tar.gz> et pop3d+shadow+elf.tar.gz
<
ftp://sunsite.unc.edu/pub/Linux/system/Mail/pop/
pop3d+shadow+elf.tar.gz>
Les deux versions sont tres simples a installer.
66..55.. xxlloocckk
Si vous utilisez X-window et que vous ne mettez pas a jour xlock, vous
devrez utiliser CTRL-ALT-Fx pour vous deplacer sur un autre terminal,
vous loguer et tuer le process xlock (ou utiliser CTRL-ALT-BS pour
tuer le serveur X). Mais par chance, la mise a jour d' xlock n'est
vraiment pas compliquee.
Si vous utilisez XFree86 Versions 3.x.x, c'est probablement xlockmore
qui est installe (c'est un superbe economiseur d'ecran et un systeme
de lock). Ce paquetage supporte _s_h_a_d_o_w apres recompilation. Si vous
utilisez une vieille version 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>
En gros, voila comment proceder:
Recuperez xlockmore-3.7.tgz et copiez-le dans /usr/src, decompressez-
le:
tar -xzvf 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
Alors, construisez les executables:
cd /usr/src/xlockmore
xmkmf
make depend
make
Maintenant, deplacez le tout vers le bon endroit, et mettez-a-jour les
proprietaires et les permissions de fichier:
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 desormais correctement.
66..66.. xxddmm
xdm est un programme qui presente un ecran de _l_o_g_i_n pour _W_-_W_i_n_d_o_w.
Quelques sytemes demarrent xdm lorsqu'il se situe dans un niveau
specifique (voir /etc/inittab).
Avec le _k_i_t _S_h_a_d_o_w installe, xdm doit etre mis a jour. Heureusement,
il est relativement facile de mettre a jour votre programme xdm.
xdm.tar.gz est disponible a:
<
ftp://sunsite.unc.edu/pub/Linux/X11/xutils/xdm.tar.gz>;
Recuperez xdm.tar.gz et placez-le dans le repertoire /usr/src, et
decompressez-le:
tar -xzvf xdm.tar.gz
editez 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 executables;:
cd /usr/src/xdm
xmkmf
make depend
make
Copier alors l'executable:
cp xdm /usr/X11R6/bin
xdm est execute en tant que root donc vous n'avez pas a changer les
permissions.
66..77.. ssuuddoo
Le programme sudo permet a l'administrateur systeme de laisser des
utilisateurs lancer des programmes qui normalement necessiteraient les
permissions root. C'est interessant car ca permet a l'administrateur
de se limiter lui meme l'acces root pendant qu'il permet aux
utilisateurs de faire des operations comme monter un disque.
sudo a besoin d'acceder aux mots de passe car il verifie le mot de
passe des utilisateurs quand il est invoque.sudo fonctionne deja SUID
root, donc acceder au fichier /etc/shadow n'est pas un probleme.
la mise a jour sudo pour shadow est disponible:
Cette version a ete prevue pour fonctionner avec des mots de passe
shadow, donc la seule chose a faire est de recompiler le tout (mettez-
le dans /usr/src):
cd /usr/src
tar -xzvf sudo-1.2-shadow.tgz
cd sudo-1.2-shadow
make all
make install
66..88.. iimmaappdd ((ppaaqquueettaaggee EEmmaaiill ppiinnee))
imapd est un serveur e-mail tout comme pop3d. imapd est compris dans
l'ensemble Email pine. La documentation qui est fournie avec le
paquetage pretend que la configuration par defaut pour un systeme
linux fonctionne avec shadow. Or j'ai constate que ce n'est pas vrai.
De plus, je n'ai pas encore compris comment fonctionne la combinaison
Makefile / Script Build et je n'ai pas reussi a le modifier pour qu'il
supporte le format shadow.
Si quelqu'un arrive a faire cette mise a jour, merci de m'envoyer un
email, je l'incluerai ici.
66..99.. ppppppdd ((SSeerrvveeuurr PPooiinntt--ttoo--PPooiinntt pprroottooccooll))
Le serveur pppd peut etre configure selon de nombreuses methodes
d'authentification: _P_a_s_s_w_o_r_d _A_u_t_h_e_n_t_i_f_o_c_a_t_i_o_n _P_r_o_t_o_c_o_l (PAP) et
_C_r_y_p_t_o_g_r_a_p_h_i_c _A_u_t_h_e_n_t_i_f_i_c_a_t_i_o_n _P_r_o_t_o_c_o_l (CHAP). Le serveur pppd
utilise en general les mots de passe stockes dans le fichier
/etc/ppp/chap-secrets et /etc/ppp/pap-secret. Si vous utilisez cette
methode, ce n'est pas la peine de faire de mise-a-jour.
pppd vous permet aussi d'utiliser le parametre _l_o_g_i_n (soit en ligne de
commande, soit dans le fichier de configuration). Si l'option login
est utilisee, alors pppd utilisera pour le _P_A_P le fichier /etc/passwd
pour le nom d'utilisateur et le mot de passe. Bien sur ca ne
fonctionnera plus sur un systeme mots de passe shadow. Pour
pppd-1.2.1d, un ajout de code est necesssaire.
L'exemple donne dans la prochaine section est la modification du code
de pppd-1.2.1d (une vieille version de pppd).
pppd-2.2.0 contient deja le support shadow.
77.. FFaaiirree eenn ssoorrttee qquuee llaa ssuuiittee sshhaaddooww ffoonnccttiioonnnnee
Cette section explique quelques elements que vous souhaitez savoir
depuis que vous avez la suite shadow sur votre systeme. De plus amples
informations sont disponibles dans les pages de manuels.
77..11.. AAjjoouutteerr,, mmooddiiffiieerr,, eett ssuupppprriimmeerr ddeess uuttiilliissaatteeuurrss..
La _S_u_i_t_e _S_h_a_d_o_w a ajoute les commandes suivantes qui sont orientees
``ligne de commande'', pour ajouter, modifier et supprimer des
utilisateurs. Vous avez aussi surement du installer le programme
adduser.
77..11..11.. uusseerraadddd
la commande useradd peut etre utilisee pour ajouter des utilisateurs a
votre systeme. Vous appelez aussi cette commande pour changer les
parametres par defaut.
La premiere chose a faire est d'examiner les parametres par defaut et
effectuer des changements pour votre propre systeme.
useradd -D
______________________________________________________________________
GROUP=1
HOME=/home
INACTIVE=0
EXPIRE=0
SHELL=
SKEL=/etc/skel
______________________________________________________________________
Les parametres par defauts ne sont probablements pas ceux que vous
souhaitez, donc, si vous commencez a ajouter des utilisateurs
maintenant, vous aurez a specifier toutes les informations pour chacun
d'entre eux. C'est pour cela que nous pouvons et devons changer les
valeurs par defaut.
Sur mon syteme:
+o Je veux que le groupe par defaut soit 100,
+o Je veux que les mots de passe expirent au bout de 60 jours,
+o Je ne veux pas que le compte soit bloque lors de l'expiration du
mot de passe,
+o Je veux que le shell par defaut soit /bin/bash
Pour effectuer ces changements, j'ai du 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
______________________________________________________________________
Ces valeurs par defaut sont stockees dans le fichier
/etc/defaults/useradd
Maintenant vous pouvez utiliser useradd pour ajouter des utilisateurs
a votre systeme. Par exemple, pour ajouter l'utilisateur fred, en
utilisant les valeurs par defaut, vous devez utiliser ce qui suit:
useradd -m -c "Fred Flintstone" fred
Cela creera une entree dans le fichier /etc/passwd:
fred:*:505:100:Fred Flintstone:/home/fred:/bin/bash
Ainsi que cette entree dans le fichier /etc/shadow:
fred:!:0:0:60:0:0:0:0
Le repertoire d'accueil de fredsera cree et le contenu de /etc/skel
sera copie a cet endroit grace a l'option -m
De plus, lorsque l'on ne specifie pas l'IUD, le prochain disponible
est utilise.
Le compte de fred est maintenant cree, mais fred ne peut pas se loger
tant que nous ne deverouillons 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:
fred:J0C.WDR1amIt6:9559:0:60:0:0:0:0
fred est maintenant capable de se connecter et d'utiliser le systeme.
La chose interessante a propos de useradd 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 meme moment, les deux operations sont effectuees
correctement.
Vous devriez plutot utiliser les commandes fournies qu'editer
directement les fichier /etc/passwd et /etc/shadow. Si vous editez le
fichier /etc/shadow et qu'un utilisateur change son mot de passe au
meme 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 interactif 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 <
[email protected]> 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 ""
______________________________________________________________________
Utiliser un script pour ajouter des utilisateurs est preferable a
l'edition des fichiers /etc/passwd et /etc/shadow ainsi qu'a
l'utilisation de programmes comme adduser de la distribution
Slackware.
Vous etes libre d'utiliser et de modifier le script a en fonction de
votre systeme.
Pour plus d'informations sur useradd, consultez le manuel en ligne.
77..11..22.. uusseerrmmoodd
Le programme usermod est utilise pour modifier les informations
relatives a un utilisateur. Les options sont les memes que pour
useradd.
Disons que l'on souhaite changer le shell de fred. Vous devrez faire
la chose suivante:
usermod -s /bin/tcsh fred
Maintenant l'entree 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'entree 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.
77..11..33.. uusseerrddeell
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 repertoire d'accueil
d'un utilisateur seront effaces. Les fichiers situes en dehors du
repertoire d'accueil devront etre cherches et effaces manuellement.
Si vous souhaitez simplement verouiller un compte au lieu de
l'effacer, utilisez la commande passwd.
77..22.. LLaa ccoommmmaannddee ppaasssswwdd eett llaa dduurreeee dduu mmoott ddee ppaassssee..
La commande passwd a pour but de changer les mots de passe. De plus,
elle est utilisee par l'utilisateur root pour:
+o Verouiller et deverouiller des comptes (-l et -u),
+o Definir le nombre de jours de validite d'un mot de passe (-x),
+o Definir le nombre de jours minimums pour le changement de mot de
passe (-n),
+o Definir le nombre de jours d'alerte concernant l'expiration d'un
mot de passe(-w),
+o Definir le nombre de jours apres que le mot de passe soit expire
pour verouiller le compte(-i),
+o Permettre de voir les informations concernant un utilisateur dans
un format clair(-S).
Par exemple, jetons un coup d'oeil a fred:
passwd -S fred
fred P 03/04/96 0 60 0 0
Cela signifie que le mot de passe de fred est valide, qu'il a ete
change pour la derniere fois le 04/03/96, qu'il peut etre change a
n'importe quel moment, qu'il expire au bout de 60 jours, que fred ne
sera pas averti, et que le compte ne sera pas verouille lors de
l'expiration du mot de passe.
Cela veut simplement dire que si fred se loge apres l'expiration de
son mot de passe, il lui sera demande de taper un nouveau mot de
passe.
Si nous souhaitons prevenir fred 14 jours avant l'expiration de son
mot de passe, et verouiller son compte 14 jours apres l'avoir laisse
expire, nous devrions faire la chose suivante:
passwd -w14 -i14 fred
Maintenant les informations concernant fred sont changees en:
fred P 03/04/96 0 60 14 14
Pour de plus amples informations concernant passwd, se referer au
manuel en ligne.
77..33.. LLee ffiicchhiieerr llooggiinn..ddeeffss
Le fichier /etc/login.defs est le fichier de configuration du
programme login ainsi que celui de toute le _S_u_i_t_e _S_h_a_d_o_w.
Le fichier /etc/login.defs contient les parametres allant de
l'apparance de l'invite a l'expiration par defaut concernant les mots
de passe utilisateurs.
Le fichier /etc/login.defs est assez bien documente de part ses
propres commentaires. De plus, il y a quelques points a noter:
+o Il contient des drapeaux qui peuvent etre active ou desactive
concernant la taille de journalisation,
+o Il contient des pointeurs sur d'autres fichiers de configuration,
+o Il contient les valeurs par defaut comme la duree d'un mot de
passe.
Des informations precedantes on peut en deduire que c'est un fichier
important, vous devez etre sur qu'il existe et que les valeurs sont
celles que vous desirez pour votre systeme.
77..44.. LLeess mmoottss ddee ppaassssee ppoouurr lleess ggrroouuppeess
Le fichier /etc/groups peut contenir des mots de passe permettant a un
utilisateur de devenir un membre d'un groupe particulier. Cette
fonction est validee si vous validez la constante SHADOWGRP dans le
fichier /usr/src/shadow-AAMMJJ/config.h.
Si vous definissez cette constante et que vous compilez, vous devez
creer 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 cree le fichier /etc/shadow, vous avez utilise un
programme appele pwconv, il n'y a pas d'equivalent pour creer le
fichier /etc/gshadow, mais ce n'est pas grave.
Pour creer le fichier /etc/gshadow initial, faites la chose suivante:
touch /etc/gshadow
chown root.root /etc/gshadow
chmod 700 /etc/gshadow
Une fois que vous creez un nouveau groupe, il sera ajoute dans le
fichier /etc/group ainsi que dans le fichier /etc/gshadow. Si vous
modifiez un groupe en ajoutant, retirant, ou en changeant le mot de
passe du groupe, le fichier /etc/gshadow sera change.
Les programmes groups, groupadd, groupmod, et groupdel sont fournis
dans la _S_u_i_t_e _S_h_a_d_o_w pour modifier les groupes.
Le format du fichier /etc/group est:
groupname:!:GID:member,member,...
ou:
ggrroouuppnnaammee
Le nom du groupe,
!! Le champs contenant normalement le mot de passe qui est
maintenant stocke dans le fichier /etc/gshadow,
GGIIDD
L'identificateur numerique du groupe,
mmeemmbbeerr
La liste des membres du groupe.
Le format du fichier /etc/gshadow est:
groupname:password:admin,admin,...:member,member,...
ou:
ggrroouuppnnaammee
Le nom du groupe,
ppaasssswwoorrdd
Le mot de passe encode,
aaddmmiinn
La liste des administrateurs de groupe,
mmeemmbbeerr
La liste des membres du groupe.
La commande gpasswd est utilisee pour ajouter, retirer des
administrateurs et des membres d'un groupe. root ou un administrateur
du groupe peut ajouter ou retirer des membres du groupe.
Le mot de passe du groupe peut etre change en utilisant le programme
passwd par root ou un administrateur du groupe.
En depit du fait qu'il n'y ait pas encore de page de manuel pour
gpasswd, tapez gpasswd sans parametres 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.
77..55.. PPrrooggrraammmmeess ddee vveerriiffiiccaattiioonn ddee llaa ssttrruuccttuurree
77..55..11.. ppwwcckk
Le programme pwck est fourni pour verifier la coherence des fichiers
/etc/passwd et /etc/shadow. Il verifie chaque nom d'utilisateur ainsi
que les points suivants:
+o Le nombre correct de champs,
+o Nom unique,
+o Nom et groupe valide,
+o Groupe primaire valide,
+o Repertoire d'accueil valide,
+o Shell valide.
Il previent aussi lorsqu'un compte ne possede pas de mot de passe.
C'est une bonne idee de lancer pwck apres avoir installe la _S_u_i_t_e
_S_h_a_d_o_w. C'est aussi une bonne idee de le lancer periodiquement, une
fois par semaine ou par mois. Si vous utilisez l'option -r, vous
pouvez utiliser cron pour lancer une analyse reguliere et avoir un
rapport sous forme de courrier.
77..55..22.. ggrrppcckk
grpck est le programme de verification de la coherance des fichiers
/etc/group et /etc/gshadow. Il effectue les verifications suivantes:
+o Le nombre correct de champs,
+o Unicite du nom de groupe,
+o Validite de la liste des membres et des administrateurs.
Il possede aussi l'option -r pour des rapports automatiques.
77..66.. LLeess mmoottss ddee ppaassssee ""AAcccceess aa ddiissttaannccee""
Les mots de passe "Acces a distance" sont une autre ligne de defense
des systemes permettant la connexion a distance. Si vous avez un
systeme qui permet a des utilisateurs de se connecter localement ou
par l'intermediaire d'un reseau, mais vous voulez controler qui peut
appeler et se connecter, les mots de passe "Acces a distance" sont
pour vous. Pour valider les mots de passe "Acces a distance", vous
devez editer le fichier /etc/login.defs et vous assurer que
DIALUPS_CHECK_ENAB est positionnee a yes.
Les deux fichiers contenant les informations d'acces a distance sont
/etc/dialups et /etc/d_passwd. Le fichier /etc/dialups contient les
terminaux (un par ligne, avec l'entete "/dev/" supprime). Si un
terminal est liste alors, la verification d'acces a distance est
effectuee;.
Le second fichier /etc/d_passwd contient le chemin complet d'un shell,
suivit d'un mot de passe optionnel.
Si un utilisateur se connecte a un terminal decrit dans une ligne du
fichier /etc/dialup et que son shell est liste dans le fichier
/etc/d_passwd alors l'acces lui est autorise en fournissant le mot de
passe correct.
Une autre possibilite utile des mots de passe "Acces a distance" est
de specifier un ligne qui ne permet qu'un certain type de connexion
(PPP, ou UUCP par exemple). Si un utilisateur essaye d'avoir un autre
type de connexion, (ie. une liste de shell), il doit connaitre un mot
de passe pour l'utiliser.
Avant de pouvoir utiliser les possibilites de l'acces a distance, vous
devez creer les fichiers.
La commande dpaswd est fournie pour assigner un mot de passe a un
shell dans le fichier d_passwd. Lisez le manuel en ligne pour de plus
amples informations.
88.. AAjjoouutteerr llee ssuuppppoorrtt sshhaaddooww aa uunn pprrooggrraammmmee eenn CC..
Ajouter le support shadow a un programme C est assez facile. Le seul
probleme est que le programme doit etre lance par root (ou SUID root)
pour qu'il puisse acceder au fichier /etc/shadow.
Ceci presente un reel probleme, il faut faire tres attention lors de
la creation de programmes SUID. Par exemple, il ne faut pas qu'un
programme SUID root puisse permettre un acces au shell.
La meilleure solution pour qu'un programme puisse acceder aux mots de
passe encodes sans etre SUID root, est de lancer ce programme SUID
shadow a la place. C'est le cas par exemple du programme xlock.
Dans l'exemple donne precedemment, pppd-1.2.1d fonctionne deja SUID
root, donc ajouter le support shadow ne le rendra pas plus vulnerable.
88..11.. LLeess ffiicchhiieerrss dd''eenn--tteettee
Les fichiers d'en-tete doivent etre stockes dans le repertoire
/usr/include/shadow. Le fichier /usr/include/shadow.h, doit etre un
lien symbolique vers /usr/include/shadow/shadow.h.
Pour ajouter le support shadow a un programme, vous devez inclure les
fichiers de header:
#include <shadow/shadow.h>
#include <shadow/pwauth.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).
88..22.. LLaa bbiibblliiootthheeqquuee lliibbsshhaaddooww..aa
Quand vous avez installe _l_'_e_n_s_e_m_b_l_e _s_h_a_d_o_w, le fichier libshadow.a a
ete cree et installe dans le repertoire /usr/lib.
Lorsque vous compilez un programme avec le support shadow, vous devez
preciser a l'editeur de liens d'inclure la bibliotheque libshadow.a
dans le lien:
gcc programe.c -o program -lshadow
Ceci dit, et vous le verrez par la suite dans notre exemple, la
plupart des programmes plus ou moins gros utilisent un fichier
Makefile, qui en general, utilise une variable appelee LIBS=... que
vous pourrez modifier.
88..33.. LLaa ssttrruuccttuurree sshhaaddooww
La bibliotheque libshadow.a utilise une structure appelee spwd pour
recuperer les informations contenues dans le fichier /etc/shadow.
Voici la definition 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 */
};
______________________________________________________________________
L'_e_n_s_e_m_b_l_e _s_h_a_d_o_w peut placer des donnees dans le champ sp_pwdp juste
apres le mot de passe encode, le champ password pourrait contenir:
username:Npge08pfz4wuk;@/sbin/extra:9479:0:10000::::
Cela signifie qu'en plus du mot de passe, le programme /sbin/extra
sera appele pour proceder a une authentification supplementaire. Le
programme appele recevra comme argument, le nom d'utilisateur et un
_s_w_i_t_c_h qui indiquera pourquoi il est appele. Regardez le fichier
/usr/include/shadow/pwauth.h et le code source de pwauth.c pour plus
d'informations.
La fonction d'authentification pwauth est toujours utilisee avant la
deuxieme authentification..
88..44.. LLeess ffoonnccttiioonnss SShhaaddooww..
Le fichier shadow.h contient aussi la declaration des fonctions
contenues dans la bibliotheque 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));
extern int putspent __P ((__const struct spwd *__sp, FILE *__fp));
______________________________________________________________________
La fonction que nous allons etudier est getspnam, elle recupere une
structure spwd a partir d'un nom donne.
88..55.. EExxeemmppllee
Voici un exemple d'ajout du support shadow a un programme qui en
necessite mais pour qui ce support n'existe pas par defaut.
Nous allons nous baser sur l'exemple du serveur pppd-1.2.1d ( _S_e_r_v_e_u_r
_P_o_i_n_t_-_t_o_-_P_o_i_n_t _p_r_o_t_o_c_o_l) configure avec l'option _l_o_g_i_n: il va chercher
les mots de passe pour son authentification PAP dans le fichier
/etc/passwd au lieu des fichiers PAP ou CHAP. Vous n'avez pas besoin
d'ajouter ce code a pppd-2.2.0, c'est deja fait.
Bien que cette possibilite de pppd ne soit pas tres utilisee, elle ne
fonctionnera plus des lors que vous aurez installe l'ensemble shadow:
les mots de passe ne sont plus stockes dans /etc/passwd.
La partie du code source d'authentification des utilisateurs avec
pppd-1.2.1d se trouve dans le fichier
/usr/src/pppd-1.2.1d/pppd/auth.c.
Le code qui suit doit etre ajoute au debut du fichier, la ou sont
toutes les autres directives #include.
______________________________________________________________________
#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);
}
______________________________________________________________________
Le mot de passe de l'utilisateur est place dans pw->pw_passwd, donc,
nous devons ajouter la fonction getspnam qui placera le mot de passe
dans spwd->sp_pwdp.
Nous rajouterons la fonction pwauth pour l'authentification actuelle.
Une seconde authentification sera effectuee si le fichier shadow est
configure pour.
Voici la fonction auth.c apres les modifications pour le support de
shadow:
______________________________________________________________________
/*
* 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.
*
* 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);
}
______________________________________________________________________
En examinant precisement le code, vous verrez que d'autres
modifications ont ete effectuees. La version originale autorisait
l'acces (en retournant UPAP_AUTHACK) quand il n'y avait pas de mots de
passe dans le fichier passwd. Il ne fallait _p_a_s laisser ceci car
utilise avec l'option login, pppd utilise le nom d'utilisateur dans
/etc/passwd et le mot de passe dans /etc/shadow pour son
authentification PAP.
Donc si nous avions garde la version originale, n'importe qui aurait
pu etablir une connexion ppp avec un mot de passe vide.
Nous avons arrange ca en retournant UPAP_AUTHNAK a la place de
UPAP_AUTHACK dans le cap ou le champ mot de passe est vide.
A savoir que pppd-2.2.0 possede le meme probleme.
Nous devons modifier le Makefile pour que deux choses soient prises en
compte: USE_SHADOW doit etre defini, et libshadow.a doit etre ajoute
au processus d'edition de liens.
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.
99.. FFooiirree AAuuxx QQuueessttiioonnss
_Q_: J'essaye de controler 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 rien lorsque la
_S_u_i_t_e _S_h_a_d_o_w est installee. Le terminal a partir duquel root peut se
connecter et maintenant situe dans le fichier /etc/login.defs.
L'entree dans ce fichier peut pointer sur un autre fichier.
_Q_: J'ai installe la _S_u_i_t_e _S_h_a_d_o_w, mais je ne peux plus me connecter,
qu'ai-je oublie ?
_R_: Vous avez probablement installe les programmes, mais vous n'avez
tres certainement pas execute pwconv ou bien vous avez oublie de
copier le fichier /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 repertoire /etc/.
_Q_: Dans la section sur xlock, il est dit de positionner le groupe
propietaire du fichier /etc/shadow a shadow. Je n'ai pas de groupe
shadow, comment je fais ?
_R_: Vous pouvez en ajouter un. Editez simplement le fichier /etc/group
et inserez une ligne pour le groupe shadow. Vous devez vous assurer
que le numero du groupe n'est pas deja utilise par un autre groupe, de
plus vous devez l'inserer avant l'entree nogroup. Ou bien vous pouvez
positionner le bit suid du programme xlock a root.
_Q_: Y-a-t'il une liste de diffusion pour la suite Shadow password de
Linux ?
_R_: Oui, mais c'est pour le developpement et les tests des beta
versions de la prochaine Suite Shadow pour Linux. Vous pouvez vous y
inscrire en envoyant un courrier a: shadow-list-
[email protected] avec pour sujet subscribe. La liste est
actuellement en cours de discussion a propos des parutions des series
shadow-AAMMJJ. Vous devriez vous inscrire si vous souhaitez vous
investir dans le developpement ou bien si vous venez d'installer la
suite sur votre systeme et que vous souhaitez vous tenir informe des
nouvelles parutions.
_Q_: J'ai installe la _S_u_i_t_e _S_h_a_d_o_w, mais lorsque j'utilise la commande
userdel, j'obtiens, ``_u_s_e_r_d_e_l_: _c_a_n_n_o_t _o_p_e_n _s_h_a_d_o_w _g_r_o_u_p _f_i_l_e_'_',
qu'est-ce que j'ai fait de travers ?
_R_: Vous avez compile la suite avec l'option SHADOWGRP de valide, mais
vous ne possedez pas de fichier /etc/gshadow. Vous avez besoin
d'editer le fichier config.h et de recompiler la suite. Allez voir la
section sur les groupes shadow.
_Q_: J'ai installe la _S_u_i_t_e _S_h_a_d_o_w mais je retrouve des mot de passe
encodes dans mon fichier /etc/passwd, qu'est-ce qui ne va pas ?
_R_: Soit vous avez compile la suite avec l'option AUTOSHADOW du fichier
config.h, soit votre libc a ete compilee avec l'option SHADOW_COMPAT.
Vous devez determiner quel est votre probleme et recompilez.
1100.. CCooppyyrriigghhtt..
La version originale de ce document est placee sous copyright (c) 1996
de Michael H. Jackson.
Ce document peut etre reproduit et distribue en tout ou partie, sur
tout support physique ou electronique, a condition que cette notice
soit incluse dans chacune des copies.
Il est permis de copier et distribuer des versions modifiees de ce
document dans les conditions ci-dessus. Une notice doit apparaitre
specifiant bien qu'il s'agit d'une version modifiee.
Il est permis de copier et distribuer des versions traduites dans
d'autres langues, dans les conditions generales citees precedemment.
Il est permis de diffuser ce document sous un autre support selon les
clauses stipulees plus haut concernant les versions modifiees du
document, et sous reserve que celle specifiant la disponibilite du
code source soit remplie sous la forme d'une reference evidente sur ce
code dans ce nouveau support. Le proprietaire du copyright se reserve
le droit de trancher lorsqu'il y a le moindre doute sur cette
definition "d'evidence".
1111.. DDiivveerrss eett RReemmeerrcciieemmeennttss
Les exemples de code pour auth.c proviennent de pppd-1.2.1d et
ppp-2.1.0e, Copyright (c) 1993 de l'Universite Nationale D'Australie
et Copyright (c) 1989 de Universite Carnegie Mellon.
Merci a Marek Michalkiewicz <
[email protected]> pour
ecrire et maintenir la _S_u_i_t_e _S_h_a_d_o_w _p_o_u_r _L_i_n_u_x ainsi que pour ses
commentaires sur ce document.
Merci a Ron Tidd <
[email protected]> pour sa precieuse aide et ses
tests.
Merci a tous ceux qui m'ont envoye des commentaires qui ont permis
d'ameliorer ce document.
S'il vous plait, si vous avez des suggestions ou des commentaires,
envoyez-moi un courrier.
amities
Mickael H. Jackson <
[email protected]>