Docstoc

Cours d'administration système Unix

Document Sample
Cours d'administration système Unix Powered By Docstoc
					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()                       hashed
                                                                         password


                                                           serveur
                                       randomseed                                        /etc/passwd
                                       or "salt"                                         (/etc/shadow)




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.

 1. L’utilisateur entre
 login et mot de passe


                                           2. On recupère la
                                           structure pwd de
                                           l’utilisateur
                               login
                                           3. On extrait
                                           le salt

                             4. crypt()                        serveur
                                                                                          /etc/passwd
                             des données                                                  (ou /etc/shadow)
                             entrées         5. On extrait
                                             le passwd

                                                  6. Comparaison             7a. comparaison OK :
                                                  hash stocké et             connexion acceptée
                                                  hash calculé



                                                  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 :

                         Maitre
                                                                                  Mise a jour
                     D       D    D                                               push / pull
                     A       A    A
                     T       T    T
                     A       A    A
                                            Esclave 1              Esclave 2

                                            D    D      D          D     D
                                            A    A      A          A     A
                                            T    T      T          T     T
                                            A    A      A          A     A




                         Client 1     Client 2          Client 3       Client 4


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 :

                                          passwd.byname


                                          passwd.byuid

  /etc/hosts                                                                             NIS
                             makedbm                                                     MASTER


                                          hosts.byname


                                          hosts.byuid

  /etc/passwd




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/network
  NETWORKING=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=recherche            dc=finance                 dc=marketing



                             dc=people               dc=people                    dc=people



                             dc=groups               dc=groups                    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=america              dc=europe                  dc=asia



                             dc=people               dc=people                    dc=people



                             dc=groups               dc=groups                    dc=groups




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                     SUFFIXE



                   dc=recherche           dc=finance           dc=marketing



                             dc=people           dc=people             dc=people



                             dc=groups           dc=groups             dc=groups



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)                       (Auxiliary)
                                                   person                        companyPerson




                                  (Structural)                         (Structural)

                             organizationalPerson                 residentialPerson




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
                             slurpd
– du serveur de synchronisation
– 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 :




                       1) demande de modification
                                                      slapd
                                                                    7)     slurpd
                              2) réponse : referral
                                                      (Esclave)




     client                                                                     6)



                       3) demande de modification
                                                      slapd                  Journal des
                                                                    5)
                             4) réponse (OK/not OK)   (Maitre)
                                                                             modifications




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 cas
contraire :
% 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.




                                                             vangogh
                                login:
                                Password:
                                                    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 :
– broadcast
  Syntaxe au niveau du fichier Xaccess :
     *      CHOOSER BROADCAST

– liste explicite
  Syntaxe 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