8 - vim et fichiers de configuration

Introduction

La très grande majorité des configuration de Linux se réalisent à l’aide de fichiers texte.

Beaucoup de commandes sont faites pour traiter du texte: for, while, sed, grep, cut, les expressions régulières…

Pour éditer les fichiers texte, nous avons commencé à voir vim qui a de nombreux avantages: extrêmement puissant, présent sur tous les systèmes *NIX, très léger, fonctionne aussi en connexion à distance ou sur des systèmes sans interface graphique…

En bref, vim est un outil indispensable à maitriser lorsque l’on travaille sur des systèmes *NIX.

Nous verrons ensuite des exemples de fichiers de configuration, leur rôle et certains de leurs paramètres.

vim

Les modes

vim propose 3 modes de travail: normal, visuel et insertion.

  • Le mode normal est le mode par défaut. Tout ce qui est tapé dans le mode normal est interprété comme étant une commande (copier, supprimer, coller…) et non pas comme du texte à insérer. Ceci inclut les commandes pour passer d’un mode à l’autre. En tous temps on peut revenir au mode normal en tapant ESC.

  • Le mode visuel permet de voir ce qu’on sélectionne pour faire du copier/coller par exemple. On y accède avec la commande v (pour sélectionner les caractères un par un en se déplaçant) ou Vpour sélectionner des lignes entières en montant ou en descendant.

  • Le mode insertion permet d’ajouter du texte, de le modifier… Il existe plusieurs façon d’y accéder dont i à l’emplacement du curseur, a juste après la position du curseur, I au début de la ligne et A à la fin de la ligne.

Mouvements

Voici une liste de mouvements et la façon de les réaliser.

Mouvement Commande
Un caractère à gauche h
Un caractère à droite l
Une ligne en bas j
Une ligne en haut k
Un mot à droite w (word)
Un mot à gauche b (backward)
Début de la ligne 0
Fin de la ligne $
Vers un numéro de ligne :numéro :100 à la 100ème ligne, :$ fin du fichier

Une des grandes puissances de vim est la possibilité de modifier les commandes à l’aide de quantificateurs par exemples.

Ainsi, si je veux me déplacer de 3 mots vers la droite:

  • 3w

Descendre de 50 lignes:

  • 50j

Reculer de 3 caractères:

  • 3h

Opérations de base en mode normal

Copier/coller

La commande pour copier est y (yank en Anglais).

Il faut ensuite spécifier ce que l’on souhaite copier.

À copier Commande
Une ligne yy
Un mot yw
Un caracte à droite yl
Trois lignes y3y
Trois mots y3w
Trois caractères à droite y3l

Pour coller en mode normal, on utilise p ou P (paste).

p permet de coller après le curseur s’il s’agit de caractères ou de mots ou en dessous de la ligne s’il s’agit de ligne(s) à coller.

P permet de coller avant le curseur s’il s’agit de caractères ou de mot ou au dessus de la ligne s’il s’agit de lignes.

Il est aussi possible de coller plusieurs fois ce qui a été copié en utilisant un quantificateur:

3p colle 3 fois ce qui a été copié après ou en-dessous du curseur.

5P coller 5 fois ce qui a été copié avant ou au-dessus du curseur.

Modification, répétitions, recherche

Il existe une modification simple qui se fait en mode normal, il s’agit du remplacement de caractère(s).

Pour remplacer un caractères, on se positionne sur ce caractère puis la commande r et le nouveau caractère.

Pour remplacer plusieurs caractères, on se positionne sur le premier caractère à modifier puis on utilise la commande R. Tous les caractères ensuite tapés remplceront ce qui est présent dans le texte jusqu’à la touche ESC.

Pour répéter une action, se positionner à l’endroit où dit avoir lieu la répétition puis utiliser la commande ..

Pour annuler des actions, utiliser la commande u (undo).

La recherche se fait à l’aide /. Pour l’élément suivant n, pour l’élément précédent N.

Suppression (couper)

Pour supprimer un caractère à droite du curseur: x.

Pour supprimer un caractère à gauche du curseur: X.

Les autres commandes de suppression commencent par d (delete).

Suppression Commande
Une ligne dd
Un mot dw
Jusqu’à la fin de la ligne d$
Jusqu’au début de la ligne d0
Trois lignes 3dd
Quatre mots 4dw

Entrer en mode insertion

Commande
À l.emplacement du curseur i
Après le curseur a
Au début de la ligne I
À la fin de la ligne A
Insérer une ligne en-dessous o
Insérer une ligne au-dessus O
Modification de texte cw, ci", c$,…(Voir ci-dessous)

Modification en mode insertion

Pour modifier du texte en mode insertion on utilisera la commande c (change).

Changer un mot: cw

Changer jusqu’à la fin de la ligne: c$

Changer jusqu’au début de la ligne: c0

Changer jusqu’au prochain ‘u’: ctu (change to ‘u’)

