\\ {{ images_cahier-301-03-001.png?650 }} \\ ====== Description générale ====== ===== Introduction ===== Le **Cahier-03:** //NethServer, Self Service Password & Active Directory// du "Cours NethServer-301" décrit l'ajout d'un greffon au fichier de configuration de **Self Service Password** afin que ce dernier puisse être utilisé sous **Active Directory**. ===== Self Service Password ===== Pour l'installation de l'application **Self Service Password** sur un //Serveur NethServer//, veuillez consulter le ** [[nethserver_201_cahier_08_self_service_password|Cahier-201-08]] ** //Self Service Password// du "Cours NethServer-201". ===== Annuaire Active Directory ===== Pour migrer un //Serveur NethServer// de **LDAP** vers **Active Directory**, veuillez consulter le ** [[nethserver_301_cahier_02_active_directory|Cahier-301-02]] ** //Migration de LDAP vers Active Directory// du "Cours NethServer-301". ===== But de ce cahier ===== Configurer //Self Service Password// pour une utilisation par un //Serveur NethServer// roulant avec un fournisseur de comptes //Active Directory//. {{Images_Cahier-101-03-006.png?25}} Nous allons utiliser la machine virtuelle du ** [[nethserver_301_cahier_02_active_directory|Cahier-301-02:]] **, //NethServer et migration de LDAP vers Active Directory// du "Cours NethServer-301". Les procédures sont exactement les mêmes pour un Serveur NethServer physique directement branché ou non à l'Internet. {{ Images_Cahier-301-03-002.png?600 }} \\ ===== Cours NethServer-101 ===== Le //Cours NethServer-101//, se voulant une base solide pour la création d'un site de **Commerce en ligne**, comprend plusieurs cahiers: - [[nethserver_101_cahier_01_linux|Cahier-01]]: -> Les bases de Linux. - [[nethserver_101_cahier_02_installations_configurations_logiciels_prerequis|Cahier-02]]: -> Installation et configuration des logiciels prérequis sur le poste de travail. - [[nethserver_101_cahier_03_creation_un_serveur_virtuel|Cahier-03]]: -> Création d'un Serveur NethServer virtuel. - [[nethserver_101_cahier_04_local_certificat_let_encrypt|Cahier-04]]: -> Serveur NethServer LOCAL & Let's Encrypt. - [[nethserver_101_cahier_05_vdsl_fqdn_internet_et_nethserver|Cahier-05]]: -> FAI, modem VDSL, domaine FQDN(( **FQDN**: Dans le //DNS//, un Fully Qualified Domain Name //(FQDN, ou nom de domaine complètement qualifié)// est un nom de domaine qui révèle la position absolue d'un nœud dans l'arborescence //DNS// en indiquant tous les domaines de niveau supérieur jusqu'à la racine. On parle également de domaine absolu, par opposition aux domaines relatifs. Par convention, le //FQDN// est ponctué par un point final.\\ //Référence:// [[https://fr.wikipedia.org/wiki/Fully_qualified_domain_name|https://fr.wikipedia.org/wiki/Fully_qualified_domain_name]]. \\ \\ )) et Serveur NethServer physique. - [[nethserver_101_cahier_06_nethserver_wordPress|Cahier-06]]: -> Installation de WordPress. - [[nethserver_101_cahier_07_nethserver_wordPress_wordfence|Cahier-07]]: -> Installation de l'extension de sécurité Wordfence. - [[nethserver_101_cahier_08_woocommerce_paypal_stripe|Cahier-08]]: -> WooCommerce, comptes chez Stripe et PayPal pour les paiements en ligne. - [[nethserver_101_cahier_09_duplicator_migration|Cahier-09]]: -> Sauvegarde/restauration ou migration d'un site avec l'extension Duplicator. - [[nethserver_101_cahier_10_mandataire_inverse|Cahier-10]]: -> Serveur mandataire inversé. - [[nethserver_101_cahier_11_nethserver_backuppc|Cahier-11]]: -> Sauvegarde/restauration avec BackupPC. ==== Cours NethServer-201 ==== Le //Cours NethServer-201// décrit l'installation et la configuration d'applications sur un //Serveur NethServer//. - [[nethserver_201_cahier_01_nethserver_et_dolibarr|Cahier-201-01]]: -> Dolibarr. - [[nethserver_201_cahier_02_odoo_12|Cahier-201-02]]: -> Odoo-12. - [[nethserver_201_cahier_03_mediawiki|Cahier-201-03]]: -> MediaWiki. - [[nethserver_201_cahier_04_dokuwiki|Cahier-201-04]]: -> DokuWiki. - [[nethserver_201_cahier_05_moodle|Cahier-201-05]]: -> Moodle. - [[nethserver_201_cahier_06_proxmox|Cahier-201-06]]: -> Proxmox. - [[nethserver_201_cahier_07_flectra|Cahier-201-07]]: -> Flectra. - [[nethserver_201_cahier_08_self_service_password|Cahier-201-08]]: -> Self Service Password. ==== Cours NethServer-301 ==== Le //Cours NethServer-301// décrit l'annuaire //Active Directory// roulant sur un //Serveur NethServer//. - [[nethserver_301_cahier_01_RSAT|Cahier-301-01]]: -> RSAT //(Remote Server Administration Tools)//. - [[nethserver_301_cahier_02_active_directory|Cahier-301-02]]: -> NethServer et migration de //LDAP// vers //Active Directory//. - [[nethserver_301_cahier_03_self_service_password_active_directory|Cahier-301-03]]: -> Active Directory & Self Service Password. - [[nethserver_301_cahier_04_ad_jonction_de_stations|Cahier-301-04]]: -> Active Directory & jonction de stations. ==== Logiciels ==== Tous les logiciels nécessaires sont du domaine public ou LIBRE sous licence //GPL//; ils ne coûtent pas un sou. Le seul achat nécessaire est l'obtention d'un nom de domaine au prix initial de $15 CAD et son renouvellement annuel d'environ $30 CAD. ==== But final du Cours NethServer-101 ==== Après avoir suivi le //Cours NethServer-101//, vous posséderez un site de //Commerce en ligne// fiable et hautement sécuritaire. De plus, vous pourrez utiliser un clone de votre site, sur un //Serveur NethServer// virtuel roulant sur votre poste de travail, pour tester de nouvelles extensions et applications sans compromettre la sécurité ou l'intégrité de votre site en ligne. {{ NS-101_001_Diagramme.png?500 }} ===== Particularités de ce document ===== ==== Notes au lecteur ==== * Les captures d'écrans ne sont que des références.\\ ** Les informations écrites ont préséance sur celles retrouvées dans les captures d'écrans. Veillez vous référer aux différents tableaux lorsque ceux-ci sont présents.\\ *** Une capture d'écran avec une accentuation en magenta indique qu'il faut remplacer cette distinction par vos propres paramètres ou implique un choix laissé à votre appréciation. ==== Conventions ==== {{Images_icone-201-001_doigt.png?22}} Manipulation, truc ou ruse pour se tirer d'embarras.\\ {{Images_icone-201-002_Lumiere.png?25}} Une recommandation ou astuce.\\ {{Images_icone-201-003_Note.png?25}} Une note.\\ {{Images_icone-201-004_Triangle.png?25}} Une étape, note ou procédure à surveiller.\\ {{Images_icone-201-005_Non-termine.png?25}} Paragraphe non complété ou non vérifié.\\ {{Images_icone-201-006_Securite.png?25}} Danger pour la sécurité du système. Toutes les commandes à la console ou à travers //PuTTY// sont précédées d'une invite qui est toujours présente. [root@dorgee ~]# ping 10.10.10.75 -c1 PING 10.10.10.75 (10.10.10.75) 56(84) bytes of data. 64 bytes from 10.10.10.75: icmp_seq=1 ttl=64 time=1.63 ms --- 10.10.10.75 ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 1.639/1.639/1.639/0.000 ms [root@dorgee ~]# Commande à exécuter si ce n'est déjà fait. Commande indiquée à titre d'information seulement. \\ ====== À savoir ====== {{ Images_Cahier-301-03-002.png?600 }} \\ ===== Serveur NethServer-7.6.1810 ===== Le //Serveur NethServer-7.6.1810// est un dérivé de la distribution Linux CentOS et est équivalent à //CentOS-7.6.1810//. ==== dorgee.micronator.org ==== - Serveur passerelle pour les connexions à l'Internet. - Serveur //DHCP// pour tout le réseau LOCAL //192.168.1.0/24//. ==== tchana.micronator-dev.org ==== Serveur virtuel LOCAL sous //VirtualBox Version 6.0.4 r128413 (Qt5.6.2)//. ===== Poste de travail ===== Windows-8.1, on utilisera ce poste de travail comme station d'administration pour tout ce document. ===== Éditeur de texte ===== Ne modifiez pas les fichiers avec des éditeurs de documents tels //Notepad//, //TextEdit// ou autres qui ajoutent une //marque d'ordre d'octets// //(byte order marks)// aux fichiers et qui casse le programme //PHP//. Utilisez plutôt un éditeur de code tel //vi//, //vim//, //Notepad++//, ou //Atom//. Ces éditeurs gèrent l'encodage des fichiers de manière appropriée; ils peuvent aussi être utilisés pour réparer les fichiers précédemment cassés par les autres éditeurs de documents. ==== Notepad++ ==== Voir le ** [[nethserver_101_cahier_02_installations_configurations_logiciels_prerequis|Cahier-02]] **: //Installations & configurations des logiciels prérequis// du "Cours NethServer-101" pour l'installation et la configuration de cet éditeur. ==== Description ==== //Référence:// [[https://notepad-plus-plus.org/|https://notepad-plus-plus.org/]]. //Notepad++// est un éditeur de code source qui prend en charge plusieurs langages. Ce logiciel, codé en //C++// avec //STL// et //win32 api//, a pour vocation de fournir un éditeur de code source de taille réduite mais très performant. En optimisant de nombreuses fonctions, tout en conservant une facilité d’utilisation et une certaine convivialité, //Notepad++// contribue à la limitation des émissions de dioxyde de carbone dans le monde; en effet, en réduisant l’utilisation du //CPU//, la consommation d’énergie des ordinateurs chute considérablement, en conséquence de quoi, la terre est plus verte. //Site de téléchargement:// [[https://notepad-plus-plus.org/downloads/|https://notepad-plus-plus.org/downloads/]]. ==== Documentation ==== //Guide pratique// //(1er août 2013)//: [[http://nliautaud.developpez.com/tutoriels/web/notepadplusplus-guide-pratique/|http://nliautaud.developpez.com/tutoriels/web/notepadplusplus-guide-pratique/]].\\ //Aide-mémoire// des principales commande: [[https://drive.google.com/file/d/0B86nuTd5nMTKaENHcmliUC1kdnc/edit|https://drive.google.com/file/d/0B86nuTd5nMTKaENHcmliUC1kdnc/edit]]. \\ \\ ====== Préparation de l'environnement de travail ====== {{Images_icone-201-003_Note.png?25}} On répète ce chapitre pour ceux qui n'auraient pas accès au ** [[nethserver_101_cahier_03_creation_un_serveur_virtuel|Cahier-03:]] ** //NethServer Virtuel// du "Cours NethServer-101". ===== Configuration du poste de travail ===== ==== Vérification ==== Voir le chapitre ** [[nethserver_101_cahier_03_creation_un_serveur_virtuel#À savoir|À savoir]] ** du **Cahier-03:** //NethServer Virtuel//. **Centre Réseau et partage -> Modifier les paramètres de la carte ->** clac //(clic droit)// sur la carte Éthernet **-> Statut -> Détails**. ● Nos deux adresses //IP// et nos deux passerelles son présentes. ● **Fermer** toutes les fenêtre. |{{ Images_Cahier-301-02-004.png?500 }}| ''C:\Windows\System32\drivers\etc\hosts''. Les //CNAME// de notre //Serveur NethServer// virtuel LOCAL sont présents. |{{ Images_Cahier-301-02-005.png?500 }}| ===== Installation d'un Serveur NethServer ===== Voir le **[[nethserver_101_cahier_03_creation_un_serveur_virtuel|Cahier-03]]:** //Création d'un Serveur NethServer virtuel// du "Cours NethServer-101". Pour un serveur virtuel de test, prendre un minimum de //8 Go// dynamiquement alloué __pour le disque principal__. ==== Mise à jour du Serveur ==== Avant de commencer quoi que ce soit, il est toujours préférable de mettre à jour le //Serveur NethServer//. ==== Fail2ban & ClamAV ==== Il est fortement recommandé d'installer //Fail2ban// et //ClamAV// pour mieux sécuriser notre futur système. L'installation de ces logiciels est décrite dans le ** [[nethserver_101_cahier_03_creation_un_serveur_virtuel|Cahier-03]]: ** //NethServer Virtuel// du "Cours NethServer-101". \\ \\ ====== Self Service Password & Active Directory ====== ===== Introduction ===== Dans le ** [[nethserver_201_cahier_08_self_service_password|Cahier-201-08:]] ** //NethServer & Self Service Password// du "Cours NethServer-201", nous avons installé //SSP// pour un annuaire //LDAP//. Nous allons modifier son fichier de configuration: ''/usr/share/self-service-password/conf/config.inc.local.php'' afin de l'adapter pour un annuaire //Active Directory//. ===== Annuaire Active Directory ===== Sur le //Serveur NethServer// contrôleur du domaine **AD.MICRONATOR-DEV.ORG**, on affiche les paramètres relatifs à //Active Directory// dont certains seront utilisés pour la configuration de //SSP//. [root@tchana ~]# account-provider-test dump { "BindDN" : "ldapservice@AD.MICRONATOR-DEV.ORG", "LdapURI" : "ldaps://nsdc-tchana.ad.micronator-dev.org", "DiscoverDcType" : "ldapuri", "StartTls" : "", "port" : 636, "host" : "nsdc-tchana.ad.micronator-dev.org", "isAD" : "1", "isLdap" : "", "UserDN" : "dc=ad,dc=micronator-dev,dc=org", "GroupDN" : "dc=ad,dc=micronator-dev,dc=org", "BindPassword" : "OwSvR7Cg_9XbT28w", "BaseDN" : "dc=ad,dc=micronator-dev,dc=org", "LdapUriDn" : "ldap:///dc%3Dad%2Cdc%3Dmicronator-dev%2Cdc%3Dorg" } [root@tchana ~]# Les mots de passe dans //Active Directory// ne sont pas gérés comme dans d'autres annuaires //LDAP//. - Il faut utiliser l'option ''$ad_mode'' pour manipuler ''unicodePwd'' comme champ de mot de passe. # Activation du mode "Active Directory" $ad_mode = true; - On devrait utiliser //SSL// pour la connexion //LDAP//, car //AD// refuse de modifier un mot de passe sous une connexion en clair.\\ Pour nous, il n'est pas nécessaire d'activer l'option ''$ldap_starttls'', car nous utilisons déjà une connexion sécurisée. # Chiffrage de la communication avec le certificat, défaut=false # On utilise déjà HTTPS avec le certificat Let's Encrypt # Ne peut être à "true" si on utilise [$ldap_url = "ldaps://nsdc...";] $ldap_starttls = false; - On doit définir la base de recherche et spécifier un filtre. ## RECHERCHE # Pour définir la base de la recherche $ldap_base = "dc=AD,dc=MICRONATOR-DEV,dc=ORG"; # Filtre de recherche $ldap_filter = "(&(objectClass=user)(sAMAccountName={login})(!(userAccountControl:1.2.840.113556.1.4.803:=2)))"; On peut utiliser les options suivantes: - Forcer le déverrouillage d'un compte lorsque le mot de passe est changé. # Si "true", force le déverrouillage d'un compte lorsque le mot de passe est changé. $ad_options['force_unlock'] = true; - Forcer l'utilisateur à changer de mot de passe à la prochaine connexion. # Si "true", force l'utilisateur à changer de mot de passe à la prochaine connexion. $ad_options['force_pwd_change'] = false; Autoriser l'utilisateur à changer de mot de passe s'il est expiré. # Si "true", autorise l'utilisateur à changer de mot de passe s'il est expiré. $ad_options['change_expired_password'] = true; Configuration de l'emplacement de notre serveur //LDAP//. # LDAP URI pour configurer l'emplacement de votre serveur LDAP # La carte réseau de la station foit avoir dans sa configuration: # 1) une entrée WINS 10.10.10.76 (selon le Cahier-301-04) # 2) Activer NetBIOS sur TCP/IP # OBLIGATOIRE Pour utiliser SSL dans l'URI. $ldap_url = "ldaps://nsdc-tchana.ad.micronator-dev.org"; |{{ Images_Cahier-301-03-003.png?500 }}| Login. ## LOGIN $ldap_login_attribute = "sAMAccountName"; $ldap_fullname_attribute = "cn"; Attribut de messagerie dans //Active Directory//. ## MESSAGERIE DANS AD $mail_attribute = "userPrincipalName"; \\ ===== Gestionnaire des mots de passe ===== Sur le //Serveur NethServer//, on doit créer un compte utilisateur //Active Directory// avec le droit de changer le mot de passe des utilisateurs. ==== Création du compte ==== On crée un compte utilisateur de base sans aucun privilèges supplémentaires. \\ \\ **Gestion -> Utilisateurs et groupes ->** onglet **Utilisateurs -> CRÉER NOUVEAU**. |{{ Images_Cahier-301-03-004.png?500 }}| \\ - **gestionnaire-mdp**.\\ - **Gestionnaire de MDP**. |{{ Images_Cahier-301-03-005.png?500 }}| - Choisir un mot de passe __très robuste__ et non pas notre exemple.\\ - **SOUMETTRE**. |{{ Images_Cahier-301-03-006.png?500 }}| On s'assure du succès de l'opération. |{{ Images_Cahier-301-03-007.png?700 }}| \\ ===== Jonction d'une station de gestion au domaine ===== On joint la station utilisée dans le ** [[nethserver_301_cahier_01_rsat|Cahier-301-01:]] ** //RSAT// au domaine du ** [[nethserver_301_cahier_02_active_directory|Cahier-301-02:]] ** //NethServer & Active Directory//. ==== Configuration de la carte réseau ==== On s'assure de la bonne configuration de la carte réseau de la station à joindre à //Active Directory//. - Clac sur l'**icône réseau**.\\ - **Ouvrir le Centre Réseau et partage**. |{{ Images_Cahier-301-03-008.png?700 }}| \\ **Modifier les paramètres de la carte**. |{{ Images_Cahier-301-03-009.png?700 }}| Double-cliquer sur l'**icône de la carte réseau**. |{{ Images_Cahier-301-03-010.png?700 }}| \\ \\ **Détails...** |{{ Images_Cahier-301-03-011.png?700 }}| - On s'assure de la bonne configuration de la carte.\\ - **Fermer**. |{{ Images_Cahier-301-03-012.png?700 }}| \\ \\ **Fermer** toutes les fenêtres. |{{ Images_Cahier-301-03-013.png?700 }}| ==== Jonction au domaine ==== Clac sur le bouton **Démarrer -> Système -> Paramètres système avancés ->** onglet **Nom de l'ordinateur -> Identité sur le réseau...** **Cet ordinateur appartient à un réseau d'entreprise... -> Suivant**. |{{ Images_Cahier-301-03-014.png?400 }}| **Ma société utilise un réseau comprenant un domaine -> Suivant**. |{{ Images_Cahier-301-03-015.png?400 }}| \\ **Suivant**. |{{ Images_Cahier-301-03-016.png?400 }}| - On entre **admin**/**mot de passe**.\\ - Le nom du domaine est **AD.MICRONATOR-DEV.ORG**.\\ - **Suivant**. |{{ Images_Cahier-301-03-017.png?400 }}| - On choisit un nom pour cette station.\\ - Le nom du domaine est **AD.MICRONATOR-DEV.ORG**.\\ - **Suivant**. |{{ Images_Cahier-301-03-018.png?400 }}| - On entre **admin**/**mot de passe**.\\ - Le nom du domaine est **AD.MICRONATOR-DEV.ORG**.\\ - **OK**. |{{ Images_Cahier-301-03-019.png?400 }}| - Le nom de l'utilisateur **__admin__** est déjà entré.\\ - Le nom du domaine est **AD.MICRONATOR-DEV.ORG**.\\ - **Suivant**. |{{ Images_Cahier-301-03-020.png?400 }}| \\ On veut que l'utilisateur **__admin__** soit //__administrateur__// de la station de travail.\\ - **Administrateur**.\\ - **Suivant**. |{{ Images_Cahier-301-03-021.png?400 }}| \\ \\ \\ \\ **Terminer**. |{{ Images_Cahier-301-03-023.png?400 }}| \\ **OK**. |{{ Images_Cahier-301-03-024.png?400 }}| \\ **Redémarrer maintenant**. |{{ Images_Cahier-301-03-025.png?400 }}| Après le redémarrage, l'utilisateur **__admin__** se logue à la station. |{{ Images_Cahier-301-03-026.png?400 }}| \\ ===== Délégation de contrôle ===== //Référence:// [[https://ltb-project.org/documentation/self-service-password/latest/config_ldap?s[]=active&s[]=directory|https://ltb-project.org/documentation/self-service-password/latest/config_ldap?s[]=active&s[]=directory]]. {{ Images_Cahier-301-03-027.png?800 }} \\ Nous déléguons le contrôle de la gestion des mots de passe à l'utilisateur **__gestionnaire-mdp__** créé au paragraphe ** [[nethserver_301_cahier_03_self_service_password_active_directory#Gestionnaire des mots de passe|Gestionnaire des mots de passe]] **. Si l'utilisateur **__admin__** n'est pas encore logué à la station de gestion //WIN-81//, il se logue. {{Images_Cahier-101-03-006.png?25}} Il s'écoulera un certain temps après s'être logué, car le système va créer l'environnement de travail pour l'utilisateur **__admin__**, être patient! ==== Ajout d'un raccourci ==== |{{ Images_Cahier-301-03-029.png?400 }}| Vu que l'utilisateur **__admin__** ne s'est jamais logué sur la station de gestion, il n'a pas de raccourci pour lancer le //Gestionnaire de serveur// //RSAT//. On lui ajoute donc un raccourci sur la barre des tâches. On lance la recherche pour trouver **//servermanager//**. Clac sur **Gestionnaire de serveur -> Épingler à la barre des tâches**. |{{ Images_Cahier-301-03-028.png?750 }}| ==== Délégation de contrôle pour les mots de passe ==== Sur la barre de tâches, on lance le //Gestionnaire de serveur// en cliquant sur **son icône** ou on exécute ''dsa.msc'' pour se rendre directement à //Utilisateurs et ordinateurs Active Directory//. **Outils -> Utilisateurs et ordinateurs Active Directory**. |{{ Images_Cahier-301-03-030.png?400 }}| Clac sur **ad.micronator-dev.org -> Délégation de contrôle...** |{{ Images_Cahier-301-03-031.png?400 }}| \\ **Suivant**. |{{ Images_Cahier-301-03-032.png?400 }}| \\ **Ajouter**. |{{ Images_Cahier-301-03-033.png?400 }}| On entre **gestionnaire -> Vérifier les noms -> OK**. |{{ Images_Cahier-301-03-034.png?400 }}| - L'utilisateur est ajouté.\\ - **Suivant**. |{{ Images_Cahier-301-03-035.png?400 }}| \\ - **Créer une tâche personnalisée à déléguer**.\\ - **Suivant**. |{{ Images_Cahier-301-03-036.png?400 }}| - **Seulement des objets suivant dans le dossier:**\\ - **Objets Utilisateurs**.\\ - **Suivant**. |{{ Images_Cahier-301-03-037.png?400 }}| \\ - **Générales**.\\ - **Spécifiques aux propriétés**.\\ - **Réinitialiser le mot de passe**. |{{ Images_Cahier-301-03-038.png?400 }}| \\ **Écrire lockoutTimes**. |{{ Images_Cahier-301-03-039.png?400 }}| - **Écrire shadowLastChange**.\\ - **Suivant**. |{{ Images_Cahier-301-03-040.png?400 }}| \\ **Terminer**. |{{ Images_Cahier-301-03-040-a.png?400 }}| Cette délégation de contrôle est terminée. Vous avez choisi de déléguer le contrôle des objets dans le dossier Active Directory suivant : ad.micronator-dev.org/ Les groupes, utilisateurs ou ordinateurs auxquels vous avez délégué le contrôle sont : gestionnaire-mdp (gestionnaire-mdp@micronator-dev.org) Ils ont les autorisations suivantes : Réinitialiser le mot de passe Lire lockoutTime Écrire shadowLastChange pour les types d’objets suivants : Utilisateur ==== Délégation pour l'attribut commentaire ==== Nous allons choisir de stocker la //Question/Réponse// dans l'attribut ''comment'' //(commentaire)// dans //Active Directory//. ## QUESTION DANS AD # Attribut et classe d'objets. # Il faut définir l'attribut dans lequel la réponse sera stockée: # Le nom de l'attribut doit être en minuscule; requis par l'API php-ldap. # Dans AD "extensibleObject" n'est pas reconnu, il faut utliser: $answer_attribute = "comment"; $answer_objectClass = "user"; Après avoir cliqué **Terminer** à la dernière fenêtre de la précédente délégation de contrôle, nous avons été retourné à la fenêtre principale d'//Utilisateurs et ordinateurs Active Directory//. Nous devons créer une nouvelle délégation de contrôle pour accorder des droits sur l'attribut ''commentaire''. Clac sur **ad.micronator-dev.org -> Délégation de contrôle...** |{{ Images_Cahier-301-03-041.png?400 }}| \\ **Suivant**. |{{ Images_Cahier-301-03-042.png?400 }}| \\ **Ajouter**. |{{ Images_Cahier-301-03-043.png?400 }}| \\ On entre **gestionnaire -> Vérifier les noms -> OK**. |{{ Images_Cahier-301-03-044.png?400 }}| \\ - L'utilisateur est ajouté.\\ - **Suivant**. |{{ Images_Cahier-301-03-045.png?400 }}| - **Créer une tâche personnalisée à déléguer**.\\ - **Suivant**. |{{ Images_Cahier-301-03-046.png?400 }}| - **Seulement des objets suivants dans le dossier:**\\ - **Objets Utilisateur**.\\ - **Suivant**. |{{ Images_Cahier-301-03-047.png?400 }}| - **Spécifique aux propriétés**.\\ - **Lire Commentaire**.\\ - **Écrire Commentaire**.\\ - **Suivant**. |{{ Images_Cahier-301-03-048.png?400 }}| \\ \\ \\ **Terminer**. |{{ Images_Cahier-301-03-049.png?400 }}| Vous avez choisi de déléguer le contrôle des objets dans le dossier Active Directory suivant : ad.micronator-dev.org/ Les groupes, utilisateurs ou ordinateurs auxquels vous avez délégué le contrôle sont : gestionnaire-mdp (gestionnaire-mdp@micronator-dev.org) Ils ont les autorisations suivantes : Lire Commentaire Écrire Commentaire pour les types d’objets suivants : Utilisateur L'utilisateur **__admin__** peut se déconnecter de la station de gestion. Nous avons maintenant les paramètres pour la connexion de //SSP// à //Active Directory//. # Qui peut changer les mots de passe $who_change_password = "gestionnaire-mdp"; # DN et mot de passe de l'utilisateur gestionnaire-mdp. # Le DN du compte créé dans AD et qui a le droit de changer les mots de passe. $ldap_binddn = "gestionnaire@MICRONATOR-DEV.ORG"; $ldap_bindpw = "fghtbgh"; \\ ===== Fichier complet de la configuration de SSP ===== {{Images_Cahier-101-03-003.png?22}} {{Images_Cahier-101-03-006.png?25}} Attention si vous prenez ce fichier depuis le //PDF// de ce document. Lors de la copie, les en-têtes et les pieds de page sont aussi inclus. Il faut coller la copie dans //NotePad++// et enlever les en-têtes et pieds de page. ==== Mise en commentaire de la section LDAP ==== {{Images_icone-201-003_Note.png?25}} Nous devons mettre en commentaire la section //LDAP//.\\ Pour mettre une section en commentaire, nous ajoutons /* au début de la section et */ à sa fin. ... /* ##### LDAP EN TANT QUE FOURNISSEUR DES COMPTES - DÉBUT ... ##### LDAP EN TANT QUE FOURNISSEUR DES COMPTES - FIN */ ... Nouveau fichier ''/usr/share/self-service-password/conf/config.inc.local.php'' modifié pour //Active Directory//.\\ {{Images_Cahier-101-03-006.png?25}} Modifiez pour __votre nom de domaine__ et vos __clés__ //reCaptcha//. false $notify_on_change = true; ## Action par défaut # Par défaut, la page de modification du mot de passe est affichée. Vous pouvez # configurer quelle page doit être affichée lorsqu'aucune action n'est définie. # Valeurs possibles: # change <- défaut # sendtoken <- tout faire par jeton courriel # sendsms >- utiliser le courrier SMS $default_action = "change"; ## Utilisation de sms # Pour activer cette fonctionnalité, il faut que l'usager ait déjà spécifié son numéro de # mobile dans ses préférences. Disponible avec le module NethServer "WebTop 5 groupware". # défaut -> false $use_sms = false; ##### QUESTION DÉBUT # Vous pouvez activer ou désactiver la fonctionnalité de changement de mot de passe par # question. # défaut -> false $use_questions = true; # Les mots-clé doivent être en minuscule et sans accents. $messages['questions']['voiture'] = "Quelle fut votre première voiture?"; $messages['questions']['ecole'] = "L'école primaire de votre 1ère année?"; $messages['questions']['ami'] = "Quel était le mom de votre meilleur ami d'enfance?"; $messages['questions']['datenaissance'] = "Quelle est votre date de naissance: AAAA-MM-JJ?"; $messages['questions']['saison'] = "Quelle est votre saison préférée?"; # Vous devez configurer $keyphrase (Phrase de passe) pour que le chiffrement de la réponse # fonctionne. À votre choix, mais ne doit pas être modifiée par la suite. $keyphrase = "ABCdefGHIjkl"; # Chiffrage de la réponse à la question dans l'annuaire. # défaut -> true # Pour la compatibilité avec Active Directory -> false $crypt_answers = false; ##### QUESTION FIN ##### STRATÉGIE DE MOT DE PASSE LOCAL - DÉBUT # Celle-ci est appliquée avant la politique de mot de passe de l'annuaire. # # Défaut à -1, le mot de passe n'expire jamais # $shadow_options['shadow_expire_days'] = -1; # Longueur minimale. $pwd_min_length = 7; # Longueur maximale. # Définir à 0 pour désactiver le contrôle de la longueur maximale. $pwd_max_length = 16; # Nombre minimum de caractères en minuscule. $pwd_min_lower = 3; # Nombre maximal de caractères en majuscule. $pwd_min_upper = 1; # Nombre minimum de caractères numériques. $pwd_min_digit = 1; # Nombre minimum de caractères non-alphanumériques. $pwd_min_special = 1; # L'expression employée ci-dessous signifie que les caractères spéciaux sont tous les # caractères sauf les caractères alphabétiques et numériques. $pwd_special_chars = "^a-zA-Z0-9"; # Caractères défendus. # Vous pouvez empêcher certains caractères d'être utilisés dans le mot de passe. $pwd_forbidden_chars = "@"; # Ne pas réutiliser le même mot de passe qu'actuellement. # true <- Défaut ** On ne peut pas utiliser le même mot de passe. # false ** On peut utiliser le même mot de passe. $pwd_no_reuse = true; # Vérifier que le mot de passe est différent de celui du login. $pwd_diff_login = true; # Vous pouvez définir le nombre de classes de caractères différentes # (minuscule, majuscule, chiffre, non-alphanumérique) dans le mot de passe. $pwd_complexity = 2; # Permet de vérifier si le mot de passe a déjà été compromis, en utilisant la # base de données https://haveibeenpwned.com/. # Défaut -> false. $use_pwnedpasswords = false; # Afficher le message des contraintes de la stratégie de mot de passe: # always <- défaut. # never # onerror $pwd_show_policy = "always"; # Endroit pour affichager le message de la stratégie de mot de passe: # above - (en haut) <- défaut # below - (en bas) $pwd_show_policy_pos = "above"; ##### STRATÉGIE DE MOT DE PASSE LOCAL - FIN ##### LOGO $logo = "images/logo_Micronator_250x65_TB.png"; ##### JOURNAL # Par défaut, les URL générées sont consignées dans le journal des erreurs Apache. # Ce comportement peut être modifié pour les insérer dans un fichier spécifique. # L'utilisateur Apache doit avoir le droit d'écriture sur ce fichier. $reset_request_log = "/var/log/self-service-password"; /* ##### LDAP EN TANT QUE FOURNISSEUR DES COMPTES - DÉBUT # Adresse du serveur # Ce paramètre se trouve dans le fichier: /etc/libuser.conf # Pour utiliser SSL, définiR ldaps dans l'URL. $ldap_url = "ldaps://127.0.0.1"; ## Justificatif - nom et mot de passe # Ces paramètres se trouvent dans le fichier: /etc/libuser.conf $ldap_binddn = " cn=libuser,dc=directory,dc=nh"; $ldap_bindpw = "kN_7IjCs24FxCrGn"; # Celui qui change les mots de passe. $who_change_password = "manager"; # Recherche # Pour définir la base de la recherche et le filtre de recherche. # Ces paramètres se trouvent dans le fichier: /etc/libuser.conf $ldap_base = "dc=directory,dc=nh"; # Filtre pour la recherche $ldap_filter = "(&(objectClass=person)(uid={login})(!(uid=admin)))"; # Définit l'attribut LDAP où est stockée l'adresse courriel de l'utilisateur. $mail_attribute = "mail"; # Attribut de la réponse # Définit l'attribut dans lequel la réponse à la question sera stockée. Le nom # de l'attribut doit être en minuscule, ceci est requis par l'API php-ldap. $answer_objectClass = "extensibleObject"; $answer_attribute = "info"; ##### LDAP EN TANT QUE FOURNISSEUR DES COMPTES - FIN */ ##### CONNECTION ACTIVE DIRECTORY - DÉBUT ##### # https://ltb-project.org/documentation/self-service-password/latest/config_ldap?s[]=active&s[]=directory # You need to have an account on Active Directory with rights to change # password of users. To set the minimum rights for this account, do the following: # 1)Create a basic domain account without any additional privileges # 2)Use Delegate control wizard within “User and computers”, then # a) User Object # b) Reset Password # c) Write lockoutTime (if unlock is enabled) # d) Write shadowlastchange # 3)If you enabled the reset by questions feature, you also need to give rights # on the question attribute: # a) Right click the OU where you want delegation of permissions to # propagate down from and select “Delegate Control…” # b) Add the account to delegate to, click Next # c) Create a custom task to delegate # d) Select the radio button for “Only the following objects in the folder”, # then select “User objects” at the bottom of the list, click Next # e) Select the “Property-specific” checkbox only, then locate the attribute # you are using to store the “Reset by questions” answer in. # Activation du mode "Active Directory" $ad_mode = true; # Chiffrage de la communication avec le certificat, défaut=false # On utilise déjà HTTPS avec le certificat Let's Encrypt # Ne peut être à "true" si on utilise [$ldap_url = "ldaps://nsdc...";] $ldap_starttls = false; ## RECHERCHE # Pour définir la base de la recherche $ldap_base = "dc=AD,dc=MICRONATOR-DEV,dc=ORG"; # Filtre de recherche $ldap_filter = "(&(objectClass=user)(sAMAccountName={login})(!(userAccountControl:1.2.840.113556.1.4.803:=2)))"; # Si "true", force le déverrouillage d'un compte lorsque le mot de passe est changé. $ad_options['force_unlock'] = true; # Si "true", force l'utilisateur à changer de mot de passe à la prochaine connexion. # $ad_options['force_pwd_change'] = true; # Si "true", autorise l'utilisateur à changer de mot de passe s'il est expiré. $ad_options['change_expired_password'] = true; # LDAP URI pour configurer l'emplacement de votre serveur LDAP # La carte réseau de la station foit avoir dans sa configuration: # 1) une entrée WINS 10.10.10.76 # 2) Activer NetBIOS sur TCP/IP # OBLIGATOIRE Pour utiliser SSL dans l'URI. $ldap_url = "ldaps://nsdc-tchana.ad.micronator-dev.org"; ## LOGIN $ldap_login_attribute = "sAMAccountName"; $ldap_fullname_attribute = "cn"; ## QUESTION DANS AD # Attribut et classe d'objets. # Il faut définir l'attribut dans lequel la réponse sera stockée: # Le nom de l'attribut doit être en minuscule; requis par l'API php-ldap. # Dans AD "extensibleObject" n'est pas reconnu, il faut utliser: $answer_attribute = "comment"; $answer_objectClass = "user"; ## MAIL DANS AD $mail_attribute = "userPrincipalName"; # Qui peut changer les mots de passe $who_change_password = "gestionnaire-mdp"; # DN et mot de passe de l'utilisateur gestionnaire-mdp. # Le DN du compte créé dans AD et qui a le droit de changer les mots de passe. $ldap_binddn = "gestionnaire-mdp@MICRONATOR-DEV.ORG"; $ldap_bindpw = "fghtbgh"; ##### CONNECTION ACTIVE DIRECTORY - FIN ##### ##### COURRIELS - DÉBUT # 1) Tout d'abord, l'utilisateur entrera son identifiant et son adresse # adresse courriel. Un courriel lui est alors envoyé. # 2) Ensuite, l'utilisateur clique sur le lien dans le courriel reçu et peut alors # définir un nouveau mot de passe. # Les sessions PHP sont utilisées pour stocker et récupérer les jetons côté serveur. # On peut activer/désactiver cette fonction avec le paramètre "$use_tokens" ci-dessous. # Défaut "false" désactive, et l'icône n'apparaît plus en haut de l'écran. $use_tokens = true; # Adresse courriel # Vous pouvez également éviter de demander l'adresse courriel de l’utilisateur, seul son # identifinat lui sera demandé. L'adresse courriel est récupérée depuis LDAP. # Le défaut "false" demande l'adresse courriel et l'utilisateur doit entrer son adresse # courriel. La valeur "true" ne la demande pas. $mail_address_use_ldap = true; # Chiffrement des jetons # Vous pouvez chiffrer les jetons pour protéger l'identifiant de session. # true <- défaut $crypt_tokens = true; # Durée de vie des jetons (en secondes) # Vous devez définir une durée de vie pour les jetons, afin qu'ils soient supprimés s'ils ne # sont pas utilisés. # Défaut "3600". $token_lifetime = "3600"; # De qui le courriel doit-il provenir? $mail_from = "admin@micronator-dev.org"; $mail_from_name = "Service des mots de passe"; $mail_signature = ""; # Configuration de PHPMailer (voir https://github.com/PHPMailer/PHPMailer) $mail_sendmailpath = '/usr/sbin/sendmail'; $mail_protocol = 'sendmail'; $mail_smtp_debug = 0; $mail_debug_format = 'html'; #défaut=error_log $mail_contenttype = 'text/plain'; $mail_wordwrap = 0; $mail_charset = 'utf-8'; $mail_priority = 3; $mail_newline = PHP_EOL; ##### COURRIELS - FIN ##### reCAPTCHA v2 de Google - DÉBUT ## CAPTCHA # 2019-11-18_16h00 / VotreNomDeCourriel@gmail.com // Indice sur votre mot de passe GooGle # défaut=false pour ne pas utiliser reCAPTCHA $use_recaptcha = true; $recaptcha_publickey = "votre clé publique reCAPTCHA v2 de Google"; $recaptcha_privatekey = "votre clé privée reCAPTCHA v2 de Google"; # Personnalisation (voir https://developers.google.com/recaptcha/docs/display) $recaptcha_theme = "light"; $recaptcha_type = "image"; $recaptcha_size = "normal"; # Méthode de requête reCAPTCHA # 'null' <- défaut, mais non-fonctionnel. # '\ReCaptcha\RequestMethod\CurlPost' <- fonctionnel. $recaptcha_request_method = '\ReCaptcha\RequestMethod\CurlPost'; ##### reCAPTCHA v2 de Google - FIN ##### FIN DU FICHIER DE CONFIGUTATION SSP: config.inc.local.php \\ ===== Sauvegarde du répertoire de SSP ===== On vérifie si le nom du répertoire ''/usr/share/self-service-password/'' est déjà inclus dans le fichier d'inclusion de la sauvegarde des données ''/etc/backup-data.d/custom.include'', sinon on l'insère. {{Images_Cahier-101-03-006.png?25}} Prendre tout le contenu de l'encadré pour la commande. NouvelleInclusion="/usr/share/self-service-password/" if grep -Fxq "$NouvelleInclusion" /etc/backup-data.d/custom.include then # L'entrée a été trouvée dans custom.include echo -e "\nLe fichier custom.include contient déjà l'entrée:\n$NouvelleInclusion \n" else # L'entrée n'a pas été trouvée dans custom.include echo -e "$NouvelleInclusion" >> /etc/backup-data.d/custom.include echo -e "\nL'entrée: $NouvelleInclusion a été ajoutée\n" fi On vérifie. [root@tchana ~]# cat /etc/backup-data.d/custom.include | grep /usr/share/self-service-password/ /usr/share/self-service-password/ [root@tchana ~]# Ci-dessus, il n'y a pas de ligne vide avant ''/usr/share/self-service-password/''. Nous en avons insérée une afin de faciliter la copie de la commande.
Voilà, vous pouvez maintenant utiliser Self Service Password avec Active Directory.
\\ On se rend à notre page //SSP:// https://www.micronator-dev.org/ssp\\ et notre page d'acceuil de //Self Service Password// s'affiche. {{ Images_Cahier-301-03-050.png?700 }} \\ ===== Instantané VirtualBox ===== {{Images_Cahier-101-03-004.png?25}} À ce stade-ci, on peut prendre un instantané de la machine virtuelle afin de pouvoir y revenir en cas d'une future erreur de manipulation. \\ \\ ====== Exemples d'utilisation ====== ===== Référence ===== Ce chapitre provient de celui du ** [[nethserver_201_cahier_08_self_service_password#Exemples d'utilisation#Exemples d'utilisation| Cahier-201-08:]] ** //NethServer & Self Service Password// du "Cours NethServer-201". Nous le reproduisons ici au cas où l'étudiant n'aurait pas accès au //Cahier-201-08//. ===== Vérification de reCaptcha ===== On se rend à notre page //SSP//: https://www.micronator-dev.org/ssp. \\ On clique **Je ne suis pas un robot**. |{{ Images_Cahier-301-03-052.png?400 }}| - On sélectionne les **images**.\\ - **VALIDER**. |{{ Images_Cahier-301-03-053.png?400 }}| \\ Notre sélection d'images est validée. |{{ Images_Cahier-301-03-054.png?400 }}| \\ ===== Préparation pour les autres exemples ===== ==== reCaptcha ==== Vu que nous venons de vérifier le fonctionnement de //reCaptcha//, on peut désactiver cette fonction. [root@tchana ~]# sed -i 's/\$use_recaptcha \= true\;/\$use_recaptcha \= false\;/' /usr/share/self-service-password/conf/config.inc.local.php [root@tchana ~]# On vérifie. [root@tchana ~]# cat /usr/share/self-service-password/conf/config.inc.local.php | grep "use_recaptcha =" $use_recaptcha = false; [root@tchana ~]# ==== Stratégie de mot de passe ==== On vérifie l'affichage de la stratégie de mot de passe. [root@tchana ~]# cat /usr/share/self-service-password/conf/config.inc.local.php | grep "pwd_show_policy" $pwd_show_policy = "always"; $pwd_show_policy_pos = "above"; [root@tchana ~]# Nous changeons la stratégie pour l'affichage en cas d'erreur seulement (onerror). [root@tchana ~]# sed -i 's/show_policy = "always"/show_policy = "onerror"/' /usr/share/self-service-password/conf/config.inc.local.php [root@tchana ~]# On vérifie. [root@tchana ~]# cat /usr/share/self-service-password/conf/config.inc.local.php | grep "show_policy =" $pwd_show_policy = "onerror"; [root@tchana ~]# \\ ===== Changement standard du mot de passe ===== L'utilisateur **__toto__** change son mot de passe. |{{ Images_Cahier-301-03-055.png?400 }}| L'opération a réussie. |{{ Images_Cahier-301-03-056.png?400 }}| L'utilisateur **__toto__** se connecte à //Webmail//. |{{ Images_Cahier-301-03-057.png?400 }}| Il a reçu un courriel indiquant que son mot de passe a été changé. |{{ Images_Cahier-301-03-058.png?400 }}| \\ ===== Enregistrement d'une réponse à une question ===== **Question -> enregistré une question**. |{{ Images_Cahier-301-03-059.png?400 }}| L'utilisateur **__toto__** choisit une question et y répond. |{{ Images_Cahier-301-03-060.png?400 }}| |{{ Images_Cahier-301-03-061.png?400 }}| {{Images_Cahier-101-03-006.png?25}} La conformité de la réponse à la question n'est pas vérifiée. On peut entrer une réponse bidon très longue, mais lorsqu'on changera son mot de passe par question, il faudra utiliser la même question et __donner exactement la même réponse bidon__. ===== Changement par question ===== L'utilisateur **__toto__** répond à sa question et change son mot de passe. |{{ Images_Cahier-301-03-062.png?400 }}| \\ L'opération a réussi. |{{ Images_Cahier-301-03-063.png?400 }}| ===== Changement par jeton ===== **Mail ->** l'utilisateur **__toto__** entre son identifiant **-> Envoyer**. |{{ Images_Cahier-301-03-064.png?400 }}| Un courriel a été envoyé. |{{ Images_Cahier-301-03-065.png?400 }}| Si ce n'est déjà fait, l'utilisateur **__toto__** se connecte à //Webmail//. |{{ Images_Cahier-301-03-066.png?400 }}| \\ L'utilisateur **__toto__** clique le **lien reçu**. |{{ Images_Cahier-301-03-067.png?400 }}| L'utilisateur **__toto__** entre son nouveau mot de passe et le confirme **-> Envoyer**. |{{ Images_Cahier-301-03-068.png?400 }}| \\ L'opération a réussi. |{{ Images_Cahier-301-03-069.png?400 }}| \\ ===== Erreur dûe à la stratégie de mot de passe ===== Au paragraphe ** [[nethserver_301_cahier_03_self_service_password_active_directory#Stratégie de mot de passe|Stratégie de mot de passe]] **, nous avons choisi d'afficher la stratégie de mot de passe seulement lors d'un manque de conformité à la stratégie. \\ L'utilisateur **__toto__** entre un mot de passe sans caractères spéciaux. |{{ Images_Cahier-301-03-070.png?400 }}| - L'erreur est signalée.\\ - La stratégie de mot de passe est affichée. |{{ Images_Cahier-301-03-071.png?400 }}| ==== reCaptcha ==== On réactive reCaptcha. [root@tchana ~]# sed -i 's/\$use_recaptcha \= false\;/\$use_recaptcha \= true\;/' /usr/share/self-service-password/conf/config.inc.local.php [root@tchana ~]# On vérifie. [root@tchana ~]# cat /usr/share/self-service-password/conf/config.inc.local.php | grep "use_recaptcha =" $use_recaptcha = true; [root@tchana ~]# ==== Stratégie de mot de passe ==== On remet l'affichage de la stratégie de mot de passe à ''always''. [root@tchana ~]# sed -i 's/show_policy = "onerror"/show_policy = "always"/' /usr/share/self-service-password/conf/config.inc.local.php [root@tchana ~]# On vérifie. [root@tchana ~]# cat /usr/share/self-service-password/conf/config.inc.local.php | grep "show_policy =" $pwd_show_policy = "always"; [root@tchana ~]#
Notre installation de Self Service Password fonctionne correctement dans son entier.
\\ \\ ====== Introduction à l'éditeur vi ====== //Référence:// http://www.iro.umontreal.ca/~dift3830/vi.html. //(Dernière consultation, le 30 mai 2016. Novembre 2018, ce lien n'est plus fonctionnel.)// **''vi''** est un éditeur de texte très puissant. Sa convivialité par contre lui fait défaut. Ceci dit, il est toujours utile d'en connaître les rudiments, car son omniprésence est presque garantie sur les systèmes modernes. La documentation de ''vi'' étant très abondante, on se limitera pour cette démo aux commandes les plus usuelles. Tout d'abord l'invocation. On peut invoquer ''vi'' à partir du shell de plusieurs façons dont en voici quelques-unes: - **''vi''**: -> ouvre ''vi'' avec un contenu vide. - **''vi nom_de_fichier''**: -> ouvre un fichier et l'affiche à l'écran. - **''vi +nom_de_fichier''**: -> ouvre un fichier et positionne le curseur à la fin de celui-ci. Dès son invocation, ''vi'' se met en mode **commande**, dans ce mode il est possible d'entrer les commandes qui seront vues plus bas. Si on tape une commande susceptible de modifier un texte //(insertion d'un caractère par exemple)//, ''vi'' bascule en mode **édition**; dans ce mode tout caractère tapé sera considéré comme faisant partie du texte, tandis que les caractères saisis en mode //commande//, seront eux interprétés comme étant des commandes et ne seront jamais rajoutés au texte. Afin de basculer du mode //édition// au mode //commande// il suffit de presser la touche **[Échap]**. Nous allons commencer par invoquer ''vi'' à partir du shell en tapant: vi Ce qui devrait donner l'affichage ci-contre: ''vi'' est déjà en mode //commande//, pour le faire passer en mode //édition//, on tape la commande ''i'' //(insert)// qui nous permet d'insérer du texte. i |{{ Images_Cahier-101-01-018.png?400 }}| Après avoir tapé le texte suivant: vi est un éditeur de texte très utile pour la communauté des administrateurs. On obtient l'affichage ci-contre. |{{ Images_Cahier-101-01-019.png?400 }}| Après cela, on pourrait passer en mode //commande// par simple pression sur la touche [Échap]. Une fois en mode //commande//, on voudrait par exemple, éliminer la ligne blanche qui se trouve juste après la première. Pour ce faire, on positionne le curseur a la hauteur de la 2e ligne et on tape ''dd''. Ceci aura pour effet de supprimer la ligne. Si on est satisfait, il ne nous reste plus qu'à sauvegarder le document sous le nom ''texte1.txt'' à l'aide de la commande suivante: :w texte1.txt //(Pour les sauvegardes ultérieures, il n'est pas nécessaire d'ajouter le nom du fichier)//. Afin de quitter ''vi'' il suffit de taper la commande: :q texte1.txt Les commandes abondent dans ''vi'', on n'en citera que quelques-unes. ^ \\ Principales commandes de vi ^^ |//**Commande**//|//**Effets**//| |i (insert)|Insère un texte sur le curseur| |I|Insère au début de la ligne| |a (append)|Insère après le curseur| |A|Insère à la fin de la ligne| |Les flèches|pour les déplacements| |Ctrl-F (forward)|Défiler d'un écran vers le bas| |Ctrl-B (backward)|Défiler d'un écran vers le haut| |nG (goto)|va à la nième ligne dans le texte| |G|Va à la fin du texte| |x|Effacer le caractère courant| |dd|Effacer la ligne courante| |D|Effacer depuis la position du curseur jusqu'à la fin de la ligne| |db (DeleteBegining)|Effacer depuis la position courante jusqu'au début de la ligne| |/chaîne|rechercher la chaîne 'chaîne' dans le texte, on peut taper 'n' pour voir les autres occurrences| |:w fichier|copie le texte courant sur le disque sous le nom fichier | |:wq (write & quit)|écrit le fichier sur le disque et quitte vi.| |:q!|Quitter sans sauvegarder.| |:set nu|Affiche le numérotage des lignes.| \\ \\ {{NS-101_002_Banniere_Victoire.png?50}} Victoire totale, hissons la bannière de la victoire. \\ ---- ====== Crédits ====== © 2019 RF-232\\ Auteur: Michel-André.\\ Remerciement: Tous les contributeurs GNU/GPL.\\ Intégré par: Michel-André Robillard CLP\\ Contact: michelandre at micronator.org Répertoire de ce document: E:\000_DocPourRF232_general\RF-232_NethServer-301\RF-232_Cours_NethServer-301-03_AD-SelfServicePassword_2019-12-25_11h52.odt. Historique des modifications: ^Version^Date^Commentaire^Auteur| |0.0.1|2019-10-02|Début.|M.-A. Robillard|
===== AVIS DE NON-RESPONSABILITÉ ===== Ce document est uniquement destiné à informer. Les informations, ainsi que les contenus et fonctionnalités de ce do­cument sont fournis sans engagement et peuvent être modifiés à tout moment. RF‑232 n'offre aucune garantie quant à l'actualité, la conformité, l'exhaustivité, la qualité et la durabilité des informations, contenus et fonctionnalités de ce document. L'accès et l'utilisation de ce document se font sous la seule responsabilité du lecteur ou de l'utilisateur. RF‑232 ne peut être tenu pour responsable de dommages de quelque nature que ce soit, y compris des dommages di­rects ou indirects, ainsi que des dommages consécutifs résultant de l'accès ou de l'utilisation de ce document ou de son contenu. Chaque internaute doit prendre toutes les mesures appropriées //(mettre à jour régulièrement son logiciel antivirus, ne pas ouvrir des documents suspects de source douteuse ou non connue)// de façon à protéger le contenu de son ordina­teur de la contamination d'éventuels virus circulant sur la Toile. Toute reproduction interdite Vous reconnaissez et acceptez que tout le contenu de ce document, incluant mais sans s’y limiter, le texte et les images, sont protégés par le droit d’auteur, les marques de commerce, les marques de service, les brevets, les secrets industriels et les autres droits de propriété intellectuelle. Sauf autorisation expresse de RF-232, vous acceptez de ne pas vendre, délivrer une licence, louer, modifier, distribuer, copier, reproduire, transmettre, afficher publiquement, exécuter en public, publier, adapter, éditer ou créer d’oeuvres dérivées de ce document et de son contenu. ==== Avertissement==== Bien que nous utilisions ici un vocabulaire issu des techniques informatiques, nous ne prétendons nullement à la précision technique de tous nos propos dans ce domaine. \\ \\