chapitre 32 : authentification des comptes utilisateurs · 2004-08-12 · authentification des...
TRANSCRIPT
Authentification des comptes utilisateurs
Chapitre 32 : Authentification des comptes utilisateurs
Un compte utilisateur :
– définition de son identification pour le système
– définition d’un environnement utilisateur
Opérations possibles :
– création
– modifications
– destruction
Formation permanente – ARS 1
Authentification des comptes utilisateurs Le fichier /etc/passwd
§ 32.1 Le fichier /etc/passwd
Il contient les informations sur les identifications des utilisateurs.
Exemple :
root:U/oeCQo.cmnyc:0:1:Operator:/root:/bin/csh
nobody:*:65534:65534::/:
daemon:*:1:1::/:
sys:*:2:2::/:/bin/csh
bin:*:3:3::/bin:
besancon:vSHntkfqz8MEk:4332:1000::/users/adm/besancon:/bin/bash
...
Formation permanente – ARS 2
Authentification des comptes utilisateurs Format du fichier /etc/passwd, <pwd.h>
§ 32.2 Format du fichier /etc/passwd, <pwd.h>
Le format est composé de 7 champs séparés par le caractére : :
login : mot de passe : UID : GID : gecos : homedir : shell
Pour la définition exacte sur sa machine, se reporter à <pwd.h>.
Par exemple sur Linux :
/* The passwd structure. */
struct passwd
{
char *pw_name; /* Username. */
char *pw_passwd; /* Password. */
__uid_t pw_uid; /* User ID. */
__gid_t pw_gid; /* Group ID. */
char *pw_gecos; /* Real name. */
char *pw_dir; /* Home directory. */
char *pw_shell; /* Shell program. */
};
Formation permanente – ARS 3
Authentification des comptes utilisateurs Format du fichier /etc/passwd, <pwd.h>
– champ 1 : login
Nom sous lequel un ordinateur connait un individu.
8 caractères en général. Pour plus, vérifier
Sur Linux, on peut avoir des noms plus longs que 8.
Conseils : pas de majuscules, éviter les caractères accentués.
– champ 2 : mot de passe
Mot de passe de l’utilisateur stocké sous forme chiffrée non déchiffrable.
Nécessité d’éduquer les utilisateurs pour choisir un bon mot de passe.
Les logiciels de crack de mots de passe ne déchiffrent pas les mots de passe : ils font des essais à
base de dictionnaires.
crack : ftp://ftp.lip6.fr/pub/unix/security/crack5.0.tar.gz john :
ftp://ftp.false.com/pub/security/john/john-1.6.tar.gz
Formation permanente – ARS 4
Authentification des comptes utilisateurs Format du fichier /etc/passwd, <pwd.h>
– champ 3 : UID
Identificateur numérique compris entre 0 et 32767 (short int a priori).
Sur Linux, c’est un __uid_t, un unsigned int.
Cette valeur doit être unique au sein des utilisateurs.
– champ 4 : GID
Identificateur numérique compris entre 0 et 32767 (short int a priori).
Sur Linux, c’est un __gid_t, un unsigned int.
Cette valeur doit être unique au sein des groupes.% ls -ln
-rw-r--r-- 1 4332 1000 5544 Sep 15 22:47 cours.dvi
-rw-r--r-- 1 4332 1000 940 Sep 15 22:27 cours.tex
% ls -l
-rw-r--r-- 1 besancon software 5928 Sep 15 22:49 cours.dvi
-rw-r--r-- 1 besancon software 940 Sep 15 22:27 cours.tex
Formation permanente – ARS 5
Authentification des comptes utilisateurs Format du fichier /etc/passwd, <pwd.h>
– champ 5 : gecos
Identité en clair de l’utilisateur.
Les systèmes BSD y ont stockés d’autres informations comme le numéro de téléphone, le numéro
de bureau etc.
La commande chfn (change finger) permet de modifier ce champs.
– champ 6 : homedir
Répertoire par défaut.
– champ 7 : shell
Shell par défaut.
Si le champ est vide, on prend /bin/sh par défaut.
Le shell déterminera les fichiers de configuration à installer chez l’utilisateur.
La commande chsh (change shell) permet de choisir parmi les shells mentionnés dans
/etc/shells.
Formation permanente – ARS 6
Authentification des comptes utilisateurs Format du fichier /etc/passwd, <pwd.h>
Quelques conseils :
– Il faut toujours trier les lignes de /etc/passwd selon l’ordre numérique des UID :
# sort -t : +2n -3 /etc/passwd
– Il ne faut jamais laisser de comptes sans mot de passe.
Formation permanente – ARS 7
Authentification des comptes utilisateurs Chiffrement des mots de passe, crypt()
§ 32.3 Chiffrement des mots de passe, crypt()
Les mots de passe sont stockés sur une forme chiffrée, mathématiquement non réversible.
Algorithme de chiffrement : DES, standard fédéral de l’administration américaine
Ce chiffrement non réversible est dit hashing (le mot de passe chiffré est dit hashed).
Disponible sur Unix via la fonction C crypt() :
– premier paramètre : la chaine à chiffrer
– second paramètre : la graine (dite salt en anglais) composée de 2 caractères
– résultat renvoyé : une chaine dont les 2 premiers caractères reprennent le salt
Ainsi crypt("QWERTY", "NU") renvoit NUMVcLVD/dM12
Formation permanente – ARS 8
Authentification des comptes utilisateurs Chiffrement des mots de passe, crypt()
Exemple de programme C complet :
#include<stdio.h>
main(int argc, char *argv[])
{
printf("=> %s\n", crypt(getpass("Chaine a chiffrer :"), argv[1]));
}
Une fois compilé, le programme montre :
% ./textCRYPT NU
Chaine a chiffrer : XXXXXXXX <-- QWERTY pour l’exemple
=> NUMVcLVD/dM12
Formation permanente – ARS 9
Authentification des comptes utilisateurs Cycle du mot de passe et commande passwd
§ 32.4 Cycle du mot de passe et commande passwd
La commande pour changer de mot de passe d’un utilisateur dans /etc/passwd est passwd.
Elle appelle crypt() avec un nouveau salt tiré au hasard et avec le nouveau mot de passe entré.
passwd crypt()
randomseedor "salt"
serveur/etc/passwd(/etc/shadow)
hashedpassword
Formation permanente – ARS 10
Authentification des comptes utilisateurs Cycle du mot de passe et commande passwd
� Comportement lorsqu’un utilisateur change un mot de passe
% passwd
passwd: Changing password for besancon
Enter login password: XXXXXXXX
New password: ZZZZZZZZ
Re-enter new password: ZZZZZZZZ
passwd (SYSTEM): passwd successfully changed for besancon
On tache de vérifier l’identité de la personne en demandant le mot de passe initial.
Formation permanente – ARS 11
Authentification des comptes utilisateurs Cycle du mot de passe et commande passwd
� Comportement lorsque l’administrateur root change un mot de passe
# passwd besancon
New password: XXXXXXXX
Re-enter new password: ZZZZZZZZ
passwd (SYSTEM): passwd successfully changed for besancon
Root n’a jamais besoin de connaître le mot de passe d’un utilisateur pour en changer le mot de
passe.
Lorsqu’un utilisateur a perdu son mot de passe :
– root ne peut pas déchiffrer la chaine chiffrée dans /etc/passwd
– root peut changer le mot de passe par passwd groslourd
Formation permanente – ARS 12
Authentification des comptes utilisateurs Cycle du mot de passe et commande passwd
La commande passwd peut comporter plus ou moins de règles de vérification de la sûreté du mot
de passe :
% passwd besancon
Enter login password: XXXXXXXX
New password: XXXXXXXX <-- on entre exprès le même mot de passe
passwd(SYSTEM): Passwords must differ by at least 3 positions
New password: YYYYYYYY <-- mélange de lettres minuscules et majuscules
passwd(SYSTEM): The first 6 characters of the password
must contain at least two alphabetic characters and at least
one numeric or special character.
passwd(SYSTEM): Too many failures - try later.
Permission denied
Formation permanente – ARS 13
Authentification des comptes utilisateurs Cycle du mot de passe et commande login
§ 32.5 Cycle du mot de passe et commande login
La commande lancée par le système pour se connecter est la commande login.
Elle va devoir vérifier si les mots de passe entré et stocké sont identiques, sachant que le mot de
passe est stocké sous une forme hashée.
login
serveur/etc/passwd(ou /etc/shadow)
1. L’utilisateur entrelogin et mot de passe
4. crypt()des donnéesentrées
2. On recupère lastructure pwd del’utilisateur
3. On extraitle salt
5. On extraitle passwd
6. Comparaisonhash stocké ethash calculé
7a. comparaison OK :connexion acceptée
7b. comparaison fausse :connexion refusée
Formation permanente – ARS 14
Authentification des comptes utilisateurs Cycle du mot de passe et commande login
Si le mot de passe hashé est saeLydiaFuF5o, on réalisera donc au login la comparaison C :
strcmp("saeLydiaFuF5o", crypt("XXXXXXXX", "sa"))
avec XXXXXXXX le mot de passe en clair.
Formation permanente – ARS 15
Authentification des comptes utilisateurs Shadow Passwords, /etc/shadow, <shadow.h>
§ 32.6 Shadow Passwords, /etc/shadow, <shadow.h>
L’idée part de la constatation que, si beaucoup de programmes accèdent au contenu de
/etc/passwd pour les informations concernant UID, homedir, shell, peu en revanche l’accèdent
pour le mot de passe.
On supprime donc le mot de passe chiffré du fichier pour le stocker dans un fichier à accès plus
restreints.
-rw-r--r-- root wheel 10557 Sep 15 22:51 /etc/passwd
-rw------- root wheel 13318 Sep 15 22:50 /etc/master.passwd
L’ancien mot de passe chiffré est remplacé par exemple par un caractère comme * ou x :
besancon:x:4332:1000::/users/adm/besancon:/bin/bash
Formation permanente – ARS 16
Authentification des comptes utilisateurs Shadow Passwords, /etc/shadow, <shadow.h>
Plusieurs formats de fichiers shadow sont utilisés par les constructeurs qui ne se sont pas mis
d’accord.
� Linux
Fichiers /etc/passwd et /etc/shadow# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:
daemon:x:2:2:daemon:/sbin:
adm:x:3:4:adm:/var/adm:
...
# cat /etc/shadow
root:fUQZjKzpwayTc:11237:0:99999:7:-1:-1:134540316
bin:*:11237:0:99999:7:::
daemon:*:11237:0:99999:7:::
adm:*:11237:0:99999:7:::
...
Formation permanente – ARS 17
Authentification des comptes utilisateurs Shadow Passwords, /etc/shadow, <shadow.h>
� Solaris Fichiers /etc/passwd et /etc/shadow# cat /etc/passwd
root:x:0:1:Super-User:/:/sbin/sh
daemon:x:1:1::/:
bin:x:2:2::/usr/bin:
...
boumaiza:x:1001:1000:Lyazid Boumaiza:/net/serveur/home/ars/boumaiza:/bin/tcsh
corsini:x:1002:1000:Franck Corsini:/net/serveur/home/ars/corsini:/bin/tcsh
...
# cat /etc/shadow
root:y8fPbbq414TBU:6445::::::
daemon:NP:6445::::::
bin:NP:6445::::::
...
boumaiza:aalJCbuvX/xEM:11255::::::
corsini:5Ag56r/M.KD9A:10912::::::
...
Formation permanente – ARS 18
Authentification des comptes utilisateurs Le fichier /etc/group, <grp.h>
§ 32.7 Le fichier /etc/group, <grp.h>
Le format est composé de 4 champs séparés par le caractére : :
group : mot de passe : GID : membres
Pour la définition exacte sur sa machine, se reporter à <grp.h>.
Par exemple, sur une machine Linux :
/* The group structure. */
struct group
{
char *gr_name; /* Group name. */
char *gr_passwd; /* Password. */
__gid_t gr_gid; /* Group ID. */
char **gr_mem; /* Member list. */
};
Formation permanente – ARS 19
Authentification des comptes utilisateurs Le fichier /etc/group, <grp.h>
– champ 1 : group
Nom du groupe apparaissant par ls -lg.
– champ 2 : mot de passe
Mot de passe du groupe.
– champ 3 : GID
Identificateur numérique compris entre 0 et 32767.
Sur Linux, c’est un __gid_t, un unsigned int.
Cette valeur doit être unique au sein des groupes.
– champ 4 : membres
Liste de noms de login séparés par des virgules.
Formation permanente – ARS 20
Authentification des comptes utilisateurs Création d’un nouveau compte
§ 32.8 Création d’un nouveau compte
Action mécanique automatisable.
Selon le système, elle est déjà automatisée sous la forme d’une commande d’administration :
Système Program
AIX smit
HP-UX sam
Solaris admintool
FreeBSD adduser
etc.
Formation permanente – ARS 21
Authentification des comptes utilisateurs Création d’un nouveau compte
Exemple d’interface graphique de création de compte :
Problème : comment créer 3000 comptes en une après-midi avec cette interface ?
Problème : comment personnaliser cette interface ?
Formation permanente – ARS 22
Authentification des comptes utilisateurs Création d’un nouveau compte
Actions schématiques à accomplir lors de la création d’un compte :
1. choix de l’UID et du GID en fonction du service d’appartenance de la personne
2. choix du homedir (en fonction du service ?)
3. choix du nom de login selon la politique locale
4. choix du shell de login
5. incorporation de ces informations dans la base de données des comptes (/etc/passwd ou
NIS selon la politique du service) ; * comme mot de passe par défaut
Formation permanente – ARS 23
Authentification des comptes utilisateurs Création d’un nouveau compte
6. ajout de l’utilisateur dans /etc/group
7. création du homedir
8. copie des fichiers de configuration de l’environnement (.profile, .cshrc, .xsession
etc.)
9. attribuer le homedir créé à l’utilisateur par chown + chgrp
10. initialisation du mot de passe si l’utilisateur est présent
L’étape délicate dans une automatisation de création de compte est bien sûr l’incorporation d’une
nouvelle ligne dans la base de données.
Formation permanente – ARS 24
Authentification des comptes utilisateurs Compte root
§ 32.9 Compte root
Sa particularité vient de son UID == 0.
Quelques règles :
1. L’utilisateur root n’a pas . dans son PATH (précédence de la commande locale par rapport à
la commande système).
2. L’utilisateur root a 022 pour umask (accessibilité indispensable de certains fichiers par les
utilisateurs normaux).
3. Eviter d’avoir / comme homedir pour root (pollution de / par les fichiers de configuration en
�.foorc�).
Formation permanente – ARS 25
Authentification des comptes utilisateurs Comptes fictifs
§ 32.10 Comptes fictifs
Exemple de Linux :
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:
daemon:x:2:2:daemon:/sbin:
adm:x:3:4:adm:/var/adm:
lp:x:4:7:lp:/var/spool/lpd:
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:
news:x:9:13:news:/var/spool/news:
uucp:x:10:14:uucp:/var/spool/uucp:
operator:x:11:0:operator:/root:
games:x:12:100:games:/usr/games:
gopher:x:13:30:gopher:/usr/lib/gopher-data:
ftp:x:14:50:FTP User:/home/ftp:
nobody:x:99:99:Nobody:/:
xfs:x:43:43:X Font Server:/etc/X11/fs:/bin/false
...
Formation permanente – ARS 26
Authentification des comptes utilisateurs Comptes fictifs
Ces utilisateurs fictifs sont essentiellement des propriétaires de fichiers.
Par exemple bin est le propriétaire de la plupart des exécutables :
-rwxr-xr-x 1 bin bin 40960 Aug 9 1994 stty*
-rws--x--x 1 root bin 24576 Aug 9 1994 su*
-rwxr-xr-x 1 bin bin 24576 Aug 9 1994 sum*
A noter l’emploi du bit s sur la commande su. � son exécution se fait au nom du propriétaire du
fichier, ici root.
Formation permanente – ARS 27
Authentification des comptes utilisateurs Commandes id, groups
§ 32.11 Commandes id, groups
La commande id renvoit votre UID et vos GID, primaire et secondaires :
% id
uid=1000(besancon) gid=4(adm) groups=4(adm),0(root),3(sys),\
12(daemon),1000(sae3),1002(www)
La commande groups renvoit vos GID d’appartenance :
% groups
adm root sys daemon sae3 www
Formation permanente – ARS 28
Authentification des comptes utilisateurs Commande su
§ 32.12 Commande su
La commande su permet de changer d’identité :
su [-] utilisateur2
Vérification par demande du mot de passe de l’utilisateur destination.
Pour hériter complètement de l’identité, utiliser l’option "-" de la commande "su".
Formation permanente – ARS 29
Authentification des comptes utilisateurs Commande su
� Quand on se trompe sur le mot de passe :
% id
uid=4332(besancon) gid=1000(software) groups=1000(software)
% su besancon
Password:
Sorry
� Quand on donne le bon mot de passe :
% id
uid=4332(besancon) gid=1000(software) groups=1000(software)
% su beurnez
Password:
% id
uid=8520(beurnez) gid=8506(lps-06) groups=8506(lps-06)
Formation permanente – ARS 30
Authentification des comptes utilisateurs Commande su
Pour devenir root, la commande est donc simplement :
% su root
ce qui peut se simplifier encore en :
% su
Formation permanente – ARS 31
Authentification des comptes utilisateurs Commande su
Pour hériter complètement de l’identité, utiliser l’option "-" de la commande "su".
� Exemple de transmission de données parasites de la premiére identité à la seconde identité :
% id
uid=4332(besancon) gid=1000(software) groups=1000(software)
% pwd
/users/adm/besancon
% su beurnez
% id
uid=8520(beurnez) gid=8506(lps-06) groups=8506(lps-06)
% pwd
/users/adm/besancon
% printenv
...
MAIL=/var/mail/besancon
...
Certaines variables d’environnement font encore référence à l’identité de départ !
Formation permanente – ARS 32
Authentification des comptes utilisateurs Commande su
� Exemple de non transmission de données parasites de la première identité à la seconde identité :
% id
uid=4332(besancon) gid=1000(software) groups=1000(software)
% pwd
/users/adm/besancon
% su - beurnez
% id
uid=8520(beurnez) gid=8506(lps-06) groups=8506(lps-06)
% pwd
/users/stat/beurnez
% printenv
...
MAIL=/var/mail/beurnez
...
Les variables d’environnement font référence maintenant au second utilisateur exclusivement.
Formation permanente – ARS 33
Authentification des comptes utilisateurs Deviner des mots de passe
§ 32.13 Deviner des mots de passe
L’algorithme DES sert à hasher les mots de passe.
Si l’on a accès au contenu de /etc/shadow (ou /etc/passwd en mode non protégé), on
peut utiliser certains outils pour vérifier la complexité des mots de passe en appliquant des
dictionnaires et des règles d’applications :
– John the ripper, disponible à http://www.openwall.com/john/
– Crack, disponible à http://www.users.dircon.co.uk/~crypto/
Formation permanente – ARS 34
NIS
Chapitre 33 : NIS
NIS � Network Information Service
– Créé par SUN en 1985
– Anciennement Yellow Pages � certaines commandes ont un nom en "yp. . ."
– Version NIS+ vers 1992, radicalement différente (cf annexe)
C’est un protocole réseau d’accès à des informations centralisées sur un ou plusieurs serveurs
redondants.
Utilisation la plus courante : partager la base des comptes Unix.
Formation permanente – ARS 35
NIS Architecture de NIS
§ 33.1 Architecture de NIS
Architecture construite en mode client / serveur :
Client 1 Client 2 Client 3 Client 4
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
Maitre
Esclave 1 Esclave 2
Mise a jour push / pull
Formation permanente – ARS 36
NIS Architecture de NIS
Caractéristiques :
– Communications réseau via RPC (Remote Procedure Call)
– Propagation des données (maps) du master server aux slave servers en mode pull ou en mode
push.
– Propagation des maps complètes
– Seul le master server peut modifier les données
– Les slave servers diffusent les données sans pouvoir les modifier
Formation permanente – ARS 37
NIS Données NIS : maps NIS, DBM, ypcat, ypmatch
§ 33.2 Données NIS : maps NIS, DBM, ypcat, ypmatch
Les données manipulées par NIS : maps
Les maps contiennent des couples (clef, valeur).
Il n’y a que le serveur NIS maître qui peut changer le contenu d’une map.
Une map est au format DBM (cf man dbm) ; une map se compose de 3 fichiers :
– le fichier source
– le fichier de suffixe .pag
– le fichier de suffixe .dir
Formation permanente – ARS 38
NIS Données NIS : maps NIS, DBM, ypcat, ypmatch
La commande makedbm permet de convertir le fichier source en les 2 fichiers constituant le DBM.
% cat demo
clef1 banane
clef2 arbre
% makedbm demo demo
% ls -l demo test*
-rw-r--r-- 1 besancon adm 23 Aug 15 11:56 demo
-rw------- 1 besancon adm 0 Aug 15 11:57 demo.dir
-rw------- 1 besancon adm 1024 Aug 15 11:57 demo.pag
Dans le système NIS, les maps sont stockées sur le master server dans
/var/yp/nom-du-domaine-NIS :
% cd /var/yp/nom-de-domaine-NIS
% ls -l passwd*
-rw------- 1 root other 4096 Nov 23 07:26 passwd.byname.dir
-rw------- 1 root other 8192 Nov 23 07:26 passwd.byname.pag
-rw------- 1 root other 4096 Nov 23 07:26 passwd.byuid.dir
-rw------- 1 root other 8192 Nov 23 07:26 passwd.byuid.pag
Formation permanente – ARS 39
NIS Données NIS : maps NIS, DBM, ypcat, ypmatch
Les maps sont construites automatiquement à partir de tous les fichiers sources des maps :
/etc/hosts
/etc/passwd
makedbm
passwd.byname
passwd.byuid
hosts.byname
hosts.byuid
NISMASTER
Le fichier /var/yp/Makefile automatise toutes les créations de maps et leur propagation aux
slave servers (mode push).
Formation permanente – ARS 40
NIS Données NIS : maps NIS, DBM, ypcat, ypmatch
Extrait de /var/yp/Makefile :
...
hosts.time: $(DIR)/hosts
@($(MULTI) $(B) -l $(DIR)/hosts);
@($(STDHOSTS) $(DIR)/hosts $(CHKPIPE))| \
(awk ’BEGIN { OFS="\t"; } $$1 !~ /^#/ { print $$1, $$0 }’ $(CHKPIPE)) | \
$(MAKEDBM) $(B) - $(YPDBDIR)/$(DOM)/hosts.byaddr;
@touch hosts.time;
@echo "updated hosts";
@if [ ! $(NOPUSH) ]; then $(YPPUSH) -d $(DOM) hosts.byname; fi
@if [ ! $(NOPUSH) ]; then $(YPPUSH) -d $(DOM) hosts.byaddr; fi
@if [ ! $(NOPUSH) ]; then echo "pushed hosts"; fi
...
La construction d’une map se résume alors à (par exemple suite à une modification de
/etc/hosts) :
# vi /etc/hosts
# cd /var/yp
# make hosts
updated hosts
pushed hosts
Formation permanente – ARS 41
NIS Données NIS : maps NIS, DBM, ypcat, ypmatch
La librairie DBM permet de créer des enregistrements de taille maximale 1024 octets :
% man dbm
SunOS/BSD Compatibility Library Functions dbm(3B)
NAME
dbm, dbminit, dbmclose, fetch, store, delete, firstkey,
nextkey - data base subroutines
...
The sum of the sizes of a key/content pair must not exceed
the internal block size (currently 1024 bytes). Moreover
all key/content pairs that hash together must fit on a sin-
gle block. store will return an error in the event that a
disk block fills with inseparable data.
Formation permanente – ARS 42
NIS Données NIS : maps NIS, DBM, ypcat, ypmatch
Quelques noms de maps : passwd.byname, passwd.byuid, group.byname, group.bygid,
publickey.byname, hosts.byaddr, hosts.byname, mail.byaddr, mail.aliases,
services.byname, services.byservicename, rpc.bynumber, rpc.byname,
protocols.bynumber, protocols.byname, networks.byaddr, networks.byname,
netmasks.bymask, netmasks.byaddr, ethers.byname, ethers.byaddr, bootparams,
auto.master, auto.home, auto.direct, auto.src dont les plus utiles sont :
– map passwd
– map group
– map hosts
– map netgroup
Formation permanente – ARS 43
NIS Données NIS : maps NIS, DBM, ypcat, ypmatch
La commande ypcat permet de consulter une map NIS depuis n’importe quel client.
Syntaxe : ypcat map-NIS
La commande ypmatch permet de consulter la valeur d’une ou plusieurs clefs dans une certaine
map NIS depuis n’importe quel client.
Syntaxe : ypmap clef1 clef2... map-NIS
Formation permanente – ARS 44
NIS Client NIS, domainname, ypbind, ypwhich, ypset
§ 33.3 Client NIS, domainname, ypbind, ypwhich, ypset
Un client NIS doit se connecter à un serveur NIS. C’est l’action de binding.
Le binding nécessite :
– de fournir un nom de domaine NIS, le domainname ;
une machine se déclare comme membre du groupe servi par les serveurs NIS
– de préciser la méthode de localisation du serveur NIS : broadcast ou explicite
Formation permanente – ARS 45
NIS Client NIS, domainname, ypbind, ypwhich, ypset
� Nom de domaine
La commande activant le nom de domaine est domainname.
Pour consulter le nom de domaine :
domainname
Pour configurer manuellement le nom de domaine : domainname nom-du-domaine-NIS
Configuration du domainname automatique au démarrage :
– Sur Solaris : renseigner le fichier /etc/defaultdomain
– Sur Linux : renseigner le fichier /etc/sysconfig/networkNETWORKING=yes
FORWARD_IPV4=false
HOSTNAME=pcars6.formation.jussieu.fr
DOMAINNAME=formation.jussieu.fr
GATEWAY=134.157.253.126
GATEWAYDEV=eth0
NISDOMAIN=real.world
Formation permanente – ARS 46
NIS Client NIS, domainname, ypbind, ypwhich, ypset
� Réalisation du binding
Un client NIS fait tourner le démon ypbind qui se connecte à un serveur NIS que l’on trouve selon
2 méthodes possibles :
– découverte par broadcast ; c’est le mode par défaut.
Sur Solaris, /usr/lib/netsvc/yp/ypbind -broadcast
En pratique il y a une map ypservers qui contient les noms des serveurs.
Cf /var/yp/binding/nom-de-domaine-NIS/ypservers
– demande de connexion explicite
Sur Solaris faire :
# ypbind -ypsetme
# ypset nom-du-serveur-NIS-voulu
La commande ypwhich affiche le nom du serveur NIS utilisé.
Formation permanente – ARS 47
NIS Client NIS, domainname, ypbind, ypwhich, ypset
On peut controler un peu quels sont les clients qui se bindent aux servers.
Pour cela, remplir sur les slave servers et sur le master server le fichier
/var/yp/securenets. Il liste les machines autorisées, sous forme adresses et netmasks.
Par exemple :
159.169.0.0 255.255.0.0
129.187.135.0 255.255.255.0
Signification : seules les machines des réseaux 159.169.0.0/16 et 129.187.135.0/24
sont autorisées à se binder.
Formation permanente – ARS 48
NIS Client NIS, domainname, ypbind, ypwhich, ypset
� Consultation des maps
Un client NIS doit indiquer quels maps il utilisera. La plus courante est la map passwd dont on
indique l’utilisation par l’ajout d’une ligne en fin de fichier /etc/passwd :
+::65534:65534:::
Signification de cette ligne supplémentaire (à vérifier sur chaque système car il existe des
différences) :
Tout champ renseigné de cette ligne + remplace le même champ de la map
inconditionnellement sauf pour UID et GID.
Pour UID et GID, les valeurs mentionnées s’activeront si ces champs sont absents de la map
(c’est-à-dire quand la map est vérolée ce qui indique un problème de fichier source vérolé).
Formation permanente – ARS 49
NIS Client NIS, domainname, ypbind, ypwhich, ypset
Exemple :
+:*LK*:65534:65534:::/usr/local/bin/tcsh
Signification :
– le passwd chiffré des utilisateurs de la map passwd est *LK*
– l’UID sera 65534 si l’entrée de la map ne précise pas d’UID
– le GID sera 65534 si l’entrée de la map ne précise pas de GID
– le shell de login est mis automatiquement à /usr/local/bin/tcsh
Formation permanente – ARS 50
NIS Slave server NIS, ypserv, ypxfr
§ 33.4 Slave server NIS, ypserv, ypxfr
Un serveur NIS esclave fait tourner plusieurs démons :
– ypserv
– ypbind
Le démon ypserv est là pour répondre aux requêtes des client NIS qui se sont bindés sur lui.
Le démon ypbind n’est là que pour faire du slave server un client NIS aussi (mais ce n’est pas
obligatoire).
Il n’est pas garanti que le slave server soit client NIS de lui même. Il peut se binder sur un autre
serveur NIS du même domaine.
Formation permanente – ARS 51
NIS Slave server NIS, ypserv, ypxfr
Un slave server peut être down au moment où un master slave fait un push des maps.
� besoin pour le slave server de se resynchroniser avec le master server ;
pull des maps de la part du slave server
Cela se fait au moyen de shell scripts lancés périodiquement via la crontab :
30 * * * * /usr/lib/netsvc/yp/ypxfr_1perhour
31 1,13 * * * /usr/lib/netsvc/yp/ypxfr_2perday
32 1 * * * /usr/lib/netsvc/yp/ypxfr_1perday
Ces scripts récupérent plus ou moins de maps suivant la fréquence de leur lancement.
Exemple de l’un de ces shell scripts, ypxfr_1perhour :
#! /bin/sh
# ypxfr_1perhour.sh - Do hourly NIS map check/updates
PATH=/bin:/usr/bin:/usr/lib/netsvc/yp:$PATH
export PATH
ypxfr passwd.byname
ypxfr passwd.byuid
Formation permanente – ARS 52
NIS Master server NIS, ypxfrd, rpc.yppasswdd, yppasswd
§ 33.5 Master server NIS, ypxfrd, rpc.yppasswdd, yppasswd
Un serveur NIS maître fait tourner plusieurs démons :
– ypserv
– ypbind
– ypxfrd
– rpc.yppasswdd
Même rôle pour ypserv que pour un slave server.
Même rôle pour ypbind que pour un slave server.
Le démon ypxfrd assure les transferts de maps demandés par les slave servers (mode pull). (en
Unix, on rencontre souvent le mot xfr pour transfert)
Le démon rpc.yppasswdd assure le changement des mots de passe.
Formation permanente – ARS 53
NIS Master server NIS, ypxfrd, rpc.yppasswdd, yppasswd
Avec NIS, un client NIS ne peut pas modifier le contenu d’une map.
Pour changer un mot de passe, on va émuler le changement du mot de passe sur le master server
dans son fichier source (/etc/passwd) puis la reconstruction de la map passwd et sa
transmission en totalité aux slave servers.
Ce processus se réalise en utilisant la commande yppasswd qui demande les mots de passe à
l’utilisateur puis appelle rpc.yppasswdd sur le master server qui simule la session interactive
composée des commandes :
# passwd
# cd /var/yp
# make passwd
Formation permanente – ARS 54
NIS Master server NIS, ypxfrd, rpc.yppasswdd, yppasswd
Sur un client NIS Linux :
% yppasswd
Changing NIS account information for besancon on serveur.
Please enter old password: ********
Changing NIS password for besancon on serveur.
Please enter new password: ********
Please retype new password: ********
The NIS password has been changed on serveur.
Sur un master server NIS Solaris :
% yppasswd
Enter login(NIS) password: ********
New password: ********
Re-enter new password: ********
NIS passwd/attributes changed on serveur
Formation permanente – ARS 55
NIS Netgroups
§ 33.6 Netgroups
Le système NIS permet de définir des groupes d’autorisation d’accès : les netgroups. Ces groupes
sont diffusés via la map netgroup.
Un netgroup est un nom symbolique associé à un ensemble de triplets (je n’ai jamais vu le troisième
champ avoir une quelconque utilité en pratique) :
nom-de-netgroup \
(machine, utilisateur, nom-de-domaine-NIS) \
(machine, utilisateur, nom-de-domaine-NIS) \
...
On définit en pratique des netgroups concernant des machines et des netgroups concernant des
utilisateurs. On autorisera ainsi ou pas des groupes d’utilisateurs ou de machines à accéder à
certaines ressources.
Formation permanente – ARS 56
NIS Netgroups
Exemple de netgroup de machines :
nains \
(atchoum.phys.ens.fr,,physique) \
(dormeur.phys.ens.fr,,physique) \
(joyeux.phys.ens.fr,,physique) \
(grincheux.phys.ens.fr,,physique) \
(prof.phys.ens.fr,,physique) \
(timide.phys.ens.fr,,physique) \
(simplet.phys.ens.fr,,physique)
Exemple de netgroup d’utilisateurs :
etudiants \
(,jean,) \
(,pierre,) \
(,valerie,)
Formation permanente – ARS 57
NIS Netgroups
Exemple d’utilisation d’un netgroup d’utilisateurs au niveau de /etc/passwd :
field:PASSWORD HERE:0:1:Field Service:/usr/field:/bin/csh
operator:PASSWORD HERE:5:28:Operator:/opr:/opr/opser
sys:PASSWORD HERE:2:3:Mr Kernel:/usr/sys:
bin:PASSWORD HERE:3:4:Mr Binary:/bin:
pot:*:16:16:MenuPot:/users/staffs/pot:
-@etudiants:
+@net_administrateurs::0:0:::
+@net_utilisateurs::65534:65534:::/bin/noshell
Signification :
– On rejette les lignes de la map passwd dont le login est indiqué dans le netgroup etudiants
– On accepte les lignes de la map passwd dont le login est indiqué dans le netgroup
net_administrateurs
– On accepte les lignes de la map passwd dont le login est indiqué dans le netgroup
net_utilisateurs
Formation permanente – ARS 58
NIS Netgroups
Exemple d’utilisation d’un netgroup de machines au niveau de l’exportation de disques via NFS
(fichier /etc/exports, cf chapitre sur NFS) :
/usr/openwin -access=nains
Formation permanente – ARS 59
NIS Installation de NIS
§ 33.7 Installation de NIS
�Master server
Lancer ypinit -m
� Slave servers
Lancer ypinit -s master-server
Ajouter dans la crontab les appels aux scripts ypxfr_*
� Client NIS
Spécifier le domainname
Formation permanente – ARS 60
NIS+
Chapitre 34 : NIS+
Cf annexe pour un document sur NIS+.
Nous n’évoquerons ici que les défauts de NIS ayant conduit à l’apparition de son successeur, NIS+.
Le système NIS+ n’a pas connu de succès et il est maintenant officiellement abandonné au profit de
LDAP par son principal défenseur, SUN.
Principaux reproches à NIS :
– pas d’authentification du client aux serveurs NIS ; connaitre le domainname suffit à se binder
– les maps sont transmises en totalité même en cas de faible modification de leurs contenus
– inadaption du principe du domaine NIS dans le cas de structures WAN
– mode broadcast
Formation permanente – ARS 61
LDAP
Chapitre 35 : LDAP
§ 35.1 Problématique
Cas de l’université de Paris 4 :
– base Microsoft Excel du personnel administratif
– base Microsoft Access du personnel enseignant
– base /etc/passwd des comptes email des utilisateurs
– base mysql des 2 catégories de personnel
– prochainement logiciel à base d’Oracle
– prochainement Microsoft Active Directory
Date XYZ : envoyer un email à tous les personnels administratifs sachant que le service du
personnel ne fournira qu’une liste avec nom et prénom. Comment l’ingénieur système fait-il ?
Date XYZ2 : envoyer un email à tous les personnels administratifs sauf ceux du site de Clignancourt,
sachant que le service du personnel ne peut pas fournir de liste cette fois-ci. Comment l’ingénieur
système fait-il ?
Formation permanente – ARS 62
LDAP Principe d’annuaire
§ 35.2 Principe d’annuaire
Un annuaire informatique est un service permettant d’accéder à des informations, relatives à des
personnes ou à diverses ressources de façon organisée.
Objectif : maintenir de façon cohérente et contrôlée les archipels de données et obtenir des données
de référence.
Un annuaire n’est pas une base de données relationnelles.
Une base de données (SGBD) se caractérise par :
– Le schéma des données est défini à 100% pour résoudre un certain problème.
– Les applications connaissent explicitement le schéma des données.
– Les objets sont complexes et éclatés entre plusieurs tables liées par des relations complexes.
– Un SGBD supporte les transactions.
– Un SGBD supporte un langage comme SQL qui permet des fonctions d’interrogation et de mises à
jour très complexes.
– Un SGBD centralise les données pour éviter les problèmes de synchronisation de données et de
qualité des temps de réponse.
Formation permanente – ARS 63
LDAP Principe d’annuaire
Un annuaire se caractérise par :
– Les objets sont indépendants (pas de liens de dépendance entre eux).
– Les objets peuvent être distribué sur plusieurs annuaires pour assurer une meilleure disponibilité.
– Le schéma est standardisé pour pouvoir partager les données.
– Le schéma est extensible pour prendre en compte tous les besoins mais cela est fait de façon
compatible avec les standards.
– Les applications d’annuaire ignorent la structure interne des données.
– Un annuaire est principalement consulté en lecture et est optimisé pour cela.
Formation permanente – ARS 64
LDAP Annuaire LDAP
§ 35.3 Annuaire LDAP
LDAP � Lightweight Directory Access Protocol
Héritier de l’annuaire ISO X500.
Version 3 actuellement. RFC 2251 à 2256, RFC 2829 à 2830, RFC 2849.
Il n’y a pas de standard de représentation des contrôles d’accès aux données.
LDAP :
– nom d’un protocole
– nom d’une structure de données
– nom d’implémentations de serveurs suivant le protocole
Confusion possible. . .
Formation permanente – ARS 65
LDAP Modèle de données de LDAP : DIT, suffixe
§ 35.4 Modèle de données de LDAP : DIT, suffixe
Les entrées sont organisées sous forme d’arbre ou DIT (Directory Information Tree).
L’une des difficultés de LDAP : construire l’organisation du DIT. De quoi est-il le reflet ?
DIT à caractère organisationnel ?
dc=company,dc=com
dc=marketingdc=financedc=recherche
dc=people
dc=groups
dc=people
dc=groups
dc=people
dc=groups
Formation permanente – ARS 66
LDAP Modèle de données de LDAP : DIT, suffixe
DIT à caractère géographique ?
dc=company,dc=com
dc=people
dc=groups
dc=people
dc=groups
dc=people
dc=groups
dc=america dc=europe dc=asia
Pas de solution universelle.
Formation permanente – ARS 67
LDAP Modèle de données de LDAP : DIT, suffixe
La racine de l’arbre est uniquement conceptuelle et n’existe pas réellement. C’est le suffixe qui sert
à déterminer les adresses absolues des objets (comme / pour l’arborescence des fichiers Unix).
dc=company,dc=com
dc=marketingdc=financedc=recherche
dc=people
dc=groups
dc=people
dc=groups
dc=people
dc=groups
SUFFIXE
Le suffixe peut avoir plusieurs formes :
– forme 1 : o=company.com
– forme 2 : o=company,c=fr
– forme 3 : dc=company,dc=com
On préférera la 3ième forme, ayant un certain rapport avec les noms de domaine DNS.
Formation permanente – ARS 68
LDAP Modèle de données de LDAP : DIT, suffixe
Exemple de DIT visualisé avec LdapBrowser disponible à l’URL
http://www.iit.edu/~gawojar/dap/ :
Formation permanente – ARS 69
LDAP Modèle de données de LDAP : entrée, attributs, DN, URL
§ 35.5 Modèle de données de LDAP : entrée, attributs, DN, URL
DSE � Directory Service Entry
Les entrées dans le DIT (DSE) sont des agrégats d’attributs monovalués ou multivalués qui
permettent de stocker n’importe quel format de données (prénom, numéro de téléphone, image, son,
etc.)
Les DSE sont stockées dans le DIT et arrangés selon leur identifiant unique, le DN (Distinguished
Name). Un DN est la concaténation d’un RDN (Relative DN) et du DN des parents. Un DN
s’apparente à une clef primaire.
suffixe : dc=company,dc=com
RDN : ou=Recherche DN : ou=Recherche,dc=company,dc=com
RDN : uid=besancon DN : uid=besancon,ou=Recherche,dc=company,dc=com
(le RDN doit être un des attributs/valeurs du DSE)
Formation permanente – ARS 70
LDAP Modèle de données de LDAP : entrée, attributs, DN, URL
Formation permanente – ARS 71
LDAP Modèle de données de LDAP : entrée, attributs, DN, URL
Il existe des URL LDAP (RC 2255) qui prennent la forme :
ldap://serveur:389/DN
Par exemple dans communicator de netscape :
Formation permanente – ARS 72
LDAP Modèle de données de LDAP : schéma, syntaxes, OID, objectclass
§ 35.6 Modèle de données de LDAP : schéma, syntaxes, OID, objectclass
Le schéma du DIT regroupe les définitions relatives aux types d’objets que peut contenir l’annuaire
ou que l’on peut rechercher.
Le schéma contiendra des objets instanciations de classes LDAP, les définitions de ces classes et
de leurs attributs, les syntaxes de ces attributs.
Tous ces éléments seront identifiés par des Object Identifiers dits OID.
attributetype ( 1.3.6.1.1.1.1.0 NAME ’uidNumber’
DESC ’An integer uniquely identifying a user in a domain’
EQUALITY integerMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )
objectclass ( 1.3.6.1.1.1.2.0 NAME ’posixAccount’ SUP top AUXILIARY
DESC ’Abstraction of an account with POSIX attributes’
MUST ( cn $ uid $ uidNumber $ gidNumber $ homeDirectory )
MAY ( userPassword $ loginShell $ gecos $ description ) )
(1.3.6.1.1.1.1.0 et 1.3.6.1.4.1.1466.115.121.1.27 sont des OIDS)
Formation permanente – ARS 73
LDAP Modèle de données de LDAP : schéma, syntaxes, OID, objectclass
Une syntaxe est un modèle de représentation des valeurs de l’attribut. Par exemple booléen, entier,
binaire (pour une image, un son), etc.
L’attribut objectclass spécifie la liste des classes qu’instancie un DSE. Chaque classe va
construire la structure du DSE en spécifiant une liste d’attributs obligatoirement présents (MUST
dans l’objectclass) et une liste d’attributs facultatifs (MAY dans l’objectclass).
objectclass ( 2.16.840.1.113730.3.2.2
NAME ’inetOrgPerson’ DESC ’RFC2798: Internet Organizational Person’
SUP organizationalPerson STRUCTURAL
MAY (
audio $ businessCategory $ carLicense $ departmentNumber $
displayName $ employeeNumber $ employeeType $ givenName $
homePhone $ homePostalAddress $ initials $ jpegPhoto $
labeledURI $ mail $ manager $ mobile $ o $ pager $
photo $ roomNumber $ secretary $ uid $ userCertificate $
x500uniqueIdentifier $ preferredLanguage $
userSMIMECertificate $ userPKCS12 ) )
objectclass ( 1.3.6.1.1.1.2.0 NAME ’posixAccount’ SUP top AUXILIARY
DESC ’Abstraction of an account with POSIX attributes’
MUST ( cn $ uid $ uidNumber $ gidNumber $ homeDirectory )
MAY ( userPassword $ loginShell $ gecos $ description ) )
� l’attribut uid sera de type MUST.
Formation permanente – ARS 74
LDAP Modèle de données de LDAP : schéma, syntaxes, OID, objectclass
Les objectclass de LDAP s’inscrivent dans un hiérarchie dont la racine est l’objectclass top.
Chaque classe hérite d’une seule classe mère.
Chaque classe peut donner lieu à plusieurs sous classes.
(Abstract)
top
(Structural)
person(Auxiliary)
companyPerson
(Structural)
residentialPerson
(Structural)
organizationalPerson
Formation permanente – ARS 75
LDAP Protocole LDAP / Bind
§ 35.7 Protocole LDAP / Bind
Au niveau réseau :
– LDAP : TCP port 389
– LDAP + SSL : TCP port 636
– ( syntaxe LDAP au format ASN.1 ) + BER
Un dialogue LDAP s’établit après une phase d’ouverture de session dite bind.
Le bind peut être anonyme ou authentifié.
Formation permanente – ARS 76
LDAP Format de données LDIF
§ 35.8 Format de données LDIF
Problème : comment manipuler les objets LDAP en pratique ?
Réponse : en les manipulant au format LDAP Data Interexchange Format, dit LDIF
LDIF n’intervient pas dans le protocole LDAP (pas de mention dans les RFC par exemple).
LDIF n’est compris que par les utilitaires qui le convertissent en protocole LDAP.
Formation permanente – ARS 77
LDAP Format de données LDIF
Attention aux caractères non ASCII :
– si la valeur d’un attribut est uniquement composé de caractères ASCII, on l’écrit
attribut : valeur
– si la valeur d’un attribut contient des caractères non ASCII, il faut coder cette valeur en Base64
puis la coder en UTF-8 et écrire au final attribut :: valeur2
Par exemple l’attribut description de valeur
Université de Paris-Sorbonne, Paris 4
ne sera pas codé en LDIF sous la forme
description: Université de Paris-Sorbonne, Paris 4
mais sous la forme
description:: VW5pdmVyc2l0w6kgZGUgUGFyaXMtU29yYm9ubmUsIFBhcmlzIDQ=!
Notez les différences !
2 utilitaires pratiques :
http://docs.univ-nancy2.fr/ldap/OutilsPERL/DecodLDIF.pl
http://docs.univ-nancy2.fr/ldap/OutilsPERL/EncodLDIF.pl
Formation permanente – ARS 78
LDAP Format de données LDIF
Exemple d’une DSE avec des caractères accentués non encore codés en LDIF :
dn: ou=Personnel,dc=paris4,dc=sorbonne,dc=fr
objectclass: top
objectclass: organizationalUnit
ou: Personnels de l’Université de Paris-Sorbonne, Paris 4
businessCategory: academic research
telephoneNumber: +33 (0) 1 40 46 22 11
facsimileTelephoneNumber: +33 (0) 1 40 46 25 88
postOfficeBox: Université de Paris-Sorbonne, Paris 4
postalCode: F-75230
postalAddress: 1 rue Victor Cousin
l: Paris, France
description: Université de Paris-Sorbonne, Paris 4
Exemple d’une DSE au format LDIF :dn: ou=Personnel,dc=paris4,dc=sorbonne,dc=fr
objectclass: top
objectclass: organizationalUnit
ou:: UGVyc29ubmVscyBkZSBsJ1VuaXZlcnNpdMOpIGRlIFBhcmlzLVNvcmJvbm5lLCBQYXJpcyA0
businessCategory: academic research
telephoneNumber: +33 (0) 1 40 46 22 11
facsimileTelephoneNumber: +33 (0) 1 40 46 25 88
postOfficeBox:: VW5pdmVyc2l0w6kgZGUgUGFyaXMtU29yYm9ubmUsIFBhcmlzIDQ=
postalCode: F-75230
postalAddress: 1 rue Victor Cousin
l: Paris, France
description:: VW5pdmVyc2l0w6kgZGUgUGFyaXMtU29yYm9ubmUsIFBhcmlzIDQ=Formation permanente – ARS 79
LDAP Implémentations
§ 35.9 Implémentations
Il existe plusieurs implémentations de LDAP :
– OpenLdap, http://ww.openldap.org, version 2.1.3 (au 21 août 2002)
– Iplanet Directory (anciennement Netscape Directory Server, racheté par SUN), incorporé de base
dans Solaris 8 et ultérieur
– Novell Directory Services, version 4 ?
Les différentes implémentations respectent les normes du protocole. Par contre, elles différent au
niveau de tout ce qui n’est pas norme. En particulier, les droits d’accès aux données sont codés de
façon incompatible.
Formation permanente – ARS 80
LDAP OpenLDAP
§ 35.10 OpenLDAP
Cf http://www.openldap.org/
Les versions 2.x.y d’OpenLDAP sont compatibles avec les normes de LDAP v3.
Le logiciel se compose de :
– du serveur LDAP slapd
– du serveur de synchronisation slurpd
– d’utilitaires (slapadd ldapsearch, ldapadd, ldapdelete, ldapmodify,
ldappasswd, etc.)
– librairies, include LDAP
– un fichier de configuration slapd.conf dans lequel on définit le suffixe, le rootDN, le mot de
passe du rootDN
Formation permanente – ARS 81
LDAP OpenLDAP
Le mécanisme de réplication de serveurs OpenLDAP est le suivant :
slurpd
1) demande de modification
2) réponse : referral
3) demande de modification
4) réponse (OK/not OK)
slapd
(Esclave)
slapd
(Maitre)
Journal desmodifications
client
5)
6)
7)
Formation permanente – ARS 82
LDAP ObjectClass posixAccount, shadowAccount
§ 35.11 ObjectClass posixAccount, shadowAccount
Cf RFC2307
Cf le schéma nis.schema dans OpenLDAP.
L’objectclass posixAccount est l’objet qui implémente l’équivalent de la structure C de
<pwd.h> :
objectclass ( 1.3.6.1.1.1.2.0 NAME ’posixAccount’ SUP top AUXILIARY
DESC ’Abstraction of an account with POSIX attributes’
MUST ( cn $ uid $ uidNumber $ gidNumber $ homeDirectory )
MAY ( userPassword $ loginShell $ gecos $ description ) )
L’objectclass shadowAccount est l’objet qui implémente le principe des shadow passwds :
objectclass ( 1.3.6.1.1.1.2.1 NAME ’shadowAccount’ SUP top AUXILIARY
DESC ’Additional attributes for shadow passwords’
MUST uid
MAY ( userPassword $ shadowLastChange $ shadowMin $
shadowMax $ shadowWarning $ shadowInactive $
shadowExpire $ shadowFlag $ description ) )
Formation permanente – ARS 83
LDAP Un peu de bibliographie
§ 35.12 Un peu de bibliographie
– http://docs.univ-nancy2.fr/ldap/
– http://www.openldap.org/
– http://www.linux-france.org/article/serveur/ldap/
– http://www.unich.edu/~dirsvc/ldap/
– http://www.redbooks.ibm.com
– http://www-sop.inria.fr/semir/personnel/Laurent.Mirtain/LDAP.html
– http://www.cru.fr/ldap/
– http://www.ldapcentral.com
– http://www.rage.net/ldap/
– http://www.annuairesldap.com
Formation permanente – ARS 84
Sélection de naming services, /etc/nsswitch.conf
Chapitre 36 : Sélection de naming services, /etc/nsswitch.conf
§ 36.1 Problématique
Exemple :
– il y a les fichiers système (/etc/passwd, /etc/hosts, /etc/services, . . .)
– il y a le DNS
– il y a NIS
– il y a NIS+
– il y a LDAP
– etc.
Comment choisir quels services répondront aux requêtes de recherche de nom ?
Une solution : préciser quels naming services seront utilisés et dans quel ordre au niveau du fichier
/etc/nsswitch.conf (naming service switch).
Formation permanente – ARS 85
Sélection de naming services, /etc/nsswitch.conf Syntaxe de /etc/nsswitch.conf
§ 36.2 Syntaxe de /etc/nsswitch.conf
Le fichier est au format suivant :
service: source [ status=action status=sction... ] source...
avec :
– pour source l’un des mots clef files, dns, ldap, nis, nisplus, xfn (liste à vérifier selon
les systèmes Unix offrant plus ou moins de ces services)
– pour status l’un des mots clef suivants :
– SUCCESS, entrée recherchée trouvée
– NOTFOUND, entrée recherchée non trouvée
– UNAVAIL, la source n’est pas configurée sur ce système ou bien elle est défaillante
– TRYAGAIN, la source est occupée et ne peut pas répondre actuellement, peut-être plus tard
Formation permanente – ARS 86
Sélection de naming services, /etc/nsswitch.conf Syntaxe de /etc/nsswitch.conf
– pour action l’un des mots clefs :
– return, retourner la valeur trouvée ou la non valeur
– continue, essayer la source suivante
– forever (uniquement pour TRYAGAIN), persister sur cette source jusqu’à avoir une
réponse
Par défaut, on a pour chaque source :
[SUCCESS=return NOTFOUND=continue UNAVAIL=continue TRYAGAIN=forever]
Formation permanente – ARS 87
Sélection de naming services, /etc/nsswitch.conf Exemple de /etc/nsswitch.conf
§ 36.3 Exemple de /etc/nsswitch.conf
(pris sur SOLARIS)
passwd: files ldap
group: files ldap
hosts: ldap [NOTFOUND=return] files
ipnodes: files
networks: ldap [NOTFOUND=return] files
protocols: ldap [NOTFOUND=return] files
rpc: ldap [NOTFOUND=return] files
ethers: ldap [NOTFOUND=return] files
netmasks: ldap [NOTFOUND=return] files
bootparams: ldap [NOTFOUND=return] files
publickey: ldap [NOTFOUND=return] files
netgroup: ldap
automount: files ldap
aliases: files ldap
# for efficient getservbyname() avoid ldap
services: files ldap
sendmailvars: files
# role-based access control
auth_attr: files ldap
exec_attr: files ldap
prof_attr: files ldap
user_attr: files ldap
# audit
audit_user: files ldap
project: files ldap
Formation permanente – ARS 88
Sélection de naming services, /etc/nsswitch.conf A propos de LDAP
§ 36.4 A propos de LDAP
Pour les systèmes n’incorporant pas LDAP en natif dans l’OS, se reporter à :
– http://www.padl.com/download/nss_ldap.tgz
– http://www.openldap.org/
Formation permanente – ARS 89
Pluggable Authentification Module, PAM
Chapitre 37 : Pluggable Authentification Module, PAM
§ 37.1 Problématique
Exemple :
– Soit une machine dans une université, hébergeant les comptes de 10 professeurs et de 1000
élèves.
– La machine est équipée d’un modem.
– Les professeurs sont autorisés à se connecter à la machine par modem, pas les élèves.
– La machine est cliente NIS.
– Quand on se connecte par modem sur une machine, le système lance la commande login
lorsque la connexion s’établit.
Comment implémenter cela ?
En modifiant le programme login pour l’adapter à ce cas très particulier ? ? ?
Formation permanente – ARS 90
Pluggable Authentification Module, PAM Problématique
La problématique en général :
Comment changer une méthode d’authentification dans un programme (par exemple FTP) sans avoir
à tout reprogrammer ?
Une solution développée par SUN à l’origine et reprise et encouragée dans Linux :
Pluggable Authentification Module dit PAM
Formation permanente – ARS 91
Pluggable Authentification Module, PAM Principe de PAM
§ 37.2 Principe de PAM
L’authentication fait appel par l’intermédiaire de PAM à des modules externes de code
d’authentification appropriée selon le service. On déporte l’authentification en dehors du programme.
4 catégories de modules PAM :
– module d’authentification (authentication)
fonctionnalités pour authentifier un utilisateur et définir ses créances
– module de gestion de compte (account management)
fonctionnalités pour déterminer si l’utilisateur dispose d’un compte valide (car possibilité
d’expiration de mot de passe dit password aging, de restrictions d’accès horaire)
– module de gestion de session (session management)
fonctionnalités pour définir et terminer les sessions utilisateur
– module de gestion de mot de passe (password management)
fonctionnalités pour changer un mot de passe utilisateur et certaines caractéristiques du compte
Pour une certaine application, on organise les modules nécessaires sous forme d’une pile et chaque
module de la pile va être essayé pour constituer l’authentification demandée.
Selon la configuration, un utilisateur pourra être amené à rentrer plusieurs mots de passe.
Formation permanente – ARS 92
Pluggable Authentification Module, PAM Fichier de configuration /etc/pam.conf
§ 37.3 Fichier de configuration /etc/pam.conf
/etc/pam.conf définit quels modules seront utilisés pour chaque application.
(Sur Linux, on trouve aussi le répertoire /etc/pam.d qui contient un fichier par application portant le nom de
l’application. Ainsi /etc/pam.d/login pour le service login.)
Une ligne de /etc/pam.conf contient 5 champs :
service_name module_type control_flag module_path options
– Le service_name nomme le service concerné par la ligne (other pour service joker)
– Le module_type est l’un des 4 mots clef : auth, account, session, password
– Le control_flag est l’un des 4 mots clef : requisite, required, optional,
sufficient
– Le module_path est le chemin du module.
– Les options dépendent du module.
Formation permanente – ARS 93
Pluggable Authentification Module, PAM Fichier de configuration /etc/pam.conf
Par exemple, le service login fait appel aux modules suivants :
# Authentication management
login auth required /usr/lib/security/pam_unix.so.1
login auth required /usr/lib/security/pam_dial_auth.so.1
# Account management
login account requisite /usr/lib/security/pam_roles.so.1
login account required /usr/lib/security/pam_projects.so.1
login account required /usr/lib/security/pam_unix.so.1
# Session management
other session required /usr/lib/security/pam_unix.so.1
# Password management
other password required /usr/lib/security/pam_unix.so.1
Formation permanente – ARS 94
Pluggable Authentification Module, PAM Directives d’essai des modules
§ 37.4 Directives d’essai des modules
Les directives possibles d’essai des modules sont :
– directive required
la valeur de retour de ce module doit être PAM_SUCCESS pour sortir de la pile d’authentification
avec succès ; PAM_AUTH_ERR fera recommencer toute la pile
– directive requisite
une valeur de retour PAM_AUTH_ERR fait sortir de la pile d’authentification prématurément en
échec
– directive optional
si ce module échoue, on sortira de la pile avec succès si un autre module dans la pile réussit
– directive sufficient
une valeur de retour PAM_SUCCESS de ce module fait sortir de la pile d’authentification
prématurément avec succès ; les autres modules dans la pile ne sont pas pris en compte
Formation permanente – ARS 95
Pluggable Authentification Module, PAM Modules, /usr/lib/security
§ 37.5 Modules, /usr/lib/security
Les modules sont conventionnellement stockés dans /usr/lib/security/
Par exemple sur Solaris :
% ls /usr/lib/security
amiserv pam_ldap.so.1 pam_sample.so.1
pam_ami.so pam_projects.so pam_smartcard.so
pam_ami.so.1 pam_projects.so.1 pam_smartcard.so.1
pam_dial_auth.so pam_rhosts_auth.so pam_unix.so
pam_dial_auth.so.1 pam_rhosts_auth.so.1 pam_unix.so.1
pam_krb5.so pam_roles.so sparcv9
pam_krb5.so.1 pam_roles.so.1
pam_ldap.so pam_sample.so
Chaque module fournit l’implémentation d’un mécanisme spécifique.
Formation permanente – ARS 96
Pluggable Authentification Module, PAM Modules, /usr/lib/security
/usr/lib/security/pam_unix.so.1 fournit un suport d’authentification, gestion de
compte, session de mot de passe. Il utilise les mots de passe Unix pour l’authenfication.
/usr/lib/security/pam_dial_auth.so.1 peut seulement être utilisé pour
l’authentification. Il utilise des données stockées dans /etc/dialups et /etc/d_passwd.
Principalement utilisé par login.
/usr/lib/security/pam_rhosts_auth.so.1 peut seulement être utilisé pour
l’authentification. Il utilise les données stockées dans les fichiers .rhosts et
/etc/hosts.equiv. Principalement utilisé par rlogin et rsh.
Formation permanente – ARS 97
Pluggable Authentification Module, PAM Options des modules
§ 37.6 Options des modules
On peut passer certaines options aux modules
– des options spécifiques à chaque module ; cf la documentation de chaque module ; par exemple
retry=3 ou debug
– option use_first_pass
Cette option indique d’utiliser exclusivement le mot de passe entré pour le premier module de la
pile du service.
– option try_first_pass
Cette option indique d’utiliser d’abord le mot de passe entré pour le premier module de la pile du
service et en cas d’échec de ce mot de passe d’en demander un autre.
(Le support des options use_first_pass et try_first_pass est fortement conseillé auprès des
développeurs de modules PAM ; à vérifier donc avec chaque module)
Formation permanente – ARS 98
Pluggable Authentification Module, PAM Exemple 1
§ 37.7 Exemple 1
Extrait de /etc/pam.conf :
# Authentication management
login auth required /usr/lib/security/pam_unix.so.1
login auth required /usr/lib/security/pam_dial_auth.so.1
Fichier /etc/dialups :
/dev/pts/9
Fichier /etc/d_passwd/bin/bash:nuemRW70uy9M.:
Session interactive :
% tty
/dev/pts/9
% exec login
exec login
login: besancon
Password: XXXXXXXX <-- mot de passe
Dialup Password: YYYYYYYY <-- mot de passe
%% <-- connexion établie, shell lancé
On voit bien la ligne supplémentaire «Dialup Password:»
Formation permanente – ARS 99
Pluggable Authentification Module, PAM Exemple 1
Si l’on se trompe dans l’un des mots de passe, toutes les demandes de mot de passe sont
réessayées :
% exec login
login: besancon
Password: ZZZZZZZZ <-- mauvais mot de passe
Dialup Password: YYYYYYYY <-- mot de passe OK
Login incorrect
login: besancon
Password: XXXXXXXX <-- mot de passe OK
Dialup Password: ZZZZZZZZ <-- mauvais mot de passe
Login incorrect
login: besancon
Password: XXXXXXXX <-- mot de passe OK
Dialup Password: YYYYYYYY <-- mot de passe OK
%% <-- connexion établie, shell lancé
Au niveau SYSLOG, ça laisse quelques traces :
Aug 20 14:51:14 cerise login: [ID 427203 auth.debug] pam_authenticate: error Authentication failed
...
Aug 20 14:51:34 cerise login: [ID 427203 auth.debug] pam_authenticate: error Authentication failed
Formation permanente – ARS 100
Pluggable Authentification Module, PAM Exemple 2
§ 37.8 Exemple 2
Pour autoriser l’authentification par LDAP, on mettra dans /etc/pam.conf :
# Authentication management
login auth sufficient /usr/lib/security/pam_unix.so.1
login auth required /usr/lib/security/pam_ldap.so.1 use_first_pass
Formation permanente – ARS 101
Pluggable Authentification Module, PAM A propos de LDAP
§ 37.9 A propos de LDAP
Pour les systèmes n’incorporant pas LDAP en natif dans l’OS, se reporter à :
– http://diamond.rug.ac.be/pam_LDAP/index.shtml
Formation permanente – ARS 102
Pluggable Authentification Module, PAM Un peu de bibliographie
§ 37.10 Un peu de bibliographie
– http://www.sun.com/software/solaris/pam/
– http://www.kernel.org/pub/linux/libs/pam/
– http://www.netlogic.ro/linuxdoc/pam-0.64/html/pam.html
– http://www.mailgate.org/mailgate/LINUX/linux.redhat.pam/
Formation permanente – ARS 103
Connexion des utilisateurs
Chapitre 38 : Connexion des utilisateurs
§ 38.1 Fichier utmp
Cf <utmp.h>
Traditionnellement /var/adm/utmp ou /etc/utmp.
Ce fichier contient des informations concernant les accès des utilisateurs et concernant les reboots
de la machine.
struct utmp {
char ut_user[8]; /* User login name */
char ut_id[4]; /* /etc/inittab id(usually line #) */
char ut_line[12]; /* device name (console, lnxx) */
short ut_pid; /* short for compat. - process id */
short ut_type; /* type of entry */
struct exit_status ut_exit; /* The exit status of a process */
/* marked as DEAD_PROCESS. */
time_t ut_time; /* time entry was made */
};
Formation permanente – ARS 104
Connexion des utilisateurs Fichier utmp
Ce fichier ne grossit pas vraiment :
– un enregistrement est écrit à la connexion d’un utilisateur et mentionne le couple (utilisateur,
terminal)
– l’enregistrement est marqué de type USER_PROCESS
– lorsque la connexion se termine, l’enregistrement est marqué DEAD_PROCESS
– à la prochaine connexion du même utilisateur sur le même terminal, on réutilisera cet
enregistrement.
Formation permanente – ARS 105
Connexion des utilisateurs Fichier utmpx
§ 38.2 Fichier utmpx
Cf <utmpx.h>
C’est une extension de la structure utmp :
struct utmpx {
char ut_user[32]; /* user login name */
char ut_id[4]; /* inittab id */
char ut_line[32]; /* device name (console, lnxx) */
pid_t ut_pid; /* process id */
short ut_type; /* type of entry */
struct ut_exit_status ut_exit; /* process termination/exit status */
struct timeval ut_tv; /* time entry was made */
int ut_session; /* session ID, used for windowing */
int __pad[5]; /* reserved for future use */
short ut_syslen; /* significant length of ut_host */
/* including terminating null */
char ut_host[257]; /* remote host name */
};
Le principe reste le même sauf que le fichier stockant les données est /var/adm/utmpx.h
Formation permanente – ARS 106
Connexion des utilisateurs Fichier wtmp
§ 38.3 Fichier wtmp
Cf <utmp.h>
Traditionnellement /var/adm/wtmp ou /etc/wtmp.
Ce fichier contient les historiques des connexions des utilisateurs et de l’accounting.
Ce fichier grossit au cours du temps car on y accumule les enregistrements utmp en fin de fichier.
§ 38.4 Fichier wtmpx
Cf <utmpx.h>
Le principe reste le même que celui pour wtmp sauf que le fichier stockant les données est
/var/adm/wtmpx.h
Formation permanente – ARS 107
Connexion des utilisateurs Commande last
§ 38.5 Commande last
Syntaxe : last [options] [utilisateur] [terminal]
La commande last consulte le fichier /var/adm/wtmpx et affiche les enregistrements à
l’écran :
besancon ftp localhost Sun Aug 25 12:13 - 12:15 (00:01)
besancon ftp localhost Sun Aug 25 12:04 - 12:05 (00:01)
besancon ftp localhost Sun Aug 25 12:03 - 12:04 (00:00)
besancon console Sat Aug 24 11:24 still logged in
besancon console Sat Aug 24 01:12 - 11:24 (10:12)
reboot system boot Sat Aug 24 01:10
besancon pts/9 Tue Aug 20 14:52 - down (3+10:17)
besancon pts/9 Tue Aug 20 14:51 - 14:52 (00:00)
...
wtmp begins Wed Feb 20 20:58
Formation permanente – ARS 108
Pseudo terminaux
Chapitre 39 : Pseudo terminaux
§ 39.1 Devices associés aux pseudo terminaux
Pseudos terminaux (virtuels ou physiques) pour : terminal type vt100, xterm, etc.
Les fichiers associés aux pseudo terminaux se trouvent dans /dev.
Par exemple
– /dev/tty01 pour le terminal série
– /dev/console pour l’écran principal de la machine
– pour les connexions réseau, on utilise deux fichiers par connexion : un fichier maître et un fichier
esclave.
Le master pseudo terminal a pour nom /dev/pty[p-s]NN sur BSD, /dev/ptc/NN sur
System-V.
Le slave pseudo terminal a pour nom /dev/tty[p-s]NN sur BSD, /dev/pts/NN sur
System-V.
Formation permanente – ARS 109
Pseudo terminaux Commande tty, device /dev/tty
§ 39.2 Commande tty, device /dev/tty
Pour connaître le nom du terminal courant, utiliser la commande tty :
% tty
/dev/pts/1
Un fichier spécial, /dev/tty :
% tty
/dev/pts/1
% echo oui > /dev/tty
oui
Les entrées / sorties de /dev/tty sont associées à votre terminal.
Formation permanente – ARS 110
Pseudo terminaux Nombre de terminaux
§ 39.3 Nombre de terminaux
Attention : Il doit y avoir un nombre suffisant de terminaux pour accueillir les utilisateurs. Dans le cascontraire :
% rlogin serveur.prism.uvsq.fr
rlogind: All network ports in use.
Connection closed.
Comment corriger le problème ?
La correction du problème se fait à deux niveaux :
1. vérifier le nombre de terminaux configurés dans le noyau :
pseudo-device pty 256 #Pseudo ttys - can go as high as 256
2. augmenter le nombre de fichiers terminaux dans /dev :
# cd /dev
# ./MAKEDEV pty1
# ./MAKEDEV pty2
# ./MAKEDEV pty3
# ./MAKEDEV pty4
etc.
Formation permanente – ARS 111
Pseudo terminaux Phase de connexion, init, getty
§ 39.4 Phase de connexion, init, getty
init gére l’ensemble des lignes physiques sur lesquelles les utilisateurs se connectent.
Au démarrage d’init, après consultation de /etc/inittab ou de /etc/ttys, il y a
lancement d’un processus getty par ligne physique attachée à l’unité centrale.
% ps -edf
USER PID PPID %CPU STARTED TT TIME COMMAND
[...]
root 362 1 0.0 Aug 03 04 0:00.04 /usr/sbin/getty /dev/tty04 c
root 363 1 0.0 Aug 03 05 0:00.04 /usr/sbin/getty /dev/tty05 c
[...]
La commande getty configure les paramètres de la ligne (vitesse, parité, etc.) puis attend qu’un
utilisateur se manifeste.
Formation permanente – ARS 112
Pseudo terminaux Phase de connexion, init, getty
Lorsqu’un utilisateur tape son nom de login, le getty en question donne la main au programme
login :
% ps -edf
USER PID PPID %CPU STARTED TT TIME COMMAND
[...]
root 362 1 0.0 Aug 03 04 0:00.04 /usr/sbin/getty /dev/tty04 c
root 363 1 0.0 Aug 03 05 0:00.09 login besancon
[...]
Le programme login valide ou pas l’utilisateur. Dans le cas favorable, une session shell est lancée
(notez le caractère «-» en début du nom du shell) :
% ps -edf
USER PID PPID %CPU STARTED TT TIME COMMAND
[...]
root 362 1 0.0 Aug 03 04 0:00.04 /usr/sbin/getty /dev/tty04 c
besancon 363 1 0.0 Aug 03 05 0:00.78 -bash (bash)
[...]
Lorsque le shell se termine, init détecte la terminaison d’un de ses fils. Il regénére alors un
nouveau processus getty.
Formation permanente – ARS 113
Pseudo terminaux Liste BSD des terminaux physiques : /etc/ttys
§ 39.5 Liste BSD des terminaux physiques : /etc/ttys
Les lignes à surveiller par init sont précisées via le fichier /etc/ttys :
console none unknown off secure
ttyv0 "/usr/libexec/getty Pc" cons25 on secure
# Virtual terminals
ttyv1 "/usr/libexec/getty Pc" cons25 on secure
ttyv2 "/usr/libexec/getty Pc" cons25 on secure
ttyv3 "/usr/libexec/getty Pc" cons25 on secure
# Serial terminals
ttyd0 "/usr/libexec/getty std.9600" unknown off secure
ttyd1 "/usr/libexec/getty std.9600" unknown off secure
# Pseudo terminals
ttyp0 none network
ttyp1 none network
Formation permanente – ARS 114
Pseudo terminaux Liste System-V des terminaux physiques : /etc/inittab
§ 39.6 Liste System-V des terminaux physiques : /etc/inittab
Les lignes à surveiller par init sont précisées via le fichier /etc/inittab :
lat01:3:respawn:/usr/sbin/getty /dev/tty01 console vt100
lat02:3:respawn:/usr/sbin/getty /dev/tty02 console vt100
...
lat0e:3:respawn:/usr/sbin/getty /dev/tty0e console vt100
lat0f:3:respawn:/usr/sbin/getty /dev/tty0f console vt100
Formation permanente – ARS 115
Pseudo terminaux Terminaux sécurisés
§ 39.7 Terminaux sécurisés
Root est-il autorisé à se connecter sur tout terminal ?
% rlogin ars01.formation.jussieu.fr -l root
Password:
Not on system console
Connection closed.
Pourquoi ?
Parce qu’un login au nom de root est anonyme et interdit en conséquence.
Comment contrôler l’accès ?
Formation permanente – ARS 116
Pseudo terminaux Terminaux sécurisés
� Contrôle d’accès sur BSD
Au niveau de /etc/ttys ou /etc/ttytab :
...
The super-user root may only log in on those terminals
marked as "secure" in the /etc/ttytab file. Otherwise, the
super-user must log in as an ordinary user and become
super-user using su(1v). For example, if the file con-
tained:
console "/etc/getty Console-9600" sun on secure
tty00 "/etc/getty Console-9600" sun on
...
the super-user could only log in directly on the console.
See ttytab(5) for a discussion of secure and other getty(8)
options used in /etc/ttytab.
...
Formation permanente – ARS 117
Pseudo terminaux Terminaux sécurisés
� Contrôle d’accès sur DIGITAL Unix
Au niveau de /etc/securettys :
#
# Note: Each entry in this file represents a device (secure device)
# from which root login is permitted. For, pseudo ttys (ptys) a
# single keyword entry "ptys" means all ptys are to be treated as being
# secure. Note that the entry is "ptys" and not prefixed by /dev
# as is customary for the other physical devices. The absence of
# this key word implies that root login will not be permitted from
# all ptys. X displays are indicated with the display name.
#
# <device name>
/dev/console
local:0
:0
ptys
Formation permanente – ARS 118
Pseudo terminaux Terminaux sécurisés
� Contrôle d’accès sur Linux
Au niveau de /etc/securetty :
## /etc/securetty is used by login(1); the file contains tty
## lines (without leading /dev/) on which root is allowed to
## login.
tty1
tty2
tty3
tty4
tty5
tty6
tty7
tty8
ttyp0
ttyp1
Formation permanente – ARS 119
Pseudo terminaux Terminaux sécurisés
� Contrôle d’accès sur Solaris
Au niveau de /etc/default/login :
...
# If CONSOLE is set, root can only login on that device.
# Comment this line out to allow remote login by root.
#
CONSOLE=/dev/console
...
Formation permanente – ARS 120
Terminaux X, XDM
Chapitre 40 : Terminaux X, XDM
§ 40.1 introduction sur les terminaux X
Un terminal X est un poste de travail graphique :
– offrant le système graphique X
– sans système d’exploitation complexe à gérer et à maintenir
– simple à configurer
En 2002, on constate :
– coût élevé d’un terminal X ; parfois plus cher qu’un poste PC Windows multimédia
– désaffection des constructeurs (reste NCD)
– manque de périphériques supportés ; pas de floppy, pas de son, pas de USB. . .
Formation permanente – ARS 121
Terminaux X, XDM XDM : X Display Management
§ 40.2 XDM : X Display Management
On parlera de serveur XDM pour une machine qui fait tourner l’application xdm qui implémente XDM.
XDM est l’analogue graphique de la demande de login/password du mode texte. Visuellement, cela
se traduit par une mire d’accueil.
login:
Password:
vangogh
Login:
Password:
XDM offre des possibilités :
– de fournir des mires d’accueil pour des terminaux X via des requêtes selon le protocole XDMCP (X
Display Management Control Protocol)
– de gérer des serveurs X distants
Formation permanente – ARS 122
Terminaux X, XDM Requêtes XDMCP
§ 40.3 Requêtes XDMCP
3 formes de réquêtes :
– Forme 1 : direct query
Le serveur X contacte un serveur XDM nomément.
– Forme 2 : broadcast query
Une requête est envoyée sur le réseau en mode broadcast et une mire d’accueil est offerte par le
premier serveur XDM qui peut répondre.
– Forme 3 : indirect query
Le serveur X contacte une machine et lui demande la liste des serveurs XDM qu’elle connait. Le
serveur X se voit proposer de choisir un hôte XDM parmi cette liste.
Formation permanente – ARS 123
Terminaux X, XDM Gestion directe de serveurs X
§ 40.4 Gestion directe de serveurs X
XDM envoit de lui même des mires d’accueil à une liste de serveurs X.
Formation permanente – ARS 124
Terminaux X, XDM Fichier de configuration xdm-config
§ 40.5 Fichier de configuration xdm-config
Traditionnellement dans l’un de ces répertoires :
– répertoire /etc/X11/xdm
– répertoire /usr/X11R6/lib/X11/xdm
– répertoire /usr/openwin/lib/X11/xdm
Ce fichier définit les noms et les répertoires des autres fichiers de configuration de xdm ainsi que
quelques options de configuration :
Par exemple :
DisplayManager.errorLogFile: /var/log/xdm-errors
DisplayManager.pidFile: /var/run/xdm-pid
DisplayManager.keyFile: /usr/X11R6/lib/X11/xdm/xdm-keys
DisplayManager.servers: /usr/X11R6/lib/X11/xdm/Xservers
DisplayManager.accessFile: /usr/X11R6/lib/X11/xdm/Xaccess
...
! SECURITY: do not listen for XDMCP or Chooser requests
! Comment out this line if you want to manage X terminals with xdm
DisplayManager.requestPort: 0
Formation permanente – ARS 125
Terminaux X, XDM Fichier de configuration Xaccess
§ 40.6 Fichier de configuration Xaccess
Ce fichier contient une liste de machines autorisées à se connecter à XDM.
Par exemple :
## Direct queries
*
## Indirect queries
* CHOOSER BROADCAST
– La ligne avec l’étoile * indique que toute machine est autorisée à faire une requête de type query
direct.
– La seconde ligne indique qu’une sélection de hôtes XDM sera affiché à qui fera une requête de
type indirect query et que la liste des hôtes XDM sera obtenue par broadcast.
Formation permanente – ARS 126
Terminaux X, XDM Fichier de configuration Xservers
§ 40.7 Fichier de configuration Xservers
Ce fichier contient la liste des serveurs X gérés directement par XDM.
Par exemple :
# Console de la machine
:0 local /usr/X11R6/bin/X
# Autres terminaux
riri:0 foreign
fifi:0 foreign
loulou:0 foreign
Formation permanente – ARS 127
Terminaux X, XDM Fichier de configuration Xresources
§ 40.8 Fichier de configuration Xresources
Ce fichier contient les ressources pour personnaliser l’apparence de la mire d’accueil.
xlogin*greeting: Welcome to CLIENTHOST
xlogin*namePrompt: \040\040\040\040\040\040\040Login:
xlogin*fail: Login incorrect
#if WIDTH > 800
xlogin*greetFont: -adobe-helvetica-bold-o-normal--24-240-75-75-p-138-iso8859-1
xlogin*font: -adobe-helvetica-medium-r-normal--18-180-75-75-p-103-iso8859-1
xlogin*promptFont: -adobe-helvetica-bold-r-normal--18-180-75-75-p-103-iso8859-1
xlogin*failFont: -adobe-helvetica-bold-r-normal--18-180-75-75-p-103-iso8859-1
#else
xlogin*greetFont: -adobe-helvetica-bold-o-normal--17-120-100-100-p-92-iso8859-1
xlogin*font: -adobe-helvetica-medium-r-normal--12-120-75-75-p-69-iso8859-1
xlogin*promptFont: -adobe-helvetica-bold-r-normal--12-120-75-75-p-69-iso8859-1
xlogin*failFont: -adobe-helvetica-bold-o-normal--14-140-75-75-p-82-iso8859-1
#endif
#ifdef COLOR
xlogin*borderWidth: 1
xlogin*shdColor: grey30
...
Formation permanente – ARS 128
Terminaux X, XDM Application CHOOSER
§ 40.9 Application CHOOSER
Le sélecteur de hôtes XDM s’appelle le chooser.
Formation permanente – ARS 129
Terminaux X, XDM Application CHOOSER
La liste des hôtes peut être obtenue par :
– broadcastSyntaxe au niveau du fichier Xaccess :
* CHOOSER BROADCAST
– liste expliciteSyntaxe au niveau du fichier Xaccess :
%hostlist cerise poire pomme
* CHOOSER %hostlist
Formation permanente – ARS 130
Terminaux X, XDM Ressources X pour XDM
§ 40.10 Ressources X pour XDM
Il y a diverses ressources de personnalisation de xdm :
– apparence de la mire
– apparence du chooser
– mais aussi personnalisation de la configuration de XDM selon le serveur X géré :
– display local «|verb ! :0.0 !»désigné par le mot clef «_0»
– autre display «host:0.0» désigné par le mot clef «host_0»
Extrait d’un fichier xdm-config :
...
DisplayManager._0.authorize: true
! The following three resources set up display :0 as the console.
DisplayManager._0.setup: /usr/X11R6/lib/X11/xdm/Xsetup_0
DisplayManager._0.startup: /usr/X11R6/lib/X11/xdm/GiveConsole
DisplayManager._0.reset: /usr/X11R6/lib/X11/xdm/TakeConsole
...
Formation permanente – ARS 131
Terminaux X, XDM KDM : KDE Display Manager
§ 40.11 KDM : KDE Display Manager
Fichier de configuration : /usr/local/share/config/kdm/kdmrc
Utilitaire de configuration : /usr/local/bin/kdm_config
Formation permanente – ARS 132
Terminaux X, XDM GDM : Gnome Display Manager
§ 40.12 GDM : Gnome Display Manager
Fichier de configuration /usr/X11R6/etc/gdm/gdm.conf
Utilitaire de configuration : /usr/X11R6/bin/gdmconfig
Formation permanente – ARS 133
Terminaux X, XDM Session X de l’utilisateur
§ 40.13 Session X de l’utilisateur
xdm crée un shell sur le serveur de calcul qui configure l’environnement graphique de l’utilisateur via
le fichier "$HOME/.xsession".
� la durée de vie de la session sous X est celle du script $HOME/.xsession
Formation permanente – ARS 134
Terminaux X, XDM Session X de l’utilisateur
En général :
#!/bin/sh
appliX1 &
appliX2 &
...
appliXn &
appliX
Le dernier client X n’est pas lancé en tâche de fond. En général, le dernier client est un window
manager.
Cf ftp://ftp.lip6.fr/pub/doc/faqs/x-faq/speedups.gz
Formation permanente – ARS 135
Terminaux X, XDM Mode Failsafe
§ 40.14 Mode Failsafe
S’il y a des erreurs, les messages de celles-ci sont écrits dans le fichier
$HOME/.xsession-errors.
En cas d’erreur grave dans $HOME/.xsession empêchant le démarrage de la session X,
utiliser le mode FailSafe :
1. entrer le nom de login
2. valider par la tocuhe Retour
3. entrer le mot de passe
4. valider par la touche F1 et non pas par la touche Retour
Il apparait alors un simple xterm sans window manager.
Formation permanente – ARS 136
Terminaux légers
Chapitre 41 : Terminaux légers
§ 41.1 Problématique
Un «vrai» terminal X est maintenant trop cher.
Un «vrai» terminal X est maintenant trop limitatif : pas de multimédia
Solution : le client léger
Appelation un peu abusive. Ni un PC. Ni un terminal X :
– succédané d’architecture de PC x86
– faible consommation électrique � pas de ventilateur � silencieux
– mémoire flash (pas de disque dur local)
– système d’exploitation de type LINUX minimaliste ou Windows CE � support des périphériques
récents (USB, wake-on-lan, . . .)
Formation permanente – ARS 137
Terminaux légers RDP
§ 41.2 RDP
RDP � Remote Desktop Protocol
Actuellement version 5.1
Développé par Microsoft.
Caractéristiques : 64000 channels possibles, redirection des ports parallèles et du port IDE, cliboad
manager, virtual channel
Se reporter à :
http://www.microsoft.com/windows2000/techinfo/howitworks/terminal/rdpfandp.asp
http://www.microsoft.com/windowsxp/remotedesktop/faq.asp
http://www.microsoft.com/windowsxp/pro/using/howto/gomobile/remotedesktop/
Formation permanente – ARS 138
Terminaux légers RDP
Formation permanente – ARS 139
Terminaux légers RDP
A noter le client RDP Linux RDESKTOP, http://www.rdesktop.org/
A completer...
Formation permanente – ARS 140
Terminaux légers ICA
§ 41.3 ICA
ICA � Independant Client Architecture
Actuellement version 6
Développé par la société CITRIX.
Dialogue avec le logiciel METAFRAME de Citrix
Load balancing
Accès modem optimisé
Licences ICA nécessaires par client ou par poste
Se reporter à : http://www.citrix.com/
Mon avis :
– cela fonctionne bien quand cela fonctionne
– il existe des clients ICA pour Unix mais ce n’est pas le scenario que cherche à pousser CITRIX
� support logiciel minable pour la clientèle Unix
Formation permanente – ARS 141
Terminaux légers ICA
A completer...
> > > > screendump client unix < < < <> > > > screendump client web < < < <
Formation permanente – ARS 142
Terminaux légers VNC
§ 41.4 VNC
http://www.uk.research.att.com/vnc/
VNC � Virtual Network Computing
VNC est un logiciel permettant de viusaliser le bureau de n’importe quel ordinateur Macintosh,
Windows, Unix depuis Internet (en l’occurence depuis Macintosh, Windows, Unix, browser avec java).
Le logiciel se compose :
– une partie de visualisation dite vncviewer
– une partie serveur
Le logiciel est utilisable même avec une liaison téléphonique avec un modem à 38400 bauds (testé).
ATTENTION dans le cas Windows : VNC n’est pas une extension à la Terminal Server. VNC est un
partage, une prise en main de l’écran distant du PC.
Formation permanente – ARS 143
Terminaux légers VNC
Prenons le cas d’un vncviewer Unix qui se connectera à un vncserver Windows.
La connexion s’établit après demande du serveur à contacter :
et la demande du mot de passe permettant de piloter le bureau distant du serveur :
et après quelques lignes de texte de renseignements sur le serveur VNC :% vncviewer
VNC server supports protocol version 3.3 (viewer 3.3)
VNC authentication succeeded
Desktop name "w2k"
Connected to VNC server, using protocol version 3.3
VNC server default format:
32 bits per pixel.
Least significant byte first in each pixel.
True colour: max red 255 green 255 blue 255, shift red 16 green 8 blue 0
Using default colormap which is TrueColor. Pixel format:
32 bits per pixel.
Most significant byte first in each pixel.
True colour: max red 255 green 255 blue 255, shift red 16 green 8 blue 0
Formation permanente – ARS 144
Terminaux légers VNC
on obtient bien le bureau distant directement manipulable depuis son propre bureau :
Formation permanente – ARS 145
Terminaux légers VNC
Exemple de bureau Unix visualisé dans Internet Explorer de Windows :
Formation permanente – ARS 146
Terminaux légers VNC
Exemple de bureau Unix visualisé dans vncviewer pour Windows :
Formation permanente – ARS 147
Terminaux légers VNC
Exemple de bureau Unix visualisé dans Internet Explorer de Macintosh :
Formation permanente – ARS 148
Terminaux légers VNC
Exemple de bureau Windows visualisé dans Internet Explorer de Macintosh :
Formation permanente – ARS 149
Terminaux légers VNC
Exemple de bureau Windows visualisé dans Netscape d’Unix :
Formation permanente – ARS 150
Terminaux légers VNC
Exemple de bureau Windows visualisé dans vncviewer d’Unix :
Formation permanente – ARS 151
Terminaux légers VNC
A noter une réalisation matérielle et commerciale avec VNC : les terminaux AXEL AX3000 Model 65
(cf http://www.axel.com – produit français !)
Formation permanente – ARS 152
Terminaux légers VNC
Prenons le cas du serveur VNC pour Windows. Il s’agit d’une application Windows qui s’installe
classiquement :
Formation permanente – ARS 153
Terminaux légers VNC
Elle nécessite un réglage, en l’occurence mettre un mot de passe de façon à contrôler qu peut capter
à distance le bureau :
Formation permanente – ARS 154
Terminaux légers VNC
Une fois paramétrée, une petite icône apparait dans le coin à droite de Windows indiquant que le
service est fonctionnel :
Quand un vncviewer est connecté au bureau Windows, la petite icône change de couleur et passe en
noir de façon à prévenir l’utilisateur qu’il est «sur écoute» :
On peut encapsuler le protocole VNC dans un tunnel de chiffrement bien sûr. Cf la documentation.
Formation permanente – ARS 155
Terminaux légers WMWARE
§ 41.5 WMWARE
http://www.vmware.com/
Version 3.1.1
VMWARE ne tourne que sur plateforme à base de processeur Intel ou compatible.
Ce logiciel offre sur la machine hôte, des machines virtuelles dans lesquelles peuvent tourner des
OS comme Windows, Linux, FreeBSD.
Il s’agit donc de machine virtuelle et non pas de prise en main comme avec VNC.
Formation permanente – ARS 156
Terminaux légers WMWARE
A completer...
> > > > screendump Philippe Weill < < < <
Formation permanente – ARS 157
Terminaux légers SUNRAY
§ 41.6 SUNRAY
C’est un poste de travail «comme les autres» :
– Pas de disque dur
– Pas d’applications locales
– Pas d’alimentation externe
– Pas de configuration
– Pas de système d’exploitation
– Pas de barrette mémoire
– Pas de ventilateur
– Pas de paramétrage particulier
– Il est 10 fois plus léger qu’un PC et 12 fois moins volumineux
– Il peut même s’intégrer dans un écran cathodique 17 pouces ou un écran plat de 15 pouces...
Formation permanente – ARS 158
Terminaux légers SUNRAY
Avantages :
– Instantané, constant et simple
– Gestion centralisée
– Jamais besoin de mise à jour
– Silencieux
– 16 millions de couleurs (24 bits)
– Pas de setup
– Donc, pas de dé-setup
– Pas de modifications de vos applications
– AUCUN tranfert de fichier au boot
– Mise en production la plus rapide du monde !
Formation permanente – ARS 159
Terminaux légers SUNRAY
Caractéristiques hardware :
– CPU Sparc
– 1280 x 1024 @ 76 Hz
– frame buffer 24 bits
– 10/100Mb Ethernet
– Accès a Solaris , X11, Java , ICA
– fonctionnalités multimédia
– Lecteur de carte à puce
– E/S audio qualité CD
– Entrée vidéo NTSC/PAL
– Support USB ( 4 ports ) mais limité en
pratique. . .
Formation permanente – ARS 160
Terminaux légers SUNRAY
Architecture réseau :
Formation permanente – ARS 161
Terminaux légers SUNRAY
Architecture logicielle :
Formation permanente – ARS 162
Terminaux légers SUNRAY
Architecture logicielle (2) :
Formation permanente – ARS 163
Terminaux légers SUNRAY
Cohabitation avec Windows possible :
Formation permanente – ARS 164