Si vous êtes dans un mot (pas au début) ou en deux " ou deux (, il est possible de changer le mot, ce qui se trouve entre les " ou les ( à l’aide la commande ci (change in).

Dans le mot: ciw

Entre les “: ci”

Entre les (: ci(

Les fichiers de configuration

La très grande majorité des configurations sur Linux se réalisent à l’aide de fichiers texte.

En voici quelques uns très utiles.

Le réseau

/etc/resolv.conf

Le fichier /etc/resolv.conf permet de configurer les serveurs DNS qui seront utilisés par votre machine.

Les instructions facultatives “domain” et “search” indiquent à quel domaine appartient votre machine et dans quel domaine doivent être cherché les noms qui ne sont pas des FQDN.

Les instructions “nameserver” indiquent les serveurs DNS que vous allez interroger et l’ordre dans lequel vous les interrogez.

Il faut un serveur par ligne.

# Generated by NetworkManager
search localdomain linux.local
nameserver 192.168.230.2
nameserver 8.8.8.8

/etc/hosts

Le fichier /etc/hosts permet d’associer un nom de machine à une adresse IP soit parce qu’elle n’existe pas dans le serveur DNS (réseau privé, machine de test…) ou pour préférer utiliser une adresse IP particulière plutôt que celle du DNS.

Ce fichier est utilisé en priorité par rapport aux serveurs DNS.

Sa syntaxe est la suivante:

<adresse ip> <nom>

Exemple:

192.168.230.122		www.google.com

Ma machine ira au 192.168.230.122 à chaque fois que je voudrai consulter www.google.com.

Grâce à ce fichier, il est donc possible de configurer la résolution de noms dans un petit réseau ou dans un laboratoire. De cette façon, toutes les machines pourront être jointes par leur nom plutôt que par leur adresse IP.

/etc/sysconfig/network-scripts/ifcfg-<interface>

Le fichier /etc/sysconfig/network-scripts/ifcfg-<interface> permet de configurer les paramètres réseau de vos interfaces comme l’adresse IP, le masque de réseau, la passerelle par défaut, si l’adresse IP de votre machine est statique ou s’obtient à l’aide d’un serveur DHCP…

Les options à configurer sont les suivantes (ne pas supprimer les autres options déjà existantes dans le fichier) :

Statique (adresse IP fixe)Dynamique (DHCP)
BOOTPROTO=static
IPADDR=a.b.c.d
NETMASK=255.255.255.0
PREFIX=24
GATEWAY=e.f.g.h
DNS1=i.j.k.l
DNS2=m.n.o.p
BOOTPROTO=dhcp

Dans les deux cas, si vous souhaitez que votre interface réseau soit active au démarrage, vous devez configurer le paramètre:

ONBOOT=yes

Pour que les modifications à ces fichiers soient prises en compte, il faut redémarrer le réseau ou l’interface.

Redémarrer le réseau:

$ systemctl restart network

Redémarrer l’interface:

$ ifdown interface
$ ifup interface

Autres fichiers de configuration

/etc/selinux/config

Le fichier /etc/selinux/config contient la configuration de base de selinux (Security-Enhanced Linux).

selinux permet de définir quels sont les éléments du système et les éléments matériels auxquels une application peut accéder ce qui renforce considérablement la sécurité d’un système mais en complexifie l’administration. Pour cette raison on le désactive sur les stations de travail.

La principale option du fichier est celle qui permet de le désactiver:

SELINUX=enforcing

Ou

SELINUX=disabled

Les usagers

Pour la gestion des utilisateurs et des groupes, il existe deux fichiers:

  • /etc/passwd

  • /etc/group

Le premier contient la liste des utilisateurs du systèmes et le deuxième la liste des groupes ainsi que leurs membres.

/etc/locale.conf

Le fichier /etc/locale.conf contient les informations concernant la langue du système:

LANG="fr_CA.UTF-8"

/etc/httpd/conf/httpd.conf

Le fichier /etc/httpd/conf/httpd.conf contient une partie des options de configuration du serveur web Apache. D’autres fichiers permettent de configurer d’autres options mais celui-ci contient les options globales du serveur.

Pour définir le port sur lequel écoute le serveur:

Listen 80

L’utilisateur et le groupe permettant d’exécuter le serveur:

User apache 
Group apache

Le répertoire dans lequel se trouvent les pages web:

DocumentRoot "/var/www/html"

/etc/fstab

Le fichier /etc/fstab permet de choisir quelles partitions de quels disques seront automatiquement montées au démarrage de la machine et dans quel réspertoire:

/dev/mapper/centos-home /home       xfs     defaults        0 0

Le volume centos-home est en XFS et sera monté dans le répertoire /home avec les options par défaut.

/etc/grub2.cfg

Le fichier /etc/grub2.cfg contient la configuration du système de boot de votre machine. C’est lui qui permet d’installer un double boot Windows et Linux. C’est avec lui que vous pouvez enlever des options de démarrage, définir le temps durant lequel les options seront disponibles avant le démarrage de l’option par défaut…

Aide mémoire