Scribe NG Service Client
Cette page décrit le fonctionnement du client Scribe. Ce client n'est présent qu'à partir de Scribe-2.1 et pleinement fonctionnel pour Vista sur Scribe-2.2.
Sommaire[masquer] |
Présentation
Le Client Scribe est un ensemble de programmes utilisés pour la gestion des postes clients. Il est utilisé pour effectuer des actions distantes depuis le serveur vers un poste client ou depuis un poste client vers le serveur. Le Client Scribe se décompose donc de deux parties :
- celle s'exécutant sur les postes clients.
- celle s'exécutant sur le serveur
Exemples d'actions vers un poste client :
- placer les restriction Esu à l'ouverture de session
- éteindre/redémarrer/fermer une session
- ...
Exemples d'actions vers le serveur :
- distribuer un devoir
- bloquer un utilisateur
- ...
Technologie employée
Perspective Broker est utilisé pour la communication entre les clients et le serveur :
http://twistedmatrix.com/projects/core/documentation/howto/pb.html
http://twistedmatrix.com/projects/core/documentation/howto/pb-intro.html
http://twistedmatrix.com/projects/core/documentation/howto/pb-usage.html
Le Client Scribe sur le poste client
La partie du client Scribe installée sur le poste client est composée de 3 principaux exécutables :
- le service Scribe (servscribe.exe)
- le programme d'ouverture de session (logon.exe)
- le démon utilisateur permettant une interaction du service avec l'environnement de l'utilisateur (utilisateur.exe)
à ceux-ci s'ajoutent :
- UltraVNC servant à l'observation et la diffusion de l'affichage d'un poste client
- wipfw (NT4, 2K et XP seulement), un pare-feu utilisé pour le blocage réseau/Internet
Le paramétrage du client Scribe se fait via les clés de registre contenues dans HKLM\Software\Eole\Scribe\.
Liste des clés :
- log_level (niveau de log 'CRITICAL', 'ERROR', 'WARNING', 'INFO', 'DEBUG')
- debug_logon (dés/active l'enregistrement des actions de logon.exe)
- inst_args (arguments d'installation du client Scribe en cas de MAJ)
- inst_path (chemin d'installation du client Scribe)
- ip_access_list (liste des IP autorisées à se connecter au service Scribe)
- ip_scribe (adresse IP du Scribe)
- nom_domaine (nom du domaine Scribe)
- nom_scribe (nom Netbios du serveur Scribe)
- port_client (port du service sur la station cliente)
- port_scribe (port de la partie serveur du Client Scribe)
- port_scribe_update (port pour accéder au mises à jour du client sur le serveur)
- port_utilisateur (port du démon utilisateur)
- vnc_viewonly (configuration du type de controle par l'observation élève)
En plus du service et du gestionnaire d'ouverture de session, un service
de mise à jour du client est mis en place sur la station (voir Le service de mise à jour).
Sur Scribe 2.1 & 2.2 le client Scribe remplace
"esuclnt.exe". "esuclnt.exe" NE doit PLUS être utilisé sur les stations
Windows 2000 et supérieures
Le service Scribe (servscribe.exe)
Le service Scribe est un service NT. Sur Windows XP on le retrouve dans :
Panneau de configuration > Outils d'administration > Services
Il s'exécute avec le compte BUILTIN\SYSTEM.
Les fonctions du service Scribe sont :
- enregistrement de la station auprès du serveur au démarrage (dés-enregistrement à l'extinction)
- gestion de l'ouverture de session (application des règles Esu, du blocage du réseau/des lecteurs réseau, du mode d'observation VNC)
- ajout/suppression des clés de registre
- exécution une commande
- arrêter/tuer un programme
- gestion VNC (démarrer/arrêter le service, lancer/stopper une connexion à un hôte distant)
- éteindre/redémarrer la station
- modifier la configuration IPFW
- ré-initialisation des menus "Démarrer" et "Bureau" pour les utilisateurs locaux au démarrage
Les actions du service sont enregistrés dans %WINDIR%\cliscribe.log
Le programme d'ouverture de session (logon.exe)
Lorsqu'un utilisateur ouvre une session sur un poste client, le programme logon.exe est exécuté. Il effectue les actions suivantes :
- lecture du fichier de logon \\<scribe>\netlogon\<login><OS>.txt
- appel de la fonction remote_logon sur le serveur
La journalisation des actions est activée par la clé HKLM\Software\Eole\Scribe\debug_logon placée à "1". Les enregistrements se trouvent dans %WINDIR%\cliscribe_logon.log. La journalisation peut être (dés)activée dans la console Esu avec la règle :
Groupe de machines > "Client Scribe" > "Activer la journalisation de l'ouverture de session"
Le fichier de logon <login><OS>.txt
Le fichier <login><OS>.txt contient les lecteurs réseau à connecter et des commandes à exécuter lors de l'ouverture de session. Le programme logon.exe est lancé dans l'environnement utilisateur, il hérite donc des droits de l'utilisateur. Cela signifie que les commandes s'exécutent avec les droits de l'utilisateur.
Le format du fichier de logon <login><OS>.txt est le suivant :
type d'instruction, instruction, option(s) (le séparateur de champs est une virgule)
Les types instructions sont :
- cmd pour exécuter une commande avec des options possibles :
- HIDDEN masquer la fenêtre
- NOWAIT pour ne pas attendre la sortie de la commande
Les options NOWAIT et HIDDEN doivent être écrites en majuscules.
- lecteur, où le partage <partage> et monté sur <lecteur> (si <lecteur> existe déjà et est un lecteur réseau il est démonté, sinon la première lettre disponible est utilisée)
Exemple :
cmd,notepad.exe,NOWAIT lecteur,V:,\\monserveur\partage
Scripts personnalisés
Le fichier de logon <login><OS>.txt contient les instructions relatives à l'utilisateur qui se connecte. Il est le résultat de la concaténation des instructions de base et des scripts personnalisés que l'administrateur peut ajouter.
Les scripts personnalisés peuvent être appliqués en fonction du login de l'utilisateur, de ses groupes, de la version du système d'exploitation et du nom de machine :
- utilisateur (ex : /home/netlogon/scripts/users/le.proviseur.txt)
- groupe (ex : /home/netlogon/scripts/groups/eleves.txt)
- système d’exploitation (ex : /home/netlogon/scripts/os/WinXP.txt)
- système d'exploitation et utilisateur (ex : /home/netlogon/scripts/os/Win2K/admin.profil.txt)
- système d'exploitation et groupe (ex : /home/netlogon/scripts/os/WinXP/professeurs.txt)
- machine (ex : /home/netlogon/scripts/machines/pc_cdi.txt)
Pour tous les utilisateurs, vous pouvez utiliser : /home/netlogon/scripts/groups/DomainUsers.txt.
La balise "%%NetUse%%" placée dans le script permet de déterminer quel partie du contenu du script personnalisé sera ajouté au début ou à la fin du fichier de logon.
Sous NT4/2Kx/XP/Vista, la bonne exécution d’une commande dépend des droits de l’utilisateur courant.
Les scripts personnalisés obéissent à la même syntaxe que le fichier de logon et doivent avoir l'extension .txt.
Exemple du fichier \\scribe\netlogon\os\WinXP\jean.dupond.txt :
# lancera notepad (attention de mettre le chemin complet AVEC l'extension) sans attendre qu'il se ferme ce qui est préférable ;-) cmd,%windir%\notepad.exe,NOWAIT # lancera monscript.bat en cachant son exécution, un message s'affichera si la commande rencontre une erreur cmd,\\scribe\netlogon\scripts\monscript.bat,HIDDEN
Ce fichier sera exécuté lorsque jean.dupond ouvrira une session sur un poste client de type Windows XP.
Le démon utilisateur (utilisateur.exe)
Le démon utilisateur est lancé dès l'ouverture de session et arrêté à la fermeture de session. Il s'exécute dans l'environnement de l'utilisateur et permet au service Scribe d'interagir avec cet environnement (exécution de commandes pour l'utilisateur, accès à des fichiers de configuration de l'utilisateur situés sur des lecteurs réseau, etc.)
Ses fonctions sont :
- récupération des variables d'environnement de l'utilisateur
- exécution de commandes dans l'environnement utilisateur
- redémarrage d' explorer.exe
- montage/démontage du partage "devoirs"
- fermeture forcée de la session de l'utilisateur
- application de certaines règles Esu :
- JS:\\ et INI:\\
- installation des imprimantes
L'enregistrement des actions est effectué dans %WINDIR%\Temp\cliscribe_utilisateur-<login>.log ou dans %TEMP%.
Installation
Le client Scribe pour les stations Windows se présente sous la forme de deux fichiers d'installation Inno Setup :
- cliscribe-setup.exe, installeur du client Scribe
- cliscribe-updater-setup.exe, installeur du service de mise à jour du client Scribe
Lors de sa mise en place, l'installeur du client Scribe lit les données contenu dans le fichier install.ini situé dans le même répertoire. Ces données sont :
- inst_args = arguments d'installation du client pour le service de mise à jour
- uninst_args = arguments de désinstallation du client pour le service de mise à jour
- ip_scribe = adresse IP du serveur Scribe
- nom_scribe = Nom NetBios (SMB) du serveur Scribe
- nom_domaine = Nom NetBios (SMB) du domaine Scribe
- port_scribe = Port du service controle-vnc sur le serveur Scribe
- port_scribe_update = Port de téléchargement des mises à jour du client Scribe
- port_client = Port du service Scribe sur la station
- port_utilisateur = Port du démon utilisateur sur la station
- version = numéro de version du client, sera utilisé par le service de MAJ pour comparer la version sur la station et celle du client sur le serveur
Lorsque l'installation est terminée la station doit être redémarrée pour appliquer les dernières modifications.
Le service de mise à jour
Le service de mis à jour sert à maintenir le service Scribe à jour en fonction de la version présente sur le serveur (fichier /home/client/cliscribe-setup.exe).
Le contrôle de la mise à jour s'effectue en comparant la valeur de version = dans %WINDIR%\Eole\install.ini et celle contenu dans le fichier install.ini présent sur le serveur HTTP de mise à jour sur le serveur Scribe. Si la version du serveur est supérieure à celle du client, une mise à jour est enclenchée. Si une session utilisateur est ouverte sur la station, une fenêtre avertit l'utilisateur de l'imminence d'un redémarrage.
La mise à jour s'effectue en 2 temps :
- désinstallation de l'ancienne version du client Scribe (nécessite un redémarrage pour finaliser la désinstallation)
- installation de la nouvelle version (nécessite un redémarrage pour finaliser l'installation)
Les redémarrages sont effectués :
- à la désinstallation parce que certains fichiers sont en cours
d'utilisation et seront supprimés au prochain redémarrage. Ces fichiers
ne peuvent pas être remplacés, ils doivent donc d'abord être supprimé.
Ce mode de fonctionnement est propre au système Windows.
Le système Linux permet, lui, de remplacer des binaires ou des données en cours d'utilisation, les mises à jour, à part celle du noyau ne nécessite jamais de redémarrage.
- à l'installation parce que l'installeur du client Scribe modifie certaines clés de la base de registre nécessitant un rédémarrage (Ne pas utiliser les fichiers hors connexion par exemple).
La mise à jour du client Scribe peut être désactivée
- Pour tous les clients en mettant
version = 0
dans le fichier /etc/eole/distrib/install.ini (attention, un patch est nécessaire), suivi de 'reconfigure'.
- Par client en mettant
version = 0
dans le fichier %WINDIR%\Eole\install.ini
Attention, certaines fonctions sont mises à jour du côté serveur, elles impliquent parfois une modification du client. Des clients non à jour pourraient alors ne plus fonctionner. Leur mise à jour s'imposera à ce moment là.
Le service côté Serveur
Le premier rôle de ce service a été le contrôle et l'assistance à l'utilisation de VNC, son nom controle_vnc_serveur a donc plus une explication historique que fonctionnelle.
Il est maintenant décomposé en deux parties :
- serveur Perspective Broker, utilisé pour les appels distants par et vers les stations
- serveur de fichier HTTP pour le téléchargement du client, utilisé par le service de mise à jour sur les clients
Ses possibilités ont évoluées depuis sa première version, il est maintenant possible de :
- récupérer la liste des groupes, les utilisateurs d'un groupe, la liste des connectés
- gérer les connexions VNC
- gérer le blocage Internet
- gérer les devoirs
- gérer la liste des stations allumées
- gérer les applications
- appliquer les paramètres Esu
- effectuer divers appels systèmes sur les stations
Les actions de controle_vnc_serveur sont enregistrés dans /var/log/controle-vnc/main.log.
Outils de développement
Compatibilité Vista
La compatibilité Vista n'est assurée qu'à partir de Scribe-2.1
Les informations ci-dessous concernent uniquement la version 2.1-RC3 de Scribe.
Esu et Clés de registre
Le nouveau client est capable d'appliquer les clés de registre qui lui sont fournies.
Une partie des clés de registre XP fonctionne sous Vista.
En attendant la prise en compte de Vista dans la console ESU (puis sa future réécriture), merci de nous aider à identifier les clés qui fonctionnent et celles à ajouter sur Clés de registre Vista
Observation/Diffusion de postes
- Observation depuis un poste Vista : OK
- Observation d'un poste Vista : OK
- Diffusion depuis un poste Vista : OK
- Diffusion vers un poste Vista : OK
Distribution de devoirs
La Distribution de devoirs via le logiciel gestion-postes fonctionne sous Vista.
Blocage Internet
Ok sous Vista