From a6039e10fcc6c36779ea493093d2acb65f833cf9 Mon Sep 17 00:00:00 2001 From: Benjamin Bohard Date: Tue, 8 Jan 2013 10:39:48 +0100 Subject: [PATCH] import du contenu de la branche tronc-commun --- documents/exercice1/0_ircd.xml | 21 + documents/exercice1/4_ircd.srv | 4 + documents/exercice2/1_phpldapadmin.xml | 32 + documents/exercice2/apache.conf | 6 + documents/exercice2/phpldapadmin.php | 17 + documents/exercice3/1_phpldapadmin.xml | 45 + documents/exercice3/phpldapadmin.php | 24 + documents/exercice4/sample.zephir | 36 + documents/exercice4/supprimer_fichier.zephir | 37 + .../exercice4/supprimer_fichier_sudo.zephir | 4 + documents/preparation_tronc-commun.txt | 8 + tronc-commun.tex | 1202 +++++++++++++++++ 12 files changed, 1436 insertions(+) create mode 100644 documents/exercice1/0_ircd.xml create mode 100644 documents/exercice1/4_ircd.srv create mode 100644 documents/exercice2/1_phpldapadmin.xml create mode 100644 documents/exercice2/apache.conf create mode 100644 documents/exercice2/phpldapadmin.php create mode 100644 documents/exercice3/1_phpldapadmin.xml create mode 100644 documents/exercice3/phpldapadmin.php create mode 100644 documents/exercice4/sample.zephir create mode 100644 documents/exercice4/supprimer_fichier.zephir create mode 100644 documents/exercice4/supprimer_fichier_sudo.zephir create mode 100644 documents/preparation_tronc-commun.txt create mode 100644 tronc-commun.tex diff --git a/documents/exercice1/0_ircd.xml b/documents/exercice1/0_ircd.xml new file mode 100644 index 0000000..1c1bb8e --- /dev/null +++ b/documents/exercice1/0_ircd.xml @@ -0,0 +1,21 @@ + + + + + + + + + non + + + + + + ['oui','non'] + + + + + + diff --git a/documents/exercice1/4_ircd.srv b/documents/exercice1/4_ircd.srv new file mode 100644 index 0000000..5803647 --- /dev/null +++ b/documents/exercice1/4_ircd.srv @@ -0,0 +1,4 @@ +%if %%activate_ircd == 'oui' +ircd-irc2 +%end if + diff --git a/documents/exercice2/1_phpldapadmin.xml b/documents/exercice2/1_phpldapadmin.xml new file mode 100644 index 0000000..c6a2657 --- /dev/null +++ b/documents/exercice2/1_phpldapadmin.xml @@ -0,0 +1,32 @@ + + + + + + + + + + non + + + + + + + ['oui','non'] + + + + non + phpldapadmin + phpldapadmin + + + + + + diff --git a/documents/exercice2/apache.conf b/documents/exercice2/apache.conf new file mode 100644 index 0000000..67f5f9c --- /dev/null +++ b/documents/exercice2/apache.conf @@ -0,0 +1,6 @@ +%if %%activate_phpldapadmin == 'oui' + +... + +%end if + diff --git a/documents/exercice2/phpldapadmin.php b/documents/exercice2/phpldapadmin.php new file mode 100644 index 0000000..23d9c59 --- /dev/null +++ b/documents/exercice2/phpldapadmin.php @@ -0,0 +1,17 @@ +... + +/*********************************************/ +/* Define your LDAP servers in this section */ +/*********************************************/ + +%if %%phpldapadmin_name == "" +$ldapservers->SetValue($i,'server','name','Serveur LDAP'); +%else +$ldapservers->SetValue($i,'server','name','%%phpldapadmin_name'); +%end if + +$ldapservers->SetValue($i,'server','host','ldap://%%phpldapadmin_host'); + +$ldapservers->SetValue($i,'server','tls',false); + +... diff --git a/documents/exercice3/1_phpldapadmin.xml b/documents/exercice3/1_phpldapadmin.xml new file mode 100644 index 0000000..65ee991 --- /dev/null +++ b/documents/exercice3/1_phpldapadmin.xml @@ -0,0 +1,45 @@ + + + + + + + + + + + non + + + + + + + ['oui','non'] + + + ['oui','non'] + + + + + + non + phpldapadmin + phpldapadmin + + + phpldapadmin_name + phpldapadmin_tls + + + + + + diff --git a/documents/exercice3/phpldapadmin.php b/documents/exercice3/phpldapadmin.php new file mode 100644 index 0000000..e511b77 --- /dev/null +++ b/documents/exercice3/phpldapadmin.php @@ -0,0 +1,24 @@ +... + +$ldapservers = new LDAPServers; +%set %%i = 0 +%for %%phpldapadmin in %%phpldapadmin_host +$i=%%i; +$ldapservers->SetValue($i,'server','name','%%phpldapadmin_name'); + +%if %%phpldapadmin.phpldapadmin_tls == 'oui': +$ldapservers->SetValue($i,'server','host','ldaps://%%phpldapadmin'); +%else +$ldapservers->SetValue($i,'server','host','ldap://%%phpldapadmin'); +%end if + +%if %%phpldapadmin.phpldapadmin_tls == 'oui': +$ldapservers->SetValue($i,'server','tls',true); +%else +$ldapservers->SetValue($i,'server','tls',false); +%end if + +%set %%i = %%i + 1 +%end for + +... diff --git a/documents/exercice4/sample.zephir b/documents/exercice4/sample.zephir new file mode 100644 index 0000000..94e6ab8 --- /dev/null +++ b/documents/exercice4/sample.zephir @@ -0,0 +1,36 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +########################################################################### +# Eole NG - 2007 +# Copyright Pole de Competence Eole (Ministere Education - Academie Dijon) +# Licence CeCill cf /root/LicenceEole.txt +# eole@ac-dijon.fr +# +# test_perso.zephir +# +# exemple de script personnalisé pour le client zephir +# +########################################################################### + +import os, sys +from zephir.lib_zephir import * +from creole import fonctionseole + +if fonctionseole.init_proc('PERSO') == False: + fonctionseole.zephir("MSG" , "procédure sample bloquée par zephir", "PERSO") + sys.exit(1) + +fonctionseole.zephir("INIT" , "script test_perso en cours d'execution", "PERSO") + +try: + message = sys.argv[1] + fonctionseole.zephir("MSG" , "sample lancé avec l'argument %s" % message, "PERSO") +except: + fonctionseole.zephir("ERR" , "sample lancé sans argument", "PERSO") + exit(1) +if is_locked(['reconfigure']): + fonctionseole.zephir("ERR" , "sample stoppé : reconfigure en cours", "PERSO") + exit(1) +else: + fonctionseole.zephir("FIN" , "sample : OK", "PERSO") + diff --git a/documents/exercice4/supprimer_fichier.zephir b/documents/exercice4/supprimer_fichier.zephir new file mode 100644 index 0000000..7aae1a4 --- /dev/null +++ b/documents/exercice4/supprimer_fichier.zephir @@ -0,0 +1,37 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +########################################################################### +# Eole NG - 2007 +# Copyright Pole de Competence Eole (Ministere Education - Academie Dijon) +# Licence CeCill cf /root/LicenceEole.txt +# eole@ac-dijon.fr +# +# test_perso.zephir +# +# exemple de script personnalisé pour le client zephir +# +########################################################################### + +import os, sys +from zephir.lib_zephir import * +from creole import fonctionseole + +if fonctionseole.init_proc('PERSO') == False: + fonctionseole.zephir("MSG" , "procédure supprimer_fichier bloquée par zephir", "PERSO") + sys.exit(1) + +fonctionseole.zephir("INIT" , "script test_perso en cours d'execution", "PERSO") + +try: + filename = sys.argv[1] + fonctionseole.zephir("MSG" , "supprimer_fichier lancé avec l'argument %s" % filename, "PERSO") + sudo_script('supprimer_fichier_sudo.zephir %s' % filename) +except: + fonctionseole.zephir("ERR" , "supprimer_fichier lancé sans argument", "PERSO") + exit(1) +if is_locked(['reconfigure']): + fonctionseole.zephir("ERR" , "supprimer_fichier stoppé : reconfigure en cours", "PERSO") + exit(1) +else: + fonctionseole.zephir("FIN" , "supprimer_fichier : OK", "PERSO") + diff --git a/documents/exercice4/supprimer_fichier_sudo.zephir b/documents/exercice4/supprimer_fichier_sudo.zephir new file mode 100644 index 0000000..f36b7b3 --- /dev/null +++ b/documents/exercice4/supprimer_fichier_sudo.zephir @@ -0,0 +1,4 @@ +#!/bin/bash + +[ -f $1 ] && rm -f $1 + diff --git a/documents/preparation_tronc-commun.txt b/documents/preparation_tronc-commun.txt new file mode 100644 index 0000000..48571fc --- /dev/null +++ b/documents/preparation_tronc-commun.txt @@ -0,0 +1,8 @@ +Installer : +Zephir1 à jour + Ne pas supprimer le persistance-net +Installer Scribe1 PAS A JOUR + Supprimer le persistance-net + +Pour TC2 : installer Scribe2 à jour + Supprimer le persistance-net diff --git a/tronc-commun.tex b/tronc-commun.tex new file mode 100644 index 0000000..862c74f --- /dev/null +++ b/tronc-commun.tex @@ -0,0 +1,1202 @@ +%%presentation +\documentclass{beamer} +\usepackage{beamerthemetree} +%%impression +%\documentclass[a4paper,9pt]{extarticle} +%\usepackage{beamerarticle} +%% + +% class FR +\usepackage[T1]{fontenc} +\usepackage[utf8]{inputenc} +\usepackage[frenchb]{babel} + +% image +\usepackage{graphicx} + +\usecolortheme{crane} +\beamertemplatetransparentcovered + +% le logo +%\logo{\includegraphics[height=1cm]{ban.png}} + +\title{Formation EOLE} +\subtitle{Tronc Commun} + +\author{GARETTE Emmanuel} +\institute{Cadoles} +\date{\today} + +\begin{document} +\frame{\titlepage} + +% == INTRO == +%\part{la partie} +\section{Introduction} +\begin{frame}{Plan} + \begin{columns}[t] + \begin{column}{5cm} + \tableofcontents[sections={1-6},currentsection, hideothersubsections] + \end{column} + \begin{column}{5cm} + \tableofcontents[sections={7-11},currentsection,hideothersubsections] + \end{column} + \end{columns} +\end{frame} + +\begin{frame} + \frametitle{EOLE} + \begin{itemize} + \item EOLE : Ensemble Ouvert Libre et Evolutif ; + \item projet national de serveur d'établissement scolaires et académiques ; + \item depuis 2000 ; + \item basé sur Ubuntu depuis 2007 sous forme de module ; + \item objectifs : + \begin{itemize} + \item utilisation de logiciels libres, + \item modulaire (évolutif, ouvert, adaptable), + \item facile a mettre en oeuvre et a déployer, + \item administrable à distance. + \end{itemize} + \end{itemize} +\end{frame} + +\begin{frame} + \frametitle{Panorama des modules} + \begin{itemize} + \item Zéphir, gestion du parc des serveurs EOLE : + \begin{itemize} + \item déployer et gérer un parc de serveurs, + \item gestion de la configuration des serveurs, + \item la surveillance et le lancement d'action à distance ; + \end{itemize} + \item Sentinelle, outils graphiques de supervision des serveurs (couplé à Zéphir) : + \begin{itemize} + \item récupération des statistiques, + \item affichage sélectif (avec filtre, ...), + \item lancement d'actions ; + \end{itemize} + \item Amon, la passerelle pare-feu : + \begin{itemize} + \item partage des sous-réseaux et connexion à internet (pare-feu), + \item authentifications des utilisateurs, + \item réseau virtuel privé, + \item cache web, + \item reverse proxy web ; + \end{itemize} + \end{itemize} +\end{frame} + +\begin{frame} + \frametitle{Panorama des modules} + \begin{itemize} + \item Sphynx, concentrateur pour réseau privé virtuel : + \begin{itemize} + \item relier en réseau vos serveurs (RVP), + \item possibilité de haute dispo ; + \end{itemize} + \item AmonEcole, solution virtuelle basé sur Amon : + \begin{itemize} + \item virtualisation sur la base de conteneur OpenVZ, + \item Amon en serveur maître, + \item conteneur possible : Scribe, Horus, Eclair ou EoleBase ; + \end{itemize} + \item EoleVZ, solution de virtualisation EOLE : + \begin{itemize} + \item virtualisation sur la base de conteneur OpenVZ, + \item conteneur possible : Scribe, Horus, Eclair ou EoleBase ; + \end{itemize} + \item Horus, serveur administratif et Scribe, serveur pédagogique : + \begin{itemize} + \item partage de fichiers, + \item partage d'imprimantes, + \item gestion de comptes utilisateurs et de groupes, + \item gestion des accès utilisateurs, + \item gestion des postes clients ; + \end{itemize} + \end{itemize} +\end{frame} + +\begin{frame} + \frametitle{Panorama des modules} + \begin{itemize} + \item Eclair, serveur de client léger sous GNU/Linux : + \begin{itemize} + \item serveur de clients légers, + \item compatible partage de fichier Scribe et Horus, + \item début de support de ESU, + \item gestion de profil GNOME ; + \end{itemize} + \item clientscribe et clienthorus, client GNU/Linux ; + \begin{itemize} + \item reprend la partie "cliente" de Eclair, + \end{itemize} + \item ZéphirLog, concentrateur de fichiers journaux : + \begin{itemize} + \item remontée des logs, + \item stockage des logs, + \item archivage des logs ; + \end{itemize} + \item PreludeManager, console de visualisation de l'IDS Prélude : + \begin{itemize} + \item suivi détailé de la navigation web, + \item detection d'intrusions, + \item interface analyse des logs, + \item statistiques ; + \end{itemize} + \end{itemize} +\end{frame} + +\begin{frame} + \frametitle{Panorama des modules} + \begin{itemize} + \item Seshat, le relais de messagerie pour les domaine intra-académiques des Scribe : + \begin{itemize} + \item relai de messagerie académique. + \end{itemize} + \end{itemize} +\end{frame} + +\section{Les quatre phases} +\begin{frame}{Plan} + \begin{columns}[t] + \begin{column}{5cm} + \tableofcontents[sections={1-6},currentsection, hideothersubsections] + \end{column} + \begin{column}{5cm} + \tableofcontents[sections={7-11},currentsection,hideothersubsections] + \end{column} + \end{columns} +\end{frame} + +\begin{frame} + \frametitle{La phase d'installation} + \begin{itemize} + \item Pour installer un module, il suffit de : + \begin{itemize} + \item démarrer sur le CD-ROM téléchargé sur le site d'EOLE, + \item sélectionner le module à installer parmi ceux proposés, + \item valider ; + \end{itemize} + \item cas particuliers : Eolebase ou la présence de deux disques ; + \item à la fin de l'installation, cliquer sur "continuer", le système redémarre automatiquement ; + \item vous pourrez ouvrir une session avec l'utilisateur "root" et le mot de passe par défaut "eole". + \end{itemize} +\end{frame} + +\begin{frame} + \frametitle{La phase de configuration} + \begin{itemize} + \item Il faut une bonne connaissance du réseau ; + \item en mode autonome : + \begin{itemize} + \item lancer la commande gen\_config, + \item configurer le serveur, + \item sauvegarder le fichier zephir.eol ; + \end{itemize} + \item en mode Zéphir : + \begin{itemize} + \item configuration dans l'application Zéphir : https://:8070/ ou via gen\_config, + \item enregistrement au Zéphir, + \item descente ou monté de la configuration. + \end{itemize} + \end{itemize} +\end{frame} + +\begin{frame} + \frametitle{La phase d'instanciation} + \begin{itemize} + \item Lancer la commande "instance .eol" ; + \item renseigner les mots de passe ; + \item enregistrement de la base matériel ; + \item mise à jour ; + \item éventuellement redémarrage. + \end{itemize} +\end{frame} + +\begin{frame} + \frametitle{Les mots de passe} + \begin{itemize} + \item Au premier lancement de l'instanciation, il est nécessaire de modifier les mots de passe : + \begin{itemize} + \item root ; + \item l'utilisateur local à droit restreint (scribe, horus, amonecole, ...) ; + \item sur amon, en cas d'utilisation d'un réseau pédagogique et au réseau administratif, un second administrateur (amon2) permet d'administrer le réseau pédagogique ; + \item admin sur Scribe et Horus ; + \item admin\_zephir sur Zéphir. + \end{itemize} + \end{itemize} +\end{frame} + +\begin{frame} + \frametitle{Les mots de passe} + \begin{itemize} + \item Par défaut, le système regarde la pertinence des mots de passe. Pour cela, il utilise un système de "classe de caractères" : + \begin{itemize} + \item les lettres en minuscule, + \item les lettres en majuscule, + \item les chiffres, + \item les caractères spéciaux (Ex : \$*ù\%£, ; : !§/. ?) ; + \end{itemize} + \item il faut utiliser différentes classes de caractères ; + \item par défaut, voici les restrictions : + \begin{itemize} + \item une seule classe de caractères : impossible, + \item deux classes de caractères : 9 caractères, + \item trois et quatre classes : 8 caractères ; + \end{itemize} + \item cette configuration est, bien évidement, modifiable dans gen\_config en mode expert. + \end{itemize} +\end{frame} + +\begin{frame} + \frametitle{Pratique : utilisation de VirtualBox pour EOLE} + \begin{itemize} + \item Activer PAE/NX dans Préférences/Système/Processeur ; + \item choisir "Accès par pont" dans le "Mode d'accès réseau" dans Préférence/Réseau/Carte 1 ; + \item créer un instantané. + \end{itemize} +\end{frame} + +\begin{frame} + \frametitle{Pratique : configuration autonome de Zephir1} + \begin{itemize} + \item Lancer gen\_config ; + \item informations utiles : + \begin{itemize} + \item Adresse ip de la carte eth0, + \item passerelle, + \item DNS : DNS de la machine hôte. + \end{itemize} + \end{itemize} +\end{frame} + +\begin{frame} + \frametitle{Pratique : gen\_config en mode texte} + \begin{itemize} + \item taper gen\_config txt ; + \item avoir l'aide help ; + \item open zephir.eol ; + \item choosegroup ; + \begin{itemize} + \item 0, + \item niveau de mise à jour : passer en "complete" ; + \end{itemize} + \item save + \item entrer le nom zephir.eol + \item exit + \end{itemize} +\end{frame} + +\begin{frame} + \frametitle{Pratique : intanciation de Zephir1} + \begin{itemize} + \item instance zephir.eol ; + \item répondre aux questions : + \begin{itemize} + \item le mot de passe de l'utilisateur zephir ; + \item le mot de passe root ; + \item le mot de passe de l'utilisateur de l'application Zéphir admin\_zephir ; + \item ne pas créer d'autres utilisateurs ; + \item ne pas enregistrer le matériel ; + \item ne pas mettre à jour. + \end{itemize} + \end{itemize} +\end{frame} + +\section{L'application Zéphir} +\begin{frame}{Plan} + \begin{columns}[t] + \begin{column}{5cm} + \tableofcontents[sections={1-6},currentsection, hideothersubsections] + \end{column} + \begin{column}{5cm} + \tableofcontents[sections={7-11},currentsection,hideothersubsections] + \end{column} + \end{columns} +\end{frame} + +\begin{frame} + \frametitle{Gestion des utilisateurs} + \begin{itemize} + \item Utilisation d'un serveur LDAP local ou distant + \item LDAP local : scripts (/usr/share/zephir/utils) : + \begin{itemize} + \item add\_user.py + \item del\_user.py + \item list\_users.py + \end{itemize} + \item Un utilisateur = des affectations + \end{itemize} +\end{frame} + +\begin{frame} + \frametitle{Les modules, les établissements et les serveurs} + \begin{itemize} + \item Module : distribution spécifique + variantes + \item Etablissement scolaire : lieu physique + \item Serveur : un module dans un établissement + \end{itemize} +\end{frame} + +\begin{frame} + \frametitle{Enregistrement Zéphir} + \begin{itemize} + \item Processus obligatoire et manuel + \item Création dans la base + lien sécurisé + \item Lancer : enregistrement\_zephir + \begin{itemize} + \item Connexion au réseau + \item Connexion à Zéphir + \item Création ou choix du serveur + \item Gestion des configurations : + \begin{itemize} + \item nouveau serveur : "récupérer les fichiers de la variante" ; + \item serveur configuré en mode autonome : "sauver la configuration actuelle" ; + \item serveur configuré en mode Zéphir : "utiliser la configuration définie sur Zéphir". + \end{itemize} + \end{itemize} + \item Sauvegarde de Zéphir : sauvegarde.sh + \end{itemize} +\end{frame} + +%%\begin{frame} +%% \frametitle{Configuration Zéphir de Scribe1} +%% \begin{itemize} +%% \item Création d'un nouvel utilisateur ; +%% \item affecter tous les droits à l'utilisateur ; +%% \item se reconnecter avec ce nouvel utilisateur ; +%% \item ajouter un nouvel établissement ; +%% \item ajouter un serveur : +%% \begin{itemize} +%% \item le module : scribe-2.2 ; +%% \item descriptif : Scribe1 ; +%% \item configurer : état actuel/générer ; +%% \item "Sauver sur Zéphir" +%% \end{itemize} +%% \item enregistrement Zéphir ; +%% \item instanciation du serveur (ne pas remonter la configuration et ne pas faire la mise à jour). +%% \end{itemize} +%%\end{frame} + +\begin{frame} + \frametitle{Pratique : enregistrement Zéphir de Scribe1} + \begin{itemize} + \item Configuration de Zephir1 : + \begin{itemize} + \item création d'un nouvel utilisateur ; + \item affecter tous les droits à l'utilisateur ; + \item se reconnecter avec ce nouvel utilisateur ; + \item ajouter un nouvel établissement ; + \end{itemize} + \item lancer gen\_config sur Scribe1 et configurer ; + \item enregistrement Zéphir sur Scribe1 ; + \item instanciation du serveur (ne pas remonter la configuration et ne pas faire la mise à jour). + \end{itemize} +\end{frame} + +\section{Administration} +\begin{frame}{Plan} + \begin{columns}[t] + \begin{column}{5cm} + \tableofcontents[sections={1-6},currentsection, hideothersubsections] + \end{column} + \begin{column}{5cm} + \tableofcontents[sections={7-11},currentsection,hideothersubsections] + \end{column} + \end{columns} +\end{frame} + +\begin{frame} + \frametitle{La phase d'administration} + \begin{itemize} + \item Correspond à l'exploitation du serveur ; + \item Chaque module possède des fonctionnalités propres, souvent complémentaires. + \item Diverses interfaces permettent la mise en œuvre de ces fonctionnalités et en facilitent l'usage : + \begin{itemize} + \item l'interface d'administration EOLE : EAD ; + \item l'interface semi-graphique ; + \item divers interface d'administration (Zéphir-web, CUPS, Sympa, ...) ; + \item différents outils (Era, ...). + \end{itemize} + \item Gestion des mises à jour. + \end{itemize} +\end{frame} + +\begin{frame} + \frametitle{Les mises à jour} + \begin{itemize} + \item Les différents dépôts : + \begin{itemize} + \item la version stable, + \item la version candidate, + \item la version dev ; + \end{itemize} + \item procédure : + \begin{itemize} + \item par l'EAD, + \item par l'interface semi-graphique, + \item par Zéphir, + \item à la ligne de commande : + \begin{itemize} + \item Query-Auto : liste les mises à jour, + \item Maj-Auto : lance la mise à jour sans question, + \item Maj-CD : mise à jour grâce à un CD, + \item Upgrade-Auto : mise à jour version une version supérieur, + \end{itemize} + \item mise à jour automatique : de 01h à 6h un jour par semaine. + \end{itemize} + \end{itemize} +\end{frame} + + +\begin{frame} + \frametitle{Diagnostic} + \begin{itemize} + \item La commande "diagnose" permet de tester différent point du serveur ; + \item La commande "diagnose -L" propose un diagnostic étendu. + \end{itemize} +\end{frame} + +\begin{frame} + \frametitle{Instance ou Reconfigure} + \begin{itemize} + \item L'instance doit être lancé qu'une seule fois sur les modules ; + \item En cas de mise à jour, d'installation de paquet ou de changement de paramétrage : reconfigure. + \end{itemize} +\end{frame} + +\begin{frame} + \frametitle{Pratique : diagnostic} + \begin{itemize} + \item Lancer un diagnostic et un diagnostic étendu sur les serveurs. + \end{itemize} +\end{frame} + +\begin{frame} + \frametitle{Pratique : mise à jour} + \begin{itemize} + \item Mettre à jour le serveur Scribe1 et Zephir1 ; + \item faire un reconfigure ; + \item mettre à jour en candidat le serveur Scribe1. + \item faire un reconfigure. + \end{itemize} +\end{frame} + +\section{Découverte de GNU/Linux} +\begin{frame}{Plan} + \begin{columns}[t] + \begin{column}{5cm} + \tableofcontents[sections={1-6},currentsection, hideothersubsections] + \end{column} + \begin{column}{5cm} + \tableofcontents[sections={7-11},currentsection,hideothersubsections] + \end{column} + \end{columns} +\end{frame} + +\begin{frame} + \frametitle{Filesystem Hierarchy Standard (FHS)} + \begin{itemize} + \item / racine de l'arborescence sur laquelle sont raccrochés tous les sous-répertoires et fichiers. + \end{itemize} +\end{frame} + +\begin{frame} + \frametitle{Filesystem Hierarchy Standard (FHS)} + \begin{itemize} + \item (s)bin/ : commandes liées au système ; + \item boot/ : noyau et initrd nécessaires au démarrage ; + \item dev/ : fichiers spéciaux effectuant le lien noyau / périphérique ; + \item etc/ : fichiers de configuration ; + \item home|root/ : répertoires de connexion ; + \item lib/ : librairies essentielles au démarrage et modules du noyau ; + \item mnt/ : contient les montages des périphériques ; + \item proc|sys/ : pseudo système de fichier représentant le noyau à un instant T|les processus ; + \item tmp/ : répertoire temporaire accessible à tous ; + \item usr/ : commandes utilisées par les utilisateurs (bin), l'administrateur (sbin), mais aussi ensemble du système graphique ; + \item var/ : ensemble des données variables du système (spools, logs, web, base de donnée, ...). + \end{itemize} +\end{frame} + +\begin{frame} + \frametitle{Adresse absolue / adresse relative} + \begin{itemize} + \item Un fichier ou un répertoire peut être défini : + \begin{itemize} + \item soit par un chemin relatif à l'endroit où vous vous positionnez au moment T. + \item soit par un chemin absolu à partir de la racine de l'arborescence. + \end{itemize} + \end{itemize} +\end{frame} + +\begin{frame} + \frametitle{Les différents types de fichier} + \begin{itemize} + \item - : fichier classique + \item d : répertoire + \item l : lien symbolique + \item c : périphérique de type caractère + \item b : périphérique de type bloc + \item p : pile fifo + \item s : socket + \end{itemize} +\end{frame} + +\begin{frame} + \frametitle{Les droits unix} + \begin{itemize} + \item Les droits standards : + \begin{itemize} + \item r : lecture + \item w : écriture + \item x : exécution + \end{itemize} + \item Autres droits : + \begin{itemize} + \item t/T : sticky bit : il interdit la suppression des fichiers qu'il contient à tout utilisateur autre que le propriétaire + \item s/S : setuid et setgid bits : permet d'exécuté avec les droits du propriétaire ou du groupe + \end{itemize} + \end{itemize} +\end{frame} + +\begin{frame} + \frametitle{Description d'un fichier} + \begin{semiverbatim} +ls -li formation.pdf + \end{semiverbatim} + \begin{semiverbatim} +3794089 -rw-r--r-- 1 emmanuel eole 252151 2009-11-13 09:56 formation.pdf + \end{semiverbatim} + \begin{itemize} + \item inode + \item droit + \item compteur de lien physique + \item propriétaire + \item groupe + \item taille + \item date de dernière modification + \item nom du fichier + \end{itemize} +\end{frame} + +\begin{frame} + \frametitle{Les ACLs} + \begin{itemize} + \item Les ACLs s'ajoutent aux droits standards ; + \item possibilité de droit par défaut. + \end{itemize} +\end{frame} + +\begin{frame} + \frametitle{La gestion des processus} + \begin{itemize} + \item Tous processus à : + \begin{itemize} + \item un PID ; + \item un PPID ; + \item un UID ; + \item un état : Actif, Exécutable, Endormi, Zombi. + \end{itemize} + \end{itemize} +\end{frame} + +\begin{frame} + \frametitle{Quelques commandes} + \begin{itemize} + \item se déplacer : pwd, cd ; + \item lister : ls, getfacl ; + \item créer/supprimer un répertoire : mkdir, rmdir ; + \item copier/renommer/déplacer : cp, mv ; + \item lien : ln ; + \item les droits : chmod, chown, chgrp, setfacl ; + \item processus actif : ps, top ; + \item tuer un processus : kill ; + \item changer le mot de passe : passwd ; + \item lire le manuel : man . + \end{itemize} +\end{frame} + +\begin{frame} + \frametitle{Pratique : quelques commandes} + \begin{itemize} + \item sur Scribe1, se logguer en root ; + \item changer le mot de passe de l'utilisateur scribe ; + \item créer le répertoire /home/test ; + \item renommer le en /home/eole ; + \item mettre les droits de rwx pour l'utilisateur et le groupe mais --- pour autre ; + \item vérifier les droits ; + \item lire le man de setfacl ; + \item ajouter la "lecture" de type ACLs pour le groupe "scribe" ; + \item lister les droits ; + \item lister la liste des processus ; + \item tuer le processus "proftpd". + \end{itemize} +\end{frame} + +\section{Lire/éditer des fichiers} +\begin{frame}{Plan} + \begin{columns}[t] + \begin{column}{5cm} + \tableofcontents[sections={1-6},currentsection, hideothersubsections] + \end{column} + \begin{column}{5cm} + \tableofcontents[sections={7-11},currentsection,hideothersubsections] + \end{column} + \end{columns} +\end{frame} + +\begin{frame} + \frametitle{Lire un fichier} + \begin{itemize} + \item Lire un fichier complet : less, cat ; + \item lire le début d'un fichier : head ; + \item lire la fin d'un fichier : tail (avec option -f) ; + \end{itemize} +\end{frame} + +\begin{frame} + \frametitle{Editer un fichier : vim} + \begin{itemize} + \item Les modes : + \begin{itemize} + \item le mode normal : Esc ; + \item le mode insertion : i ; + \item le mode visuel : v. + \end{itemize} + \item Les fichiers : + \begin{itemize} + \item :e fichier.txt : editer le fichier ; + \item :w : ecrire dans le fichier ; + \item :q : quitter le fichier. + \end{itemize} + \item Autre : + \begin{itemize} + \item annuler, refaire : u; ctrl r ; + \item couper, copier, coller : d, y, p ; + \item caractère, mot, ligne : l, w, 1. + \end{itemize} + \end{itemize} +\end{frame} + +\begin{frame} + \frametitle{Pratique} + \begin{itemize} + \item lire la fin du fichier /var/log/syslog ; + \item lire le début du fichier /var/log/messages ; + \begin{itemize} + \item passage de mode à un autre ; + \item taper un peu de texte ; + \item faire des couper/copier/coller ; + \item annuler/refaire. + \end{itemize} + \end{itemize} +\end{frame} + +\section{Les commandes à distances} +\begin{frame}{Plan} + \begin{columns}[t] + \begin{column}{5cm} + \tableofcontents[sections={1-6},currentsection, hideothersubsections] + \end{column} + \begin{column}{5cm} + \tableofcontents[sections={7-11},currentsection,hideothersubsections] + \end{column} + \end{columns} +\end{frame} + +\begin{frame} + \frametitle{Le protocole ssh} + \begin{itemize} + \item protocole de communication sécurisé ; + \item ouvrir une connexion : ssh utilisateur@ip\_serveur ; + \item ouvrir une connexion pour commande graphique : ssh -X utilisateur@ip\_serveur ; + \item transfert de fichier : scp fichier.txt utilisateur@ip\_serveur:. + \end{itemize} +\end{frame} + +\begin{frame} + \frametitle{Screen} + \begin{itemize} + \item si la connexion se coupe, impossible de récupérer la session ; + \item screen permet de détacher un shell et le récupérer ; + \item pour le lancer : screen ; + \item pour détacher : ctrl a d ; + \item attention déconnexion automatique : unset TMOUT ; + \item pour reprendre un screen : screen -rd + \end{itemize} +\end{frame} + +\begin{frame} + \frametitle{Pratique : connexion ssh} + \begin{itemize} + \item Se connecter sur le serveur Scribe1 en ssh ; + \item copier un fichier ; + \item lancer gen\_config à travers ssh ; + \item utiliser screen. + \end{itemize} +\end{frame} + +\section{Résolution des problèmes} +\begin{frame}{Plan} + \begin{columns}[t] + \begin{column}{5cm} + \tableofcontents[sections={1-6},currentsection, hideothersubsections] + \end{column} + \begin{column}{5cm} + \tableofcontents[sections={7-11},currentsection,hideothersubsections] + \end{column} + \end{columns} +\end{frame} + +\begin{frame} + \frametitle{Trouver de l'information sur le serveur} + \begin{itemize} + \item Lecture des journaux d'activité : + \begin{itemize} + \item /var/log/messages : contient tous les messages d'ordre général concernant la plupart des services et démons ; + \item /var/log/syslog : est plus complet que /var/log/messages, il contient tous les messages, hormis les connexions des utilisateurs ; + \item /var/log/auth : contient les connexions des utilisateurs ; + \item /var/log/mail.log : contient les envois et réception de mails ; + \item /var/log/cron : fichier log du service cron (planificateur système). + \end{itemize} + \item diagnose ; + \item gen\_rpt. + \end{itemize} +\end{frame} + +\begin{frame} + \frametitle{Trouver des informations sur Internet} + \begin{itemize} + \item la documentation ; + \item les FAQ ; + \item les archives des listes de diffusion ; + \item le Wiki EOLE ; + \item recherche sur Internet ; + \item équipes d'assistance académiques. + \end{itemize} +\end{frame} + +\section{L'application Zéphir 2} +\begin{frame}{Plan} + \begin{columns}[t] + \begin{column}{5cm} + \tableofcontents[sections={1-6},currentsection, hideothersubsections] + \end{column} + \begin{column}{5cm} + \tableofcontents[sections={7-11},currentsection,hideothersubsections] + \end{column} + \end{columns} +\end{frame} + +\begin{frame} + \frametitle{Préférence des utilisateurs} + \begin{itemize} + \item Contient les informations sur l'utilisateur (nom, prénom et mail) ; + \item activer les alertes par mail ; + \item envoyer un clef ssh. + \end{itemize} +\end{frame} + +\begin{frame} + \frametitle{Pratique} + \begin{itemize} + \item Configurer l'utilisateur "eole" ; + \item créé une clef ssh : + \begin{itemize} + \item ssh-keygen -t rsa + \item récupérer le fichier /.ssh/id\_rsa.pub + \end{itemize} + \item ajouter la clef à l'utilisateur. + \end{itemize} +\end{frame} + +\begin{frame} + \frametitle{Surveillance des serveurs} + \begin{itemize} + \item Sur la page d'accueil ; + \item sur chaque serveur : page Etat ; + \item surveillance des serveurs ; + \item état d'un groupe de serveur. + \end{itemize} +\end{frame} + +\begin{frame} + \frametitle{Les alertes} + \begin{itemize} + \item Envoi d'un mail en cas de détection d'un problème : + \begin{itemize} + \item remontée par le serveur d'un erreur ; + \item un serveur n'a pas contacté Zéphir ; + \item une opération s'est mal déroulée + \end{itemize} + \item A la selection d'un groupe enregistré : cocher "surveiller ce groupe" + \end{itemize} +\end{frame} + +\begin{frame} + \frametitle{Actions} + \begin{itemize} + \item Zéphir agit à distance par des actions + \item Elles sont mises en file d'attente + \item C'est le serveur qui se connecte au Zéphir + \item Exemple d'action : envoi de la configuration, mise à jour, sauvegarde l'état + \end{itemize} +\end{frame} + +\begin{frame} + \frametitle{Pratique} + \begin{itemize} + \item Lancer l'action de remonté de la configuration ; + \item forcer la synchronisation : synchro\_zephir ; + \item restaurer Scribe1. + \end{itemize} +\end{frame} + +\begin{frame} + \frametitle{Groupe de serveurs} + \begin{itemize} + \item Les variantes ne servent qu'à la configuration initial ; + \item changement sur plusieurs serveurs : groupe de serveurs ; + \item sélectionner les serveurs suivants différents critères ; + \item sauvegarde du groupe ; + \item possibilité d'ajout ultérieur de machine ; + \item actions supplémentaires. + \end{itemize} +\end{frame} + +\begin{frame} + \frametitle{Pratique} + \begin{itemize} + \item Créer un groupe de serveur ; + \item autoriser l'utilisation à se connecté par clef SSH. + \end{itemize} +\end{frame} + +\section{L'interface d'administration semi-graphique} +\begin{frame}{Plan} + \begin{columns}[t] + \begin{column}{5cm} + \tableofcontents[sections={1-6},currentsection, hideothersubsections] + \end{column} + \begin{column}{5cm} + \tableofcontents[sections={7-11},currentsection,hideothersubsections] + \end{column} + \end{columns} +\end{frame} + +\begin{frame} + \frametitle{L'interface semi-graphique} + \begin{itemize} + \item L'interface semi-graphique est disponible sur différent module ; + \item permet d'exécuter quelques tâches simple d'administration du serveur. + \end{itemize} +\end{frame} + +\section{L'interface d'administration EAD} +\begin{frame}{Plan} + \begin{columns}[t] + \begin{column}{5cm} + \tableofcontents[sections={1-6},currentsection, hideothersubsections] + \end{column} + \begin{column}{5cm} + \tableofcontents[sections={7-11},currentsection,hideothersubsections] + \end{column} + \end{columns} +\end{frame} + +\begin{frame} + \frametitle{Présentation général} + \begin{itemize} + \item serveur de commande ead-server (activé et non désactivable) : + \item interface ead-web : https://:4200/ (activé et désactivable) : + \begin{itemize} + \item gondole d'administration, + \item menu action, + \item les onglets, + \item la partie centrale. + \end{itemize} + \end{itemize} +\end{frame} + +\begin{frame} + \frametitle{Se connecter} + \begin{itemize} + \item Ajouter ou supprimer des onglets pour communiquer avec d'autres serveurs de commande ; + \item authentification locale ; + \item authentification SSO. + \end{itemize} +\end{frame} + +\begin{frame} + \frametitle{Fonction de base} + \begin{itemize} + \item Redémarrer, arrêter et reconfigurer ; + \item mise à jour ; + \item arrêt et redémarrage de service : + \begin{itemize} + \item mode expert, + \item mode normal ; + \end{itemize} + \item listing matériel ; + \item bande passante. + \end{itemize} +\end{frame} + +\begin{frame} + \frametitle{Gestion des rôles} + \begin{itemize} + \item Rôle par défaut (administrateur sur tous les modules, professeur/eleve/administrateur de classe sur Scribe, administrateur du réseau pédagogique sur Amon) ; + \item création de rôle personnalisé ; + \item association de rôle : + \begin{itemize} + \item pour l'authentification locale : sur le login, + \item pour l'authentification SSO : + \begin{itemize} + \item groupe d'utilisateur ; + \item valeur de la clef typeadmin (professeur principal) ; + \item login de l'utilisateur. + \end{itemize} + \end{itemize} + \end{itemize} +\end{frame} + +\section{Personnalisation du serveur à l'aide de Creole} +\begin{frame}{Plan} + \small \tableofcontents[currentsection, hideothersubsections] +\end{frame} + +\begin{frame} + \frametitle{Création de patch} + \begin{itemize} + \item Génération normal : /etc/eole/distrib => /etc + \item Génération avec patch : /etc/eole/distrib + /etc/eole/patch => /etc/eole/templates => /etc + \item Créer un patch : + \begin{itemize} + \item copie du fichier original /etc/eole/distrib => /etc/eole/modif ; + \item modification du fichier dans /etc/eole/modif ; + \item exécution "gen\_patch" ; + \item reconfiguration. + \end{itemize} + \item Désactiver un patch : supprimer le fichier dans /etc/eole/patch. + \end{itemize} +\end{frame} + +\begin{frame} + \frametitle{Pratique} + \begin{itemize} + \item ClamAV à le paramètre suivant : LogFileMaxSize 2M ; + \item il faut la valeur 10M. + \end{itemize} +\end{frame} + +\begin{frame} + \frametitle{Ajout de dictionnaires locaux} + \begin{itemize} + \item Permet d'ajouter des spécificités ou de nouveau template ; + \item les dictionnaires locaux sont dans /etc/eole/dicos/local/ ; + \item les templates locaux sont dans /etc/eole/distrib/ ; + \item un dictionnaire est un fichier XML Creole ; + \item un template utilise le langage de template Creole. + \end{itemize} +\end{frame} + +\begin{frame} + \frametitle{Syntaxe XML Creole} + \begin{itemize} + \item Entête XML : ; + \item Première balise + \begin{itemize} + \item Inclusion de fichiers templates : : + \begin{itemize} + \item name (obligatoire) : nom du fichier template ; + \item source : si le nom de fichier source est différent de la destination ; + \item mode, owner, group : droits sur fichier appliquer au fichier ; + \item mkdir : création du répertoire de destination si nécessaire. + \end{itemize} + \end{itemize} + \end{itemize} +\end{frame} + +\begin{frame} + \frametitle{Syntaxe XML Creole : les variables} + \begin{itemize} + \item Ensemble de famille et séparateur : ; + \begin{itemize} + \item Famille de variables : : + \begin{itemize} + \item Les variables : + \item Les variables ... : + \end{itemize} + \item Les séparateurs : + \begin{itemize} + \item name : nom de variable en dessous du séparateur ; + \item description affiché à l'intérieur de la balise. + \end{itemize} + \end{itemize} + \end{itemize} +\end{frame} + +\begin{frame} + \frametitle{Syntaxe XML Creole : les contraintes} + \begin{itemize} + \item Le contraintes : : pour tester/remplir/grouper/conditionner des variables ; + \begin{itemize} + \item calcul automatique avec fonction personnalisé : ... ; + \item calcul automatique non modifiable ; + \item choix de réponse ... ; + \item cacher des variables suivant des contraintes ... : + \begin{itemize} + \item valeur de la variable testé : ... ; + \item affecte nom : + \end{itemize} + \item Lien entre variable : ... : + \begin{itemize} + \item si le maître à une valeur, les autres aussi ; + \item si le maître est multi-évalué, les autres aussi ; + \item les esclaves : . + \end{itemize} + \end{itemize} + \end{itemize} +\end{frame} + +\begin{frame} + \frametitle{Syntaxe XML Creole : l'aide} + \begin{itemize} + \item Afficher de l'aide dans l'interface : . + \end{itemize} +\end{frame} + +\begin{frame} + \frametitle{Pratique} + \begin{itemize} + \item Installer le paquet ircd-irc2 ; + \item créer un dicos pour générer le fichier /etc/sysconfig/eole/services/4\_ircd.srv ; + \item dans la famille "services" ajouter la variable "activate\_ircd" ayant pour valeur possible "oui" et "non" ; + \item tester gen\_config. + \end{itemize} +\end{frame} + +\begin{frame} + \frametitle{Langague de template Creole} + \begin{itemize} + \item Variable Creole préfixé par \begin{semiverbatim}\%\%\end{semiverbatim} + \item Test : \begin{semiverbatim}\%if EXPRESSION code if \%else code else \%end if\end{semiverbatim} + \item Test existance : \begin{semiverbatim}\%if \%\%is\_defined('variable') code if \%end if\end{semiverbatim} + \item Boucle : \begin{semiverbatim}\%for \%\%i in EXPRESSION hello \%\%i \%end for\end{semiverbatim} + \item Boucle pour variable multi évolué avec esclave : \begin{semiverbatim}\%for \%\%var in \%\%variablemaitre\end{semiverbatim}\begin{semiverbatim}\%\%var, \%\%var.esclave1, \%\%var.esclave2\end{semiverbatim}\begin{semiverbatim}\%end if\end{semiverbatim} + \end{itemize} +\end{frame} + +\begin{frame} + \frametitle{Les services Creole} + \begin{itemize} + \item les services non-gérés : les services non référencés dans le système de gestion des services ; + \item les services désactivés : retiré du démarrage et arrêté à l'instance/reconfigure : /etc/sysconfig/eole/disabled.srv ; + \item les services activés : mis au démarrage et redémarré à l'instance/reconfigure : /etc/sysconfig/eole/services/*.srv. + \end{itemize} +\end{frame} + +\begin{frame} + \frametitle{Pratique 1} + \begin{itemize} + \item Faire le template /etc/sysconfig/eole/services/4\_ircd.srv ; + \item tester les différentes valeurs et faire reconfigure. + \end{itemize} +\end{frame} + +\begin{frame} + \frametitle{Pratique 2} + \begin{itemize} + \item Installer phpldapadmin ; + \item créer un dicos pour demander l'activation ou non (variable "activate\_phpldapadmin") ; + \item si oui, activer une nouvelle famille "phpldapadmin" ; + \item demander l'adresse IP (phpldapadmin\_host) et le nom du serveur (phpldapadmin\_name) ; + \item copier les templates /etc/phpldapadmin/config.php et /etc/phpldapadmin/apache.conf dans /etc/eole/distrib/ ; + \item le template config.php sera renommé en phpldapadmin.php ; + \item si le nom n'est pas spécifié, le serveur : "Serveur LDAP" ; + \item supprimer la configuration du TLS dans phpldapadmin ; + \item tester sans reconfigurer : /usr/share/creole/creolecat.py -i /etc/eole/config.eol -o config.php /etc/eole/distrib/phpldapadmin.php + \end{itemize} +\end{frame} + +\begin{frame} + \frametitle{Pratique 3} + \begin{itemize} + \item Ajouter la possibilité d'activer ou non le TLS ; + \item possibilité d'ajouter plusieurs serveurs. + \end{itemize} +\end{frame} + +\section{Zéphir} +\begin{frame}{Plan} + \small \tableofcontents[currentsection, hideothersubsections] +\end{frame} + +\begin{frame} + \frametitle{Personnalisation d'un serveur} + \begin{itemize} + \item Liste des fichiers sauvegardés : + \begin{itemize} + \item dictionnaires additionnels + \item fichier appartenant aux dictionnaires additionnels + \item fichier spécifique (exemple généré par EAD) + \item les patches + \item les paquets additionnels + \end{itemize} + \end{itemize} +\end{frame} + +\begin{frame} + \frametitle{Pratique} + \begin{itemize} + \item Ajouter les fichiers personnalisés dans l'application Zéphir pour Scribe2 ; + \item ajouter la dépendance pour les paquets ; + \item envoyer la configuration. + \end{itemize} +\end{frame} + + +\begin{frame} + \frametitle{Les variantes} + \begin{itemize} + \item Variante : configuration identique applicable à plusieurs serveurs + \item Par défaut chaque module est dans la variante "standard" + \item Création des templates, patchs et dicos éventuels + \item Déplacement dans /etc/eole/patch/variante et /etc/eole/dicos/variante + \item Fichiers ou paquets pas référencés : /usr/share/zephir/zephir\_conf/fichiers\_variante + \item Dans /usr/share/zephir/scripts : ./creation\_variante + \item Mettre à jour une variante : ./maj\_variante + \end{itemize} +\end{frame} + +\begin{frame} + \frametitle{Pratique} + \begin{itemize} + \item Créer une variante ; + \item mettre Scribe2 dans la variante ; + \item enregistrer Scribe2 dans Zéphir. + \end{itemize} +\end{frame} + +\begin{frame} + \frametitle{Exécuter un script sur le client} + \begin{itemize} + \item Exécution sur un serveur ou un groupe de serveurs ; + \item les scripts doivent être dans /usr/share/zephir/scripts/ ; + \item ils doivent avoir l'extension .zephir ; + \item ne pas spécifier l'extension lors de l'exécuxion ; + \item fonctionseole.init\_proc : permet de vérifier si l'action est bloqué ; + \item fonctionseole.zephir(, , ) : log envoyer au Zéphir ; + \item les scripts sont lancés en tant que uucp, si besoin utiliser sudo\_script('monscript.zephir'). + \end{itemize} +\end{frame} + +\begin{frame} + \frametitle{Pratique} + \begin{itemize} + \item Créer un script personnalisé permettant un supprimer un fichier dont le nom est en paramètre. + \end{itemize} +\end{frame} + +\end{document}