{{tag>version-8-08}}
====== Les Horizon System Tools (HST) ======
===== Objectifs =====
* Les HST **servent à administrer un serveur Linux de manière cohérente** : une seule série d'outils permet de réaliser des actions de "haut-niveau", comme ajouter un utilisateur, modifier son profil, le rendre membre d'un groupe, l'autoriser à voir certains fichiers, le supprimer, voir la configuration du système, la modifier, etc.
* Les HST **fournissent des API pour plusieurs langages de programmation** afin de pouvoir réaliser ces opérations depuis d'autres logiciels indépendants des HST (comme une interface web par exemple).
* Les HST **fournissent des services transparents aux utilisateurs et aux administrateurs** pour leur simplifier la vie et l'utilisation de leur machine, de leur réseau ou de leurs données.
===== Architecture =====
Les HST sont composés :
* d'outils en ligne de commande avec système d'aide intégré, à savoir :
* ''horizon-getent'' (ou plus simplement ''**get**'') : pour obtenir des informations sur le système, les comptes, la configuration... ''get'' sert aussi à faire des recherches, ou à transcrire certaines informations dans d'autres langages de programmation.
* ''horizon-add'' (ou ''**add**'') : pour ajouter des informations, des comptes...
* ''horizon-modify'' (ou ''**mod**'') : pour modifier les informations présentes sur le système.
* ''horizon-delete'' (ou ''**del**'') : pour supprimer des informations.
* ''horizon-check'' (''**chk**'') : pour vérifier et réparer la cohérence et la consistance des informations et des données du système.
* d'une bibliothèque Python d'objets et fonctions réutilisables pour assurer le travail des outils précédents.
* d'un démon UNIX ''**hackd**'', qui vérifie en temps réel certaines informations et en assure la consistance "à la volée". C'est aussi lui qui rend service aux utilisateurs en leur évitant des manipulations nécessaires mais fastidieuses sur leurs fichiers et répertoires partagés.
===== Utilisation =====
Chaque outil Horizon possède son propre système d'aide embarqué. Vous pouvez donc appeler chacun des outils sans aucun paramètre, puis avec ''-h'' ou ''--help'' pour avoir des informations sur son utilisation, ses options, son fonctionnement.
Pour chaque outil, vous pouvez trouver le descriptif des options en rajoutant les paramètres à l'outil (comme ''add user -h'' pour savoir comment ajouter un utilisateur).
===Quelques exemples pratiques===
* ajouter un groupe
add group --name=nom_groupe
* ajouter un utilisateur
add user --login toto
add user --firstname prenom --lastname nom --password mot_de_passe
add user --profile eleves --login toto2 --password mot_de_passe
* modifier un utilisateur
mod user --login identifiant --password nouveau_mot_de_passe
mod user --login identifiant --add-groups=groupe1,groupe2 --del-groups=groupe3,groupe4
* vérifier et corriger les droits sur tous les fichiers d'un dossier de groupe...
chk group --name groupe_classe --auto-yes
* remettre tous les enseignants dans les groupes dont ils doivent faire partie :
mod profile --group enseignants --apply-groups --to-all
La plupart des options et arguments sont facultatifs. La plupart du temps une supposition "saine" permet de trouver la valeur automatiquement. Par exemple, si vous ne spécifiez pas ''%%--password%%'' pour la commande ''add user'', HST génèrera automatiquement un mot de passe et vous le donnera (la taille du mot de passe dépend du système sous-jacent AbulÉdu ou Horizon). Pour connaître toutes les options et arguments des HST, lancez les commandes sans argument (tapez simplement ''add'' ou ''mod''), puis utilisez ''%%--help%%'' pour visualiser l'aide intégrée.
La suite à venir. Si vous avez des besoins précis ou des idées de documentation sur les HST, posez-les après cette note.
Pour avoir le droit de faire les commandes sudo indiquées ci-dessous vous devrez lancer ces commandes à partir d'un utilisateur type "administrateur" comme abuladmin par exemple.
=== Voir si un groupe est permissif ===
* sudo get groups | grep ^nom_du_groupe, par exemple get groups | grep ^interprofs: à la fin de la ligne vous aurez l'information "permissive" ou "not permissive"
=== Modifier le groupe pour le rendre permissif ===
* sudo mod group -p interprofs
=== Vérifier et remettre tous les fichiers comme il faut ===
* sudo chk group interprofs -b
=== Remettre les droits par défaut pour les utilisateurs ===
* sudo chk user -a -y