Réseau avec autofs
De Wiki de la communauté Mandriva.
Sommaire |
Contexte de la création du réseau
L'objectif était de créer un petit réseau informatique pour un collège privé sénégalais à Dakar. Le Centre de Documentation et d'Information (CDI) du collège comprend 8 ordinateurs et un serveur. Il y a d'autres ordinateurs pour l'administration et dans les classes. En résumé, il s'agissait de permettre aux élèves et aux enseignants de se connecter depuis n'importe quelle machine du CDI et de retrouver leurs répertoires personnels (/home/monlogin). MAIS de ne pas mettre tous les comptes sur le seul serveur. L'idée était de répartir les comptes comme suit:
- Tous les comptes des enseignants sont sur le serveur
- Les comptes des élèves sont répartis sur les 8 autres machines
Vous trouverez sur le site du collège une présentation un peu plus détaillée du réseau : http://lecollegebilingue-dakar.net/lcb/spip.php?article254
Afin de ne pas monter tous les répertoires et par là de surcharger le réseau, nous avons opté pour l'utilisation d'autofs. Le but de cet article est de présenter comment nous avons procédé afin que cela puisse aider d'autres à mettre un place un tel réseau et aussi de nous permettre de recevoir des suggestions pour l'améliorer.
Je précise que notre système fonctionne très bien dans le contexte actuel, avec relativement peu d'utilisateurs (15 enseignants - sur le serveur, et 50 élèves, soit environ 6-7 sur chacun des autres ordinateurs). Nous ne savons pas ce qu'il donnera avec un nombre plus important d'utilisateurs...
Bien évidemment, et selon l'usage, tout ce qui est décrit ici est fait dans l'espoir que cela puisse aider, mais nous déclinons toute responsabilité si cela venait à causer des problèmes à vos données ou à votre réseau, etc, etc...
Les répertoires home des utilisateurs sont donc distribués sur plusieurs machines. Ce choix a été fait pour ne pas trop solliciter le serveur de façon excessive et pour profiter de l'espace disque disponible sur les autres ordinateurs du CDI.
Toutes les machines sont sous Mandriva 2008.1 ou une version supérieure.
Les paquetages suivants, en particulier, sont nécessaires :
- autofs
- nfs-utils
- nfs-utils-clients
Chaque machine étant à la fois client et serveur NFS, la configuration décrite ci-après pour NFS et autofs est appliquée sur chaque machine.
Je n'ai pas réussi à utiliser une authentification par NIS, j'ai donc dû modifier les fichiers relatifs aux utilisateurs et groupes sur chaque machine. Je n'ai pas testé LDAP. Suggestions bienvenues...
Fichier /etc/hosts
Le LAN comprend des adresses IP fixes internes.
Chaque fichier hosts comprend donc l'ensemble des IP et des alias des autres machines du réseau.
Configuration de NFS
Chaque machine exporte son home. Le fichier /etc/export contient donc la ligne :
/home X.X.X.0/255.255.255.0(insecure,no_subtree_check,no_root_squash,rw,nohide)
Les X sont en fait les premiers numéros des IP fixes. Même s'ils sont triviaux, je préfère ne pas les lister ici.
Puisque un parefeu tourne sur chaque machine, il a été nécessaire de fixer les ports utilisés par NFS et d'ouvrir ces ports dans le parefeu via le Mandriva Control Center (MCC), ainsi qu'indiqué sur le wiki à propos de NFS :
http://wiki.mandriva.com/fr/R%C3%A9seau_Linux_avec_NFS#Configuration_des_ports_relatifs_.C3.A0_NFS
Vérifier dans le MCC que le service NFS est bien lancé au démarrage.
Configuration d'autofs
- Arrêt du service :
service autofs stop
- Création d'un répertoire /export où seront montés les répertoires distants
Nous n'autorisons qu'un montage puisqu'il s'agit du home distant de l'utilisateur. Il n'est pas prévu de login de plusieurs utilisateurs en même temps sur une machine.
root crée le répertoire avec la commande :
mkdir /export
- Modification du fichier /etc/autofs/auto.master
root doit rajouter une ligne à ce fichier. Si vous ne l'avez pas déjà modifié, il ne devrait contenir en plus des commentaires d'origine que les lignes suivantes :
/export /etc/autofs/auto.users --timeout=5 +auto.master
J'ai essayé d'utiliser l'option --ghost en plus du timeout, mais cela a causé des problèmes. Un énorme répertoire était crée sous /tmp qui occupait la totalité des l'espace disque disponible, d'où un plantage de la machine !
- Création d'un fichier /etc/autofs/auto.users
Ce fichier doit contenir des lignes du type de celles qui suivent.
On suppose la répartition suivante des utilisateurs :
prof1 à 15 sur serveur, eleve1 à 7 sur ordi1, eleve8 à 13 sur ordi2, eleve14 à 19 sur ordi3, eleve20 à 26 sur ordi4, eleve27 à 32 sur ordi5, eleve33 à 38 sur ordi6, eleve39 à 44 sur ordi7 et eleve45 à 50 sur ordi8.
L'exemple est donné pour le fichier auto.users de l'ordi2 :
prof1 -fstype=nfs,rw serveur:/home/prof1 prof2 -fstype=nfs,rw serveur:/home/prof2 ... autres utilisateurs dont le home est sur serveur eleve1 -fstype=nfs,rw ordi1:/home/eleve1 eleve2 -fstype=nfs,rw ordi1:/home/eleve2 ... autres utilisateurs dont le home est sur ordi1 eleve14 -fstype=nfs,rw ordi3:/home/eleve14 eleve15 -fstype=nfs,rw ordi3:/home/eleve15 ... autres utilisateurs dont le home est sur ordi3 eleve20 -fstype=nfs,rw ordi4:/home/eleve20 eleve21 -fstype=nfs,rw ordi4:/home/eleve21 ... autres utilisateurs dont le home est sur ordi4 eleve27 -fstype=nfs,rw ordi5:/home/eleve27 eleve28 -fstype=nfs,rw ordi5:/home/eleve28 ... autres utilisateurs dont le home est sur ordi5 eleve33 -fstype=nfs,rw ordi6:/home/eleve33 eleve34 -fstype=nfs,rw ordi6:/home/eleve34 ... autres utilisateurs dont le home est sur ordi6 eleve39 -fstype=nfs,rw ordi7:/home/eleve39 eleve40 -fstype=nfs,rw ordi7:/home/eleve40 ... autres utilisateurs dont le home est sur ordi7 eleve45 -fstype=nfs,rw ordi8:/home/eleve45 eleve45 -fstype=nfs,rw ordi8:/home/eleve46 ... autres utilisateurs dont le home est sur ordi8
Les utilisateurs (eleve8 à eleve13) qui ont leur compte sur ordi2 n'apparaissent pas sur le fichier auto.users de cette machine. De même pour chacun des autres ordinateurs. Seuls les utilisateurs qui ont des répertoires home sur d'autres machines sont listés dans auto.users
Il faut créer un fichier auto.users équivalent sur chaque machine.
Ajout des utilisateurs sur chaque machine (puisque je n'ai pas réussi à utiliser NIS)
Pour l'administration, au départ, en plus de root, j'ai crée un utilisateur local sur chaque machine pour l'administration. Sur chaque machine il faut passer par le MCC pour ajouter les nouveaux groupes et utilisateurs.
Nous avons plusieurs groupes nous parlerons ici des groupes profs et eleves. Ces groupes ont des GID fixes identiques sur toutes les machines. Tous les enseignants appartiennent aux groupes : users, profs (groupe principal) et eleves. Tous les élèves appartiennent aux groupes : users et eleves (groupe principal). Chaque utilisateur a un UID fixe identique sur toutes les machines, attribué lors de la création de son compte sur chaque machine.
Ceci doit se faire de préférence alors que le service autofs est arrêté :
service autofs stop
- Aller sur la machine sur laquelle on veut créer le compte du nouvel utilisateur
Se connecter sur un utilisateur local et passer en root
Ouvrir le MCC
Ajouter l'utilisateur en lui attribuant une UID manuellement et en cochant les options : Créer le dossier personnel et pas de groupe privé.
Éditer l'utilisateur et lui attribuer le groupe "eleves" comme groupe principal. Le laisser aussi dans le groupe "users"
Quitter le MCC
Toujours sous root, taper :
Vérifier que le répertoire a été créé en tapant :
Le répertoire appartient à l'utilisateur mais au groupe "users". Il faut le changer en tapant :
Vérifier que c'est OK en tapant à nouveaull
Quitter root, fermer la session.
- Sur chaque client
Se logger en utilisateur local
Passer en root dans une console
Arrêter le service autofs en tapant :
Ouvrir le MCC
Ajouter le nouvel utilisateur avec les options:
Ne pas créér de dossier personnel Pas de groupe privé Indiquer l'UID manuellement
Editer l'utilisateur et
- Modifier le dossier perso en mettant :
/export/utilisateur
(où utilisateur est le login choisi)
- Lui attribuer le groupe "eleves"
- Le laisser aussi dans le groupe "users"
- Mettre en groupe primaire "eleves"
Quiter le MCC
- Démarrer le service autofs en tapant :
service autofs start
Problèmes
Les machines du collège utilisent KDE plutôt que Gnome. Mais lorsque le gestionnaire de connexion kdm est utilisé la fenêtre de connexion met très longtemps à s'afficher au démarrage comme lorsque l'on termine une session. L'utilisation de gdm permet un affichage beaucoup plus rapide. Je n'ai pas compris pourquoi...
À faire
Forcer la création des fichiers de travail avec les droits rw pour tous les membres du groupe
Par défaut les fichiers sont crées avec les droits "read only" ("r") pour les membres du groupe. Les élèves échangeant souvent des fichiers il faut que les droits soient "rw" pour le groupe.
Il est connu que sur KDE il est difficile de forcer ce comportement. La solution que j'envisage est la suivante :
Créer sous root sur chaque machine un fichier /etc/profile.d/umask.sh
Qui contient la ligne :
umask 0002
J'ai essayé sur une machine de test hors réseau, cela fonctionne. Pas encore testé sur le réseau, mais cela devrait fonctionner aussi.
Empêcher les utilisateurs d'éteindre les machines de façon intempestive
Il ne faut bien entendu pas éteindre une machine lorsqu'un utilisateur est logué sur un autre ordinateur et utilise son compte sur celle-ci. La norme est donc que les utilisateurs n'éteignent pas les machines mais terminent seulement leur session. Le responsable du CDI éteint toutes les machines lorsque TOUTES les sessions sont closes.
Il faut noter que les responsable du CDI ne dispose pas des droits de root.
Je cherche donc à pouvoir empêcher l'extinction des machines par les utilisateurs depuis leur session et à ne l'autoriser que depuis l'écran de connexion avec affichage d'un message avant d'autoriser l'extinction.
Pour l'instant j'envisage ce qui suit, mais je ne l'ai pas encore testé... Ce n'est qu'une piste de réflexion que je vais essayer dès que j'aurai le temps...
Rajouter dans /etc/X11/gdm/custom.conf Section [daemon] # pour limiter le menu a mes seules commandes et ne pas autoriser le shutdown direct SystemCommandsInMenu=CUSTOM_CMD Section [security] # pour permettre l'ecriture de fichiers avec group rw # cela a l'air de fonctionner avec l'umask decrit ci-dessus, mais je me demande si c'est utile RelaxPermissions=1 # pour autoriser l'automount # idem comme pour la commande precedente # cela a l'air de fonctionner sans, mais je me demande si c'est utile SupportAutomount=true Section [customcommand] CustomCommand0=/usr/bin/poweroff;/sbin/poweroff;/sbin/shutdown -h now;/usr/sbin/shutdown -h now CustomCommandText0=ATTENTION: Toutes les autres sessions sont-elles fermées sur les machines du CDI ? CustomCommandLabel0=Eteindre CustomCommandLRLabel0=Eteindre CustomCommand1=/usr/bin/reboot;/sbin/reboot;/sbin/shutdown -r now;/usr/sbin/shutdown -r now CustomCommandText1=ATTENTION: Toutes les autres sessions sont-elles fermées sur les machines du CDI ? CustomCommandLabel1=Redémarrer CustomCommandLRLabel1=Redémarrer
Je suis preneur de conseils et de suggestions...
Centralisation de la gestion des utilisateurs
Je n'ai pas réussi a utiliser NIS. Mais, de toutes façons, cela me semble un peu complexe avec les répertoires home distribués sur plusieurs machines. Je rappelle que ce choix a été fait pour ne pas trop solliciter le serveur de façon excessive et pour profiter de l'espace disque disponible sur les ordinateurs du CDI.
S'il y a des suggestions, à votre bon coeur...


