OpenSUSE Leap 15.0 en configuration RAID 1

RAIDVoici le deuxième article dédié à la distribution OpenSUSE Leap. Dans notre précédent article, nous avons décrit l’installation simple d’un poste de travail KDE. Avant d’aller plus loin dans le peaufinage, nous allons nous pencher sur une configuration un peu spéciale que j’effectue assez souvent, l’installation sur une grappe de disques en miroir.

Le RAID 1 sur une station de travail

Le RAID 1 (Redundant Array of Inexpensive Disks) est normalement réservé aux serveurs, mais j’aime également l’utiliser sur les stations de travail. Pour le prix d’un disque dur, on accroît considérablement la sécurité des données. Et précisons-le tout de suite, l’utilisation du RAID ne vous dispense pas d’un serveur de sauvegardes dans le réseau.

En matière de disques durs, j’ai une prédilection pour les disques Western Digital Red, et dans la mesure du possible, j’essaie d’éviter les capacités supérieures à 1 To pour éviter qu’ils chauffent trop. Les disques de qualité Red sont conçus pour être plus durables, vous les payez donc un peu plus cher. N’oubliez pas que sur une station de travail, ce sont avant tout vos données qui ont de la valeur. Notez aussi qu’en règle générale, les disques durs sont plus fragiles que ce que vous imaginez. La question n’est pas s’ils vont lâcher un jour, mais plutôt quand est-ce qu’ils vont le faire. D’où l’intérêt d’utiliser le RAID 1.

Réinitialiser les disques

Avant d’installer quoi que ce soit, j’ai pris l’habitude de réinitialiser les disques durs pour partir sur des bases saines. Pour ce faire, j’utilise le support d’installation d’OpenSUSE, qui fait également office de système de secours.

Je démarre sur le DVD (ou la clé USB), j’appuie sur F2 pour sélectionner la langue française, puis je sélectionne Plus > Système de secours dans le menu principal du DVD.

Ma machine est dotée de deux disques durs avec des assemblages RAID.

0:rescue:~ # lsblk
NAME      MAJ:MIN RM  SIZE RO TYPE  MOUNTPOINT
loop0       7:0    0   65M  1 loop  /parts/mp_0000
loop1       7:1    0 12.9M  1 loop  /parts/mp_0001
loop2       7:2    0 49.6M  1 loop  /mounts/mp_0000
loop3       7:3    0 44.1M  1 loop  /mounts/mp_0001
loop4       7:4    0  4.1M  1 loop  /mounts/mp_0002
sda         8:0    0   40G  0 disk  
├─sda1      8:1    0    8M  0 part  
├─sda2      8:2    0  500M  0 part  
│ └─md127   9:127  0  500M  0 raid1 
├─sda3      8:3    0 37.5G  0 part  
│ └─md126   9:126  0 37.5G  0 raid1 
└─sda4      8:4    0    2G  0 part  
  └─md125   9:125  0    2G  0 raid1 
sdb         8:16   0   40G  0 disk  
├─sdb1      8:17   0    8M  0 part  
├─sdb2      8:18   0  500M  0 part  
│ └─md127   9:127  0  500M  0 raid1 
├─sdb3      8:19   0 37.5G  0 part  
│ └─md126   9:126  0 37.5G  0 raid1 
└─sdb4      8:20   0    2G  0 part  
  └─md125   9:125  0    2G  0 raid1 
sr0        11:0    1  3.7G  0 rom   

Dans un premier temps, je vais supprimer les assemblages RAID.

0:rescue:~ # mdadm --stop --scan
0:rescue:~ # mdadm --zero-superblock /dev/sda2
0:rescue:~ # mdadm --zero-superblock /dev/sda3
0:rescue:~ # mdadm --zero-superblock /dev/sda4
0:rescue:~ # mdadm --zero-superblock /dev/sdb2
0:rescue:~ # mdadm --zero-superblock /dev/sdb3
0:rescue:~ # mdadm --zero-superblock /dev/sdb4

Les assemblages RAID ont bien été nettoyés, et il ne reste plus que les partitions des disques.

0:rescue:~ # lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
loop0    7:0    0   65M  1 loop /parts/mp_0000
loop1    7:1    0 12.9M  1 loop /parts/mp_0001
loop2    7:2    0 49.6M  1 loop /mounts/mp_0000
loop3    7:3    0 44.1M  1 loop /mounts/mp_0001
loop4    7:4    0  4.1M  1 loop /mounts/mp_0002
sda      8:0    0   40G  0 disk 
├─sda1   8:1    0    8M  0 part 
├─sda2   8:2    0  500M  0 part 
├─sda3   8:3    0 37.5G  0 part 
└─sda4   8:4    0    2G  0 part 
sdb      8:16   0   40G  0 disk 
├─sdb1   8:17   0    8M  0 part 
├─sdb2   8:18   0  500M  0 part 
├─sdb3   8:19   0 37.5G  0 part 
└─sdb4   8:20   0    2G  0 part 
sr0     11:0    1  3.7G  0 rom

Je vais me servir de l’outil de partitionnement gdisk pour remettre à zéro mes tables de partitions. Plus exactement, c’est la fonctionnalité avancée zap/destroy qui me permettra de réinitialiser les disques.

0:rescue:~ # gdisk /dev/sda
GPT fdisk (gdisk) version 1.0.1

Partition table scan:
  MBR: protective
  BSD: not present
  APM: not present
  GPT: present

Found valid GPT with protective MBR; using GPT.

Command (? for help): x

Expert command (? for help): z
About to wipe out GPT on /dev/sda. Proceed? (Y/N): y
GPT data structures destroyed! You may now partition the disk 
using fdisk or other utilities.
Blank out MBR? (Y/N): y
0:rescue:~ # gdisk /dev/sdb
GPT fdisk (gdisk) version 1.0.1

Partition table scan:
  MBR: protective
  BSD: not present
  APM: not present
  GPT: present

Found valid GPT with protective MBR; using GPT.

Command (? for help): x

Expert command (? for help): z
About to wipe out GPT on /dev/sdb. Proceed? (Y/N): y
GPT data structures destroyed! You may now partition the disk 
using fdisk or other utilities.
Blank out MBR? (Y/N): y

Et voilà une paire de disques durs tout propres.

0:rescue:~ # lsblk
NAME  MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
loop0   7:0    0   65M  1 loop /parts/mp_0000
loop1   7:1    0 12.9M  1 loop /parts/mp_0001
loop2   7:2    0 49.6M  1 loop /mounts/mp_0000
loop3   7:3    0 44.1M  1 loop /mounts/mp_0001
loop4   7:4    0  4.1M  1 loop /mounts/mp_0002
sda     8:0    0   40G  0 disk 
sdb     8:16   0   40G  0 disk 
sr0    11:0    1  3.7G  0 rom

Le schéma de partitionnement

Je vais reproduire le schéma de partitionnement utilisé pour l’installation sur un seul disque dur, en mettant les deux disques en miroir. Concrètement, chaque disque devra arborer les partitions suivantes.

  • une partition BIOS boot d’une taille de 8 Mo
  • une partition Linux RAID d’une taille de 500 Mo pour l’assemblage /dev/md/boot
  • une partition Linux RAID occupant le maximum d’espace disponible pour l’assemblage /dev/md/root
  • une partition Linux RAID dont la taille est égale à la quantité de RAM de la machine pour l’assemblage /dev/md/swap

En termes de systèmes de fichiers, nous utiliserons ext2 pour /dev/md/boot et ext4 pour /dev/md/root.

Mise en place du RAID 1 dans l’installateur

L’écran Partitionnement proposé de l’installateur suggère un schéma de partitionnement automatique réparti sur les deux disques durs. Je vais faire fi de cette proposition et opter pour le Partitionnement expert > Démarrer avec des partitions existantes.

OpenSUSE RAID

Je pars de deux disques sda et sdb dépourvus de table de partitions.

OpenSUSE RAID

Dans un premier temps, je vais créer quatre partitions sur le disque sda.

  1. Partition BIOS boot : Ajouter > Taille personnalisée : 8 MiB > Rôle : Raw Volume (unformatted) > Partition ID : Partition de démarrage du BIOS.
  2. Partition Linux RAID : Ajouter > Taille personnalisée : 500 MiB > Rôle : Raw Volume (unformatted) > Partition ID : Linux RAID
  3. Partition Linux RAID : Ajouter > Taille personnalisée : soustraire la quantité de swap que l’on veut laisser (par exemple, passer de 39.50 GiB à 37.50 GiB si l’on veut garder 2 GiB pour la partition d’échange) > Rôle : Raw Volume (unformatted) > Partition ID : Linux RAID
  4. Partition Linux RAID : Ajouter > Taille maximale (vérifier si le compte est bon) > Rôle : Raw Volume (unformatted) > Partition ID : Linux RAID

Si tout s’est bien passé, voici à quoi ressemble mon premier disque dur à peu de détails près.

OpenSUSE RAID

À présent, nous devons répéter cette opération sur le disque sdb, en créant quatre partitions identiques à celles du disque sda. Au total, les deux disques devront ressembler à quelque chose comme ceci.

OpenSUSE RAID

Dans la fenêtre de gauche du module de partitionnement, l’entrée RAID nous permet d’assembler les grappes RAID. Cliquez sur Ajouter RAID.

Pour créer l’assemblage /dev/md/boot, définissez le Type de RAID 1 (mise en miroir), choisissez le Nom du RAID boot, mettez en surbrillance les deux partitions /dev/sda2 et /dev/sdb2 dans la colonne de gauche en utilisant la touche Ctrl pour une sélection multiple, puis cliquez sur Ajouter pour les faire glisser dans la colonne de droite.

OpenSUSE RAID

Cliquez sur Suivant, acceptez la taille des blocs proposée par défaut (4 KiB), sélectionnez le Rôle Operating System, optez pour le Système de fichiers ext2 et définissez le Point de montage /boot.

Nous allons créer l’assemblage /dev/md/root de manière similaire. Cliquez sur Ajouter RAID, définissez le Type de RAID 1 (mise en miroir), choisissez le Nom du RAID root, mettez en surbrillance les deux partitions /dev/sda3 et /dev/sdb3 dans la colonne de gauche, puis cliquez sur Ajouter pour les faire glisser dans la colonne de droite.

OpenSUSE RAID

Cliquez sur Suivant, acceptez la taille des blocs proposée par défaut (4 KiB), sélectionnez le Rôle Operating System, optez pour le Système de fichiers ext4 et gardez le Point de montage / proposé par défaut.

Il ne nous reste plus qu’à créer l’assemblage /dev/md/swap. Cliquez sur Ajouter RAID, définissez le Type de RAID 1 (mise en miroir), choisissez le Nom du RAID swap, mettez en surbrillance les deux partitions restantes /dev/sda4 et /dev/sdb4 dans la colonne de gauche, puis cliquez sur Ajouter pour les faire glisser dans la colonne de droite.

OpenSUSE RAID

Cliquez sur Suivant, acceptez la taille des blocs proposée par défaut (4 KiB), sélectionnez le Rôle swap et terminez en confirmant les paramètres proposés par défaut.

Si tout s’est bien passé, le récapitulatif de nos assemblages RAID doit nous afficher quelque chose qui ressemble à ceci.

OpenSUSE RAID

Le récapitulatif nous permet de vérifier une dernière fois si les choses se passent comme prévu.

OpenSUSE RAID

À partir de là, l’installation se déroule normalement comme pour une configuration avec un disque simple.

Redémarrage initial

Au terme de l’installation, vérifions la santé de notre grappe RAID.

linux-zpm4:~ # cat /proc/mdstat 
Personalities : [raid1] 
md125 : active raid1 sdb2[1] sda2[0]
      511936 blocks super 1.0 [2/2] [UU]
      bitmap: 0/1 pages [0KB], 65536KB chunk

md126 : active raid1 sdb4[1] sda4[0]
      2100160 blocks super 1.0 [2/2] [UU]
      bitmap: 0/1 pages [0KB], 65536KB chunk

md127 : active raid1 sda3[0] sdb3[1]
      39321472 blocks super 1.0 [2/2] [UU]
      bitmap: 1/1 pages [4KB], 65536KB chunk

unused devices: 
Publié dans Documentation Microlinux, OpenSUSE | Marqué avec , , | Laisser un commentaire

Installation d’un poste de travail OpenSUSE Leap 15.0 KDE

OpenSUSEVoici le premier d’une série d’articles sur la distribution OpenSUSE Leap employée sur des postes de travail professionnels. Ce premier article décrit pas à pas l’installation toute simple d’un poste de travail basé sur l’environnement de bureau KDE. Cette installation nous servira de base pour des configurations personnalisées que nous aurons l’occasion d’aborder ultérieurement.

OpenSUSE 15.0 KDE

À la découverte d’OpenSUSE Leap

Depuis quelque temps, j’expérimente avec la distribution OpenSUSE Leap, et je dois avouer que je suis assez séduit. J’ai eu l’occasion dans le passé de tester OpenSUSE, à l’époque où elle s’appelait simplement SuSE (pour Software- und Systementwicklung), et si mon souvenir est bon, mes premières expériences remontent à la version 7.3 aux alentours de 2002. À l’époque j’étais un dur à cuire, je ne jurais que par Slackware, et même si SuSE était historiquement dérivée de cette dernière, le pingouin en herbe que j’étais ne jurait que par la ligne de commande et méprisait les clicodromes comme YaST, le fameux panneau de configuration de SuSE.

Les années ont passé, j’ai utilisé successivement toute une série de distributions pour finalement me caler sur CentOS, la plus ennuyeuse de toutes, que j’utilise sur tous mes serveurs et sur tous mes postes de travail. Or, la dernière mise à jour de mes postes de travail basés sur CentOS 7.5 vers la version 7.6 s’est plutôt mal passée, et à mon humble avis, Red Hat a pris une série de décisions plus ou moins calamiteuses comme l’abandon du bureau KDE et la transformation de GNOME en cible mouvante entre deux versions mineures. Je ne rentrerai pas dans les détails techniques, mais il est clair que sur mes postes de travail – ceux que j’installe à mes clients – il me faut autre chose que CentOS.

J’ai décidé d’adopter une démarche purement pragmatique pour trouver le remplaçant idéal. Dans un premier temps, j’ai rédigé un cahier des charges dans lequel j’ai noté en détail toutes mes exigences autour d’un poste de travail. J’ai éliminé d’emblée toute une série de distributions dont je savais qu’elles ne correspondaient pas du tout à mes besoins. Je me suis retrouvé avec trois finalistes, que j’ai dûment testés. Là aussi, je vous fais grâce des détails, sous peine de me retrouver avec un tsunami de flames dans les commentaires. Bref, deux des trois finalistes ont fini par être éliminés pour cause de bugs prohibitifs ou autres insuffisances diverses et variées. Et voilà donc une semaine que je suis dans la phase lune de miel avec OpenSUSE Leap, qui viendra donc progressivement remplacer mes configurations poste de travail “aux petits oignons” basées sur CentOS 7.

Étant donné que j’aime bien partager le fruit de mes expérimentations dans ce blog, je commence par le commencement, et ce premier article sera donc consacré à l’installation toute simple et toute bête d’un poste de travail OpenSUSE Leap 15.0 KDE dans sa configuration par défaut.

Confectionner les supports d’installation

Les fichiers ISO de la distribution sont disponibles sur la plateforme http://download.opensuse.org, dans le répertoire distribution/leap/15.0/iso. La distribution SuSE a connu un historique des versions quelque peu erratique, étant donné qu’on est passé de la version 13 à la version 42, puis à la version 15. Retenez juste qu’à ce jour, la version 15.0 est considérée comme la version stable officielle.

OpenSUSE téléchargement

Ici, je récupère les deux fichiers ISO suivants.

Je grave ces deux fichiers respectivement sur un DVD et sur un CD. Notez que ce dernier me servira pour les machines qui ont des problèmes à démarrer sur un DVD, ce qui peut arriver de temps en temps.

Le fichier openSUSE-Leap-15.0-DVD-x86_64.iso est hybride, je peux donc l’écrire directement sur une clé USB pour en faire un support d’installation pour les machines dépourvues de lecteur optique.

$ sudo dd if=openSUSE-Leap-15.0-DVD-x86_64.iso \
  of=/dev/sdX bs=1M status=progress

Réinitialiser le disque dur

J’ai pu noter une particularité du programme d’installation d’OpenSUSE.

  • Si l’on dispose d’un disque avec une table de partitions dos, il peut arriver que ce format soit gardé.
  • En revanche, si l’on part d’un disque dur dépourvu de table de partitions, le programme de partitionnement utilisera toujours une table de partitions gpt.

J’en conclus qu’avant de lancer l’installation à proprement parler, ce n’est pas une mauvaise idée de réinitaliser le disque dur pour partir sur des bases saines. Pour ce faire, j’utiliserai le support d’installation d’OpenSUSE, qui fait également office de système de secours.

Je démarre sur le DVD (ou la clé), j’appuie sur F2 pour sélectionner la langue française, puis je sélectionne Plus > Système de secours dans le menu principal du DVD.

Voici à quoi ressemble mon disque dur.

0:rescue:~ # lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
loop0    7:0    0   65M  1 loop /parts/mp_0000
loop1    7:1    0 12.9M  1 loop /parts/mp_0001
loop2    7:2    0 49.6M  1 loop /mounts/mp_0000
loop3    7:3    0 44.1M  1 loop /mounts/mp_0001
loop4    7:4    0  4.1M  1 loop /mounts/mp_0002
sda      8:0    0   40G  0 disk 
├─sda1   8:1    0    8M  0 part 
├─sda2   8:2    0 24.8G  0 part 
├─sda3   8:3    0 13.2G  0 part 
└─sda4   8:4    0    2G  0 part 
sr0     11:0    1  3.7G  0 rom

Je vais me servir de l’outil de partitionnement gdisk pour remettre à zéro ma table de partitions. Plus exactement, c’est la fonctionnalité avancée zap/destroy qui me permettra de réinitialiser le disque.

0:rescue:~ # gdisk /dev/sda
GPT fdisk (gdisk) version 1.0.1

Partition table scan:
  MBR: protective
  BSD: not present
  APM: not present
  GPT: present

Found valid GPT with protective MBR; using GPT.

Command (? for help): x

Expert command (? for help): z
About to wipe out GPT on /dev/sda. Proceed? (Y/N): y
GPT data structures destroyed! You may now partition the disk 
using fdisk or other utilities.
Blank out MBR? (Y/N): y

Et voilà un disque dur tout propre.

0:rescue:~ # lsblk
NAME  MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
loop0   7:0    0   65M  1 loop /parts/mp_0000
loop1   7:1    0 12.9M  1 loop /parts/mp_0001
loop2   7:2    0 49.6M  1 loop /mounts/mp_0000
loop3   7:3    0 44.1M  1 loop /mounts/mp_0001
loop4   7:4    0  4.1M  1 loop /mounts/mp_0002
sda     8:0    0   40G  0 disk 
sr0    11:0    1  3.7G  0 rom

Démarrer l’installation

Je démarre sur le DVD, j’appuie sur F2 pour sélectionner la langue française, et cette fois-ci, j’opte pour Installation.

OpenSUSE Installation

Le premier écran de l’installateur me permet de choisir la disposition de mon clavier.

OpenSUSE Installation

Dans l’écran de sélection de l’interface utilisateur, j’opte pour le bureau KDE proposé par défaut.

OpenSUSE Installation

Partitionner le disque dur

Le schéma de partitionnement automatique proposé par l’installateur est basé sur le système de fichiers Btrfs, que je préfère éviter pour toute une série de raisons. Au lieu de cela, je vais donc opter pour le partitionnement manuel, avec un schéma de partitionnement relativement simple.

  • une partition BIOS boot de 8 Mo
  • une partition /boot de 500 Mo et formatée en ext2
  • une partition principale occupant le maximum d’espace disponible sur le disque et formatée en ext4
  • une partition d’échange dont la taille est égale à la quantité de RAM de la machine

Notez que la partition BIOS boot est nécessaire pour gérer un disque avec une table de partitions gpt depuis un BIOS traditionnel.

Dans le menu de l’installateur, j’opte donc pour le Partitionnement en mode expert > Démarrer avec les partitions existantes et je clique sur Suivant.

OpenSUSE Installation

Voici une petite vue d’ensemble de toutes les étapes par lesquelles il faut passer pour créer les quatre partitions.

  1. Partition BIOS boot : Ajouter > Taille personnalisée : 8 MiB > Rôle : Raw Volume (unformatted) > Partition ID : Partition de démarrage du BIOS.
  2. Partition /boot : Ajouter > Taille personnalisée : 500 MiB > Rôle : Operating System > Système de fichiers : ext2 > Point de montage : /boot
  3. Partition principale : Ajouter > Taille personnalisée : soustraire la quantité de swap que l’on veut laisser (par exemple, passer de 39.50 GiB à 37.50 GiB si l’on veut garder 2 GiB pour la partition d’échange) > Rôle : Operating System > Système de fichiers : ext4 > Point de montage : /
  4. Partition d’échange : Ajouter > Taille maximale (vérifier si le compte est bon) > Rôle : swap > Système de fichiers : swap > Point de montage : swap

Au final, on doit se retrouver avec quelque chose qui ressemble à ceci.

OpenSUSE Installation

Une fois qu’on clique sur Accepter, l’installateur affiche un récapitulatif des opérations de partitionnement et de formatage.

Terminer la configuration des paramètres

Nous avons fait le gros du travail avec le partitionnement. Le reste de la configuration s’effectue en quelques clics. L’écran subséquent permet de configurer le fuseau horaire.

OpenSUSE Installation

Ensuite, on passe à la création de l’utilisateur initial. Rien de spécial à signaler ici, mais on veillera bien à décocher l’option Login automatique, qui est une aberration en termes de sécurité.

OpenSUSE Installation

On arrive finalement à l’écran qui affiche un récapitulatif complet des paramètres d’installation. La seule chose que je modifie ici, c’est l’activation du serveur SSH et l’ouverture correspondante du port 22.

OpenSUSE Installation

Dans la configuration par défaut, la distribution installe un nombre assez important de paquets. Le but manifeste du distributeur est ici d’offrir un environnement de bureau raisonnablement complet.

OpenSUSE Installation

Redémarrage initial

Au terme de l’installation, le système redémarre automatiquement, et on se retrouve face au gestionnaire de connexion SDDM.

OpenSUSE Installation

Une fois qu’on a pris en compte le célèbre adage selon lequel les goûts et les couleurs ne se disputent pas, on notera quand-même une configuration par défaut plutôt léchée et sobre, aux angles arrondis et à l’esthétisme tout à fait adapté à des postes de travail professionnels.

OpenSUSE 15.0 KDE

Dans un prochain article, nous nous intéresserons à la configuration “aux petits oignons” de notre nouvel environnement de travail.

Publié dans Documentation Microlinux, Non classé, OpenSUSE | Marqué avec , | 9 commentaires

Comment j’ai résilié ma Dedibox chez Online

Résiliation ServeurL’infogérance fait partie de mon quotidien depuis douze ans maintenant. Entre 2006 et 2008, j’avais pour mission la mise en réseau des médiathèques de notre Communauté de Communes. Fort de cette expérience, j’ai créé ma propre entreprise en 2009, et depuis cette date, j’héberge une série de solutions “clé en main” basées sur WordPress, SPIP, Dolibarr, OwnCloud, GEPI ou Xibo pour des clients un peu partout en France. Pour ce faire, je loue une machine bare metal dans un datacenter, avec une ouverture frontale sur Internet. Je la dote d’un système d’exploitation, je la sécurise au mieux parce que c’est le far west là-dehors, et j’installe ce qu’il faut pour héberger sainement mes applications.

Dans le passé, j’ai eu l’occasion de travailler avec NFrance, OVH, Ikoula et Online. J’ai eu une série d’expériences plus ou moins embarrassantes voire carrément désastreuses avec les trois premiers fournisseurs. Depuis 2013, tous mes hébergements publics sont chez Online, sur une dizaine de machines allant de la Dedibox Start à la Dedibox Pro. Je loue moi-même une poignée de ces serveurs, et dans les autres cas, c’est le client qui loue la machine, et je la gère pour son compte. Techniquement, je suis très satisfait de la qualité de service fournie par Online. Ces cinq dernières années, je n’ai pas eu le moindre couac à déplorer.

En juillet 2018, j’ai voulu résilier une de mes machines dont le système arrivait en fin de vie, et j’ai profité d’une promotion assez alléchante pour la remplacer. J’ai donc ouvert un ticket dans la console Online pour initier ma démarche, le gars du support technique m’a indiqué la procédure à suivre, j’ai cliqué sur les boutons qu’il fallait, et je ne m’en suis plus soucié.

Début de cette semaine, j’ai jeté un oeil distrait sur ma dernière facture, et j’ai eu la mauvaise surprise de constater que mon ancienne machine sd-48975.dedibox.fr était toujours facturée près de 35 euros par mois.Visiblement la résiliation effectuée dans l’interface de gestion d’Online n’avait pas été prise en compte. J’ai donc contacté l’Assistance d’Online pour leur signifier le bug et demander le remboursement des 140 euros pour les quatre mois écoulés depuis ma demande de résiliation.

Le service de facturation d’Online a refusé ma demande en prétextant que la gestion des machines était automatique et qu’on ne pouvait rien faire, mais qu’il s’agissait très probablement d’une erreur de manipulation de ma part. Le technicien m’a encouragé à refaire une demande de résiliation. C’était le 20 novembre, et ce qu’il faut savoir, c’est que la date butoir pour une résiliation, c’est le 20 de chaque mois. Si l’on résilie le 21, on est facturé un mois supplémentaire. Je me suis donc conformé à la demande de l’Assistance, vu que je n’avais pas le choix, et cette fois-ci j’ai pris soin de prendre une capture d’écran de l’opération.

Bug Résiliation Online

J’ai finalement réussi à résilier mon abonnement le lendemain, et j’ai été informé qu’un mois supplémentaire allait être facturé puisqu’on était le 21 du mois. J’ai donc exprimé mon mécontentement à l’Assistance d’Online, qui a rectifié le tir, en me faisant “cadeau” du mois de décembre 2018. En revanche, rien à faire pour les quatre mois écoulés depuis cet été.

S’il y a une chose que j’ai apprise depuis la création de mon entreprise, c’est qu’une relation de confiance avec un client, ça n’a pas de prix. Jusque-là j’avais été très satisfait des services fournis par Online. Mais depuis cette mésaventure, j’ai la persistante et désagréable impression que le fournisseur vient me faire les poches pour gratter un maximum de sous au passage.

Cette mauvaise impression a été renforcée par un deuxième coup d’oeil sur ma facture, où je me suis aperçu que le serveur LT Deals que j’avais pris en remplacement de mon ancien serveur avait augmenté de 60% au mois de novembre, alors que le commercial que j’ai eu au téléphone en juillet m’avait bien assuré que j’allais payer le même prix pendant toute la durée de mon abonnement. J’en ai fait part au support technique, qui a imploré ma compréhension en prétextant “la flambée des prix de la RAM en Corée”.

J’ai fait part de mon mécontentement à Online, en leur expliquant tout cela, et je pense que la réponse est assez éloquente.

Désolé

J’en conclus que chez Online, le prix d’une relation de confiance avec le client, c’est 140 euros.

 

Publié dans Divers | Marqué avec | 5 commentaires

Installer un serveur Samba sous CentOS 7

Serveur SambaSamba permet l’échange de fichiers dans un réseau hétérogène, avec des postes clients tournant sous Windows, Mac OS X ou Linux. Le nom “Samba” est dérivé du protocole SMB (Server Message Block), utilisé par Microsoft depuis le début des années 1990 pour le partage de données et d’imprimantes.

Dans cet article, je décris la mise en place d’un partage de fichiers Samba sur un serveur CentOS pour un réseau composé de clients sous Windows et sous Linux. La configuration relativement simple fournie en exemple répond à un besoin assez répandu chez mes clients, avec un partage public ouvert à tous ainsi qu’un partage privé qui nécessite une authentification.

Prérequis

Il faudra ouvrir les ports suivants dans le pare-feu.

  • 137 en UDP
  • 138 en UDP
  • 139 en TCP
  • 445 en TCP

Dans mon pare-feu personnalisé, la configuration ressemble à ceci.

# Samba
$IPT -A INPUT -p udp -i $IFACE_LAN --dport 137:138 -j ACCEPT
$IPT -A INPUT -p tcp -i $IFACE_LAN --dport 139 -j ACCEPT
$IPT -A INPUT -p tcp -i $IFACE_LAN --dport 445 -j ACCEPT

Installation

Les paquets relatifs à Samba sont tous fournis par les dépôts officiels.

# yum install samba samba-client

Création de l’arborescence des partages

Dans un premier temps, on va créer les répertoires des partages respectifs.

# mkdir -pv -m 1777 /srv/samba/{public,confidentiel}
mkdir: created directory ‘/srv/samba’
mkdir: created directory ‘/srv/samba/public’
mkdir: created directory ‘/srv/samba/confidentiel’
# ls -l /srv/samba/
total 8
drwxrwxrwt. 2 root root 4096 Oct 20 08:21 confidentiel
drwxrwxrwt. 2 root root 4096 Oct 20 08:21 public
  • On notera la présence du sticky bit (drwxrwxrwt, valeur octale 1000) sur les répertoires des partages. On évite ainsi la suppression accidentelle des fichiers et des répertoires d’un autre utilisateur, même si l’on possède théoriquement les droits d’écriture dessus.

Modification du contexte SELinux

Si l’on utilise SELinux, il faut impérativement modifier le contexte SELinux de notre arborescence personnalisée.

# semanage fcontext -a -t samba_share_t '/srv/samba(/.*)?'
# restorecon -R -v /srv/samba/

Configuration des partages

La configuration de Samba s’effectue par le biais du fichier /etc/samba/smb.conf. Le paquet samba fournit pas moins de deux fichiers modèles smb.conf et smb.conf.example. Pour commencer, on va renommer smb.conf.

# cd /etc/samba
# mv smb.conf smb.conf.orig

Ensuite on va créer notre propre configuration personnalisée comme ceci.

# /etc/samba/smb.conf

[global]
workgroup = WORKGROUP
netbios name = AMANDINE
server string = Serveur de fichiers AMANDINE
dns proxy = yes
domain master = no
log file = /var/log/samba/log.%m
log level = 0
max log size = 1000
bind interfaces only = yes
interfaces = 192.168.2.0/24 localhost
hosts allow = 192.168.2. 127.
security = user
passdb backend = tdbsam
unix password sync = no
invalid users = root
encrypt passwords = yes
guest account = smbguest
map to guest = bad user
force group = users
create mode = 0660
directory mode = 0770

[Public]
path = /srv/samba/public
comment = Partage Public
public = yes
only guest = yes
read only = no

[Confidentiel]
path = /srv/samba/confidentiel
comment = Partage Confidentiel
read only = no
invalid users = root nobody smbguest

Les options méritent quelques explications.

  • workgroup = WORKGROUP définit le nom du groupe de travail. Les clients Windows doivent tous être membres de ce groupe de travail.
  • netbios name = AMANDINE définit le nom qui apparaîtra dans le Voisinage Réseau de Windows. Théoriquement, on pourrait très bien indiquer deux noms de machine différents pour les protocoles TCP/IP et NetBIOS. En pratique, on essaiera de rester cohérent, et on utilisera le nom d’hôte du serveur (AMANDINE).
  • server string = Serveur de fichiers AMANDINE indique le nom avec lequel le serveur s’identifie.
  • dns proxy = yes active l’utilisation du serveur DNS local pour résoudre les noms d’hôtes Windows.
  • La directive domain master désigne un serveur Samba “maître” pour le domaine local. On utilisera yes sur le serveur principal et no sur les autres serveurs. “Serveur principal” signifie ici quelque chose comme “la machine la plus fiable” ou “le serveur qu’on éteint le moins souvent”.
  • log file = /var/log/samba/log.%m définit la journalisation. Pour chaque client qui utilise Samba, un fichier journal log.client est créé. Quant aux services Samba smbd et nmbd, ils utilisent des événements globaux dans les deux fichiers /var/log/samba/log.smbd et log.nmbd. Ni le nom ni l’emplacement de ces deux fichiers ne peuvent être modifiés.
  • log level = 0 signifie que seuls les messages d’erreur sont journalisés. Pour obtenir une journalisation plus “bavarde”, on remplacera la valeur 0 par 1, 2, 3, etc.
  • max log size = 1000 limite la taille maximale du fichier journal à 1000 kilooctets. Lorsqu’un fichier journal dépasse cette taille, Samba le renomme en fichier.old.
  • La directive interfaces définit les interfaces réseau par lesquelles Samba est censé communiquer. On veillera à faire apparaître les partages uniquement dans le réseau local. Ne pas oublier localhost, faute de quoi les outils d’administration comme smbclient ne fonctionneront pas sur le serveur.
  • Les directives hosts allow et hosts deny permettent respectivement d’autoriser et d’interdire l’accès de certaines machines du réseau à Samba.
  • La directive security = user définit le modèle de sécurité de Samba.
  • passdb backend = tdbsam définit la gestion des mots de passe. TDB signifie Trivial Database et désigne un format de stockage binaire. Les mots de passe sont stockés dans le fichier /var/lib/samba/private/passdb.tdb.
  • unix password sync = no désactive la synchronisation des mots de passe Samba avec les mots de passe Linux. Celle-ci est liée à toute une série de restrictions qui risquent de nous compliquer la vie, et il vaut mieux s’en passer.
  • guest account = smbguest désigne l’utilisateur Linux auquel on fait correspondre les utilisateurs invités.
  • map to guest = bad user renvoie vers le compte invité toute tentative de connexion avec un identifiant inexistant.
  • force group = users attribue tous les fichiers et répertoires nouvellement créés au groupe users.
  • Les paramètres create mode = 660 et directory mode = 770 assurent que tous les fichiers (rw-rw----) et répertoires (rwxrwx---) créés par un membre du groupe puissent être lus par tous les autres membres du groupe.
  • Le nom du partage ([Public], [Confidentiel]) ne doit pas dépasser douze caractères.

Créer et gérer les utilisateurs Samba

Créer un utilisateur public smbguest pour Samba.

# useradd -c "Utilisateur Public Samba" -g users -d /dev/null \
  -s /sbin/nologin smbguest
# passwd -l smbguest
Locking password for user smbguest.
passwd: Success
# smbpasswd -a smbguest -d
Added user smbguest.
  • L’utilisateur smbguest ne dispose pas de shell de connexion (-s /sbin/nologin) ni de répertoire d’utilisateur (-d /dev/null).
  • Le mot de passe du compte Linux est verrouillé par passwd -l (lock).
  • L’option -a (add) indique à smbpasswd d’ajouter un utilisateur.
  • Celui-ci sera immédiatement désactivé par l’option -d (disabled).

La prochaine étape consiste à créer un ou plusieurs utilisateurs Samba normaux. Deux cas de figure se présentent ici.

Si l’utilisateur dispose déjà d’un compte système, on va d’abord l’ajouter au groupe système users.

# usermod -a -G users kikinovak

Ensuite, on va créer l’utilisateur Samba correspondant.

# smbpasswd -a kikinovak
New SMB password:
Retype new SMB password:
Added user kikinovak.

Les utilisateurs qui ne disposent pas de compte système pourront être créés comme ceci.

# useradd -c "Jean Mortreux" -s /sbin/nologin -d /dev/null \
  jmortreux
# passwd -l jmortreux
Locking password for user jmortreux.
passwd: Success
# usermod -a -G users jmortreux
# smbpasswd -a jmortreux
New SMB password:
Retype new SMB password:
Added user jmortreux.

La commande pdbedit permet d’afficher la liste des utilisateurs Samba.

# pdbedit -L
smbguest:1000:Utilisateur Public Samba
kikinovak:1001:Kiki Novak
adebuf:1003:Agnès Debuf
jmortreux:1002:Jean Mortreux

La suppression d’un utilisateur Samba pourra s’effectuer grâce à la commande smbpasswd.

# smbpasswd -d adebuf
Disabled user adebuf.

Éventuellement, on songera à supprimer son compte Linux correspondant.

# userdel -r adebuf

Gestion et utilisation

La commande testparm permet de tester la configuration.

# testparm
Load smb config files from /etc/samba/smb.conf
...
Processing section "[Public]"
Processing section "[Confidentiel]"
Loaded services file OK.
Server role: ROLE_STANDALONE

# Global parameters
[global]
  bind interfaces only = Yes
  domain master = No
  guest account = smbguest
  interfaces = 192.168.2.0/24 localhost
  log file = /var/log/samba/log.%m
  map to guest = Bad User
  max log size = 1000
  security = USER
  server string = Serveur de fichiers AMANDINE
  idmap config * : backend = tdb
  create mask = 0660
  directory mask = 0770
  force group = users
  hosts allow = 192.168.2. 127.
  invalid users = root

[Public]
  comment = Partage Public
  guest ok = Yes
  guest only = Yes
  path = /srv/samba/public
  read only = No

[Confidentiel]
  comment = Partage Confidentiel
  invalid users = root nobody smbguest
  path = /srv/samba/confidentiel
  read only = No

L’option -v permet d’afficher la totalité des directives utilisées dans la configuration.

Activer et démarrer Samba.

# systemctl enable smb nmb
# systemctl start smb nmb
# systemctl status smb
# systemctl status nmb

Afficher les partages sur le serveur.

# smbclient -L localhost -N

  Sharename     Type    Comment
  ---------     ----    -------
  Public        Disk    Partage Public
  Confidentiel  Disk    Partage Confidentiel
  IPC$          IPC     IPC Service (Serveur de fichiers AMANDINE)
Reconnecting with SMB1 for workgroup listing.

  Server           Comment
  ---------        -------

  Workgroup        Master
  ---------        -------
  WORKGROUP        AMANDINE

À partir de là, on pourra se connecter depuis les postes clients.

Téléchargement

Un fichier modèle smb.conf est disponible dans mon dépôt Github centos-7-server-lan, dans le répertoire config/samba.

$ git clone https://github.com/kikinovak/centos-7-server-lan
$ cd centos/samba
$ ls
smb.conf
Publié dans CentOS, Documentation Microlinux | Marqué avec , , | 2 commentaires

NFS et réseau sans fil sous CentOS 7

Wifi NFSLe réseau informatique de notre lycée privé local tourne entièrement sous CentOS. Les données des utilisateurs sont stockées sur le serveur, l’authentification est centralisée, et le partage des données vers les postes clients se fait par NFS.

Hier le directeur de l’école m’a demandé d’ajouter un poste client dans la nouvelle salle des profs au premier étage. Aucun switch à proximité, et il aurait fallu tirer une bonne vingtaine de cable réseau et traverser un mur épais. Or, cette salle capte très bien le signal wifi venant du point d’accès de la bibliothèque. J’ai donc tenté l’expérience, et j’ai installé une carte wifi PCI dans cette machine.

NetworkManager est une couche d’abstraction à la sauce Red Hat, et en temps normal, il ne sert à rien sur un poste fixe. En ce qui me concerne, je l’utilise avant tout sur les ordinateurs portables pour la gestion du réseau sans fil. En contrepartie, depuis la sortie de CentOS 7.5, NetworkManager est plus ou moins intimement lié à GNOME, et plus exactement à GDM. Je ne vais pas rentrer dans les détails, mais en gros, il vaut mieux ne pas désactiver NetworkManager sous GNOME, sous peine de se retrouver avec toute une série d’erreurs au démarrage du poste.

La connexion au point d’accès wifi de la bibliothèque fonctionne s’effectue sans mot de passe, ce qui est voulu. La sécurisation et le filtrage des connexions se situe derrière le point d’accès, sous forme d’un routeur/pare-feu avec Squid et SquidGuard. Je peux donc créer un fichier ifcfg-wlp2s2 et l’éditer assez simplement comme ceci.

# /etc/sysconfig/network-scripts/ifcfg-wlp2s2
DEVICE=wlp2s2
TYPE=Wireless
ONBOOT=yes
ESSID=BIBLIOTHEQUE
MODE=Managed
BOOTPROTO=dhcp

Quant à la carte filaire eth0, elle doit être désactivée, et je dois également expliciter le fait qu’elle ne soit pas gérée par NetworkManager. Je dois donc éditer ifcfg-eth0 en conséquence.

# /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
TYPE=Ethernet
ONBOOT=no
NM_CONTROLLED=no

À partir de là, la connexion au réseau s’effectue suffisamment tôt au démarrage pour que mes montages NFS s’effectuent sans histoires.

Publié dans CentOS, Documentation Microlinux | 3 commentaires

Le compteur Linky débarque chez Microlinux

Courrier refus Linky Microlinux

Publié dans Divers | Marqué avec | 7 commentaires

Migrer vers GNOME sous CentOS

GNOMECes dernières semaines, je me suis plus ou moins réconcilié avec le bureau GNOME, que je trouve plutôt bien ficelé et assez propre dans la version qui est livrée avec CentOS. Du coup, j’ai décidé de migrer petit à petit toutes mes installations existantes vers ce bureau. Les premières réactions des utilisateurs sont assez positives. Pour m’éviter de repartir de zéro pour chaque installation, j’ai élaboré une combine qui supprime uniquement la couche graphique du système sans toucher à tout le reste. La migration s’effectue donc “à chaud”, avec les données des utilisateurs en place.

Cet article décrit la migration depuis un bureau Xfce. Le même principe est également applicable de manière similaire pour les installations basées sur KDE.

Dans un premier temps, on va basculer en mode console.

# systemctl set-default multi-user.target
# systemctl isolate multi-user.target

Les groupes de paquets sont plus faciles à gérer en anglais.

# LANG=en_US.utf8 && export LANG

La principale astuce consiste à supprimer le paquet libX11-common ainsi que toutes les dépendances orphelines qui en résultent.

# yum autoremove libX11-common

Une particularité du gestionnaire de paquets yum, c’est qu’un groupe de paquets dont on supprime manuellement les composants est toujours marqué comme installé.

# yum group list hidden | less
...
Installed Groups:
  X Window System
  Xfce
Available Groups:
  Additional Development
  Anaconda Tools
  Backup Client
  Backup Server
  Base
...

Ici, il faut rectifier le tir à la main et marquer les groupes de paquets comme étant supprimés.

# yum group mark remove "Xfce"
# yum group mark remove "X Window System"

Je réinstalle explicitement le groupe de paquets Core pour me retrouver avec un système de base cohérent et récupérer une poignée de paquets essentiels.

# yum group install "Core"

À partir de là, je peux suivre la procédure d’installation du bureau GNOME décrite en détail dans cet article.

# yum install git
# git clone https://github.com/kikinovak/centos-7-desktop-gnome
# cd centos-7-desktop-gnome
# ./postinstall.sh

La prochaine étape consiste à remplacer les profils par défaut des utilisateurs par ceux que j’ai confectionnés pour GNOME. Étant donné que dans notre lycée local, j’ai une bonne centaine d’utilisateurs dans la salle info, je vais m’acquitter de cette tâche par un petit script.

#!/bin/bash

if [ ! -d /etc/skel/.config/dconf ]; then
  echo
  echo ":: Les profils par défaut ne sont pas installés."
  echo
  exit 1
fi

echo

for UTILISATEUR in $(ls /home); do
  echo ":: Mise à jour du profil de l'utilisateur $UTILISATEUR."
  rm -rf /home/$UTILISATEUR/.config/dconf
  cp -R /etc/skel/.config/dconf /home/$UTILISATEUR/.config/
  cp /etc/skel/.config/mimeapps.list /home/$UTILISATEUR/.config/
  cp /etc/skel/.gtkcdlabelrc /home/$UTILISATEUR/
  chown -R $UTILISATEUR:$UTILISATEUR /home/$UTILISATEUR/.config
  chown $UTILISATEUR:$UTILISATEUR /home/$UTILISATEUR/.gtkcdlabelrc
done

echo

exit 0

Il ne me reste plus qu’à tester mon nouvel environnement graphique.

# systemctl isolate graphical.target

Si tout se passe bien, je peux démarrer en mode graphique par défaut.

# systemctl set-default graphical.target

GNOME

Publié dans CentOS, Documentation Microlinux | Marqué avec , | 2 commentaires

Hébergement GEPI sous CentOS

GEPIGEPI (Gestion des Élèves par Internet) est une solution efficace de gestion et de suivi des résultats scolaires pour les établissements scolaires du second degré. Déployée sur un serveur, l’application est accessible via une connexion Internet sécurisée par tous les acteurs de l’établissement : administrateurs, enseignants, élèves et parents d’élèves.

De la saisie des résultats de chaque évaluation par les professeurs à l’impression des bulletins en passant par la préparation des conseils de classe, GEPI est un outil facile et souple d’accès, même pour les utilisateurs réfractaires à l’utilisation de l’outil informatique.

Depuis 2013, je maintiens l’installation de GEPI pour le lycée Scholae à Saint-Hippolyte-du-Fort. L’application est utilisée quotidiennement par la direction, les enseignants, les élèves et les parents d’élèves, pour gérer les notes, les bulletins, les cahiers de textes, les devoirs à faire, les absences, les retards, etc. Le site de mon entreprise fournit une page qui présente les principales fonctionnalités de GEPI, rédigée dans un langage accessible aux non-informaticiens.

Cet article se concentre principalement sur les aspects techniques de GEPI comme les les procédures d’installation, de sécurisation et de mise à jour. Il s’adresse aux administrateurs ayant un minimum d’expérience.

Prérequis

Configuration de SELinux

Étant donné que nous installons GEPI en-dessous de /var/www, tous les fichiers nouvellement créés seront correctement étiquetés httpd_sys_content_t. Rien à signaler de ce côté-là.

GEPI doit pouvoir envoyer des mails via Postfix, ce qu’il faut explicitement autoriser.

# setsebool -P httpd_can_sendmail on

Apache possède les droits d’écriture sur une série de répertoires de l’installation. Ces droits d’écriture seront définis par le biais des permissions Unix classiques, mais il faut également le spécifier du côté de SELinux.

# setsebool -P httpd_unified on

Téléchargement

GEPI peut être récupéré directement sur le serveur grâce au navigateur Links.

$ mkdir -pv webapps/gepi
mkdir: created directory ‘webapps’
mkdir: created directory ‘webapps/gepi’
$ cd webapps/gepi/
$ links https://gepi.mutualibre.org

Suivre le lien Télécharger et récupérer la dernière version stable.

  • gepi-1.7.3-bc28235.tar.gz

Configuration de l’hôte virtuel

Une fois que la structure de répertoires est en place, on peut définir l’hôte virtuel dans la configuration d’Apache.

# /etc/httpd/conf.d/10-gepi.slackbox.fr.conf

# http://gepi.slackbox.fr -> https://gepi.slackbox.fr
<VirtualHost *:80>
  ServerName gepi.slackbox.fr
  Redirect / https://gepi.slackbox.fr
</VirtualHost>

# https://gepi.slackbox.fr
<VirtualHost _default_:443>
  Header always set Strict-Transport-Security \
    "max-age=63072000; includeSubDomains"
  ServerAdmin info@exemple.fr
  DocumentRoot "/var/www/slackbox-gepi/html"
  ServerName gepi.slackbox.fr:443
  SSLEngine on
  SSLCertificateFile /chemin/vers/cert.pem
  SSLCertificateKeyFile /chemin/vers/privkey.pem
  SSLCertificateChainFile /chemin/vers/fullchain.pem
  BrowserMatch "MSIE [2-5]" \
    nokeepalive ssl-unclean-shutdown \
    downgrade-1.0 force-response-1.0
  ErrorLog logs/gepi.slackbox.fr-error_log
  CustomLog logs/gepi.slackbox.fr-access_log common
</VirtualHost>

Installation

Créer la base de données.

# mysql -u root -p
Enter password: ********
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 5
Server version: 5.5.52-MariaDB MariaDB Server

MariaDB [(none)]> create database `slackbox-gepi`;
Query OK, 1 row affected (0.02 sec)

MariaDB [(none)]> grant all on `slackbox-gepi`.* 
    -> to gepiuser@localhost 
    -> identified by '********';
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> quit;
Bye

GEPI sera installé en-dessous de l’arborescence /var/www/slackbox-gepi. La racine à proprement parler de l’hébergement se situera dans slackbox-gepi/html.

$ sudo mkdir -v /var/www/slackbox-gepi
mkdir: created directory ‘/var/www/slackbox-gepi’
$ sudo chown microlinux:microlinux /var/www/slackbox-gepi/
$ cd /var/www/slackbox-gepi/
$ tar xzf ~/webapps/gepi/gepi-1.7.3-bc28235.tar.gz
$ ls
gepi-1.7.3
$ mv gepi-1.7.3/ html

La plupart des articles de blog et autres tutos sur l’installation de GEPI sont assez généreux avec les droits d’accès de l’installation. L’ensemble des fichiers est attribué à l’utilisateur système qui fait tourner le serveur web (apache ou www-data), avec des droits d’écriture sur la totalité des fichiers et des répertoires.

Nous allons procéder différemment, en attribuant l’installation à l’utilisateur “commun mortel” microlinux. Les droits d’écriture seront attribués uniquement là où cela est strictement nécessaire. Pour les permissions, nous suivons les recommandations officielles adaptées à notre installation. Étant donné qu’il s’agit là d’une tâche quelque peu fastidieuse – qu’il faudra répéter à chaque mise à jour – j’ai écrit un petit script shell pour automatiser tout cela.

#!/bin/bash
# 
# set-gepi-permissions.sh
#
# Définition des permissions d'une installation GEPI

gepipath="/var/www/slackbox-gepi"
gepiroot="${gepipath}/html"
gepiuser="microlinux"
gepigroup="microlinux"
htuser="apache"
htgroup="apache"
writedirs="documents \
           images    \
           secure    \
           photos    \
           backup    \
           temp      \
           mod_ooo   \
           mod_notanet"

printf "Définition des permissions de GEPI...\n"
find ${gepipath}/ -type d -print0 | xargs -0 chmod 0755
find ${gepipath}/ -type f -print0 | xargs -0 chmod 0644
chown -R ${gepiuser}:${gepigroup} ${gepipath}/
for writedir in ${writedirs}; do
  chown -R ${gepiuser}:${htgroup} ${gepiroot}/${writedir}
  find ${gepiroot}/${writedir} -type d -print0 | xargs -0 chmod 0775
  find ${gepiroot}/${writedir} -type f -print0 | xargs -0 chmod 0664
done
chown ${gepiuser}:${htgroup} ${gepiroot}/style_screen_ajout.css*
chmod 0664 ${gepiroot}/style_screen_ajout.css*

exit 0

À partir de là, on peut ouvrir l’URL de GEPI dans un navigateur et cliquer sur Installer la base MySQL.

Installation GEPI

Ici, il suffit de renseigner l’utilisateur MySQL et le mot de passe de connexion.

Installation GEPI

La prochaine étape consiste à sélectionner la base de données créée un peu plus haut.

Installation GEPI

L’installation est terminée. À partir de là, on peut se connecter à l’interface d’administration de GEPI avec l’identifiant admin et le mot de passe azerty. Pour des raisons évidentes, GEPI vous demande de changer ce mot de passe trivial à la première connexion.

Installation GEPI

Mise à jour

Une installation existante de GEPI peut être mise à jour “à chaud” vers la dernière version stable. Dans l’exemple, nous partons d’une installation existante de GEPI dans la version 1.6.8, et nous allons la mettre à jour vers la version 1.7.3, la dernière en date lors de la rédaction de cet article.

La mise à jour des fichiers de GEPI peut s’effectuer par simple écrasement. Pour la définition des permissions, on utilisera le script shell qu’on a utilisé un peu plus haut lors de l’installation.

$ cd /var/www/slackbox-gepi/
$ tar xvzf ~/webapps/gepi/gepi-1.7.3-bc28235.tar.gz
$ ls
gepi-1.7.3 html
$ alias cp
alias cp='cp -i'
$ unalias cp
$ cp -R gepi-1.7.3/* html/
$ alias cp='cp -i'
$ sudo /usr/local/sbin/set-gepi-permissions.sh
[sudo] password for microlinux:
Définition des permissions de GEPI...

À partir de là, on peut ouvrir une session et cliquer sur Mettre à jour pour effectuer une mise à jour de la base de données.

Mise à jour GEPI

Voilà ce qu’on obtient si tout s’est bien passé.

Mise à jour GEPI

Nous utilisons désormais la dernière version de GEPI.

Mise à jour GEPI

Liens

Publié dans CentOS, Documentation Microlinux | Marqué avec , | Un commentaire

Intégrer le moniteur système Conky à GNOME

ConkyConky est un moniteur système hautement configurable qui permet d’afficher une série d’informations sur le système en fond d’écran, ce qui permet de garder l’oeil sur la charge des processeurs, l’utilisation de la mémoire, des interfaces réseau et des disques durs, le détail des processus et beaucoup d’autres informations encore.

Conky doit être lancé explicitement au démarrage du bureau. Dans l’environnement de bureau GNOME, c’est l’outil de personnalisation GNOME Tweak Tool qui permet de faire ceci, dans l’onglet Applications au démarrage. Malheureusement, on ne peut y ajouter que des applications qui disposent déjà d’une entrée dans le menu Applications. L’interface n’offre pas la possibilité de spécifier manuellement le chemin vers l’application à démarrer.

Pour contourner cette limitation, il suffit de créer manuellement une entrée correspondante dans le répertoire ~/.config/autostart. Sur mon ordinateur portable, j’ai créé un fichier ~/.config/autostart/conky.desktop qui ressemble à ceci.

[Desktop Entry]
Name=Conky
Comment=Moniteur système
Exec=conky &
Terminal=false
Type=Application
Icon=gnome-monitor
Categories=System;
StartupNotify=false

À partir de là, Conky dispose de sa propre entrée dans la liste des applications qu’il faut lancer automatiquement au démarrage du bureau.

Conky

Publié dans CentOS, Documentation Microlinux | Marqué avec , | 4 commentaires

Poste de travail CentOS 7 + GNOME “aux petits oignons”

Logo CentOSCet article décrit pas à pas et de manière détaillée l’installation d’un poste de travail de qualité entreprise basé sur CentOS 7 et l’environnement de bureau GNOME. Pour plus de détails, lire la documentation officielle. CentOS 7 est officiellement supporté jusqu’au 30 juin 2024. On choisira cette branche sur du matériel raisonnablement récent qui supporte un OS 64-bits. L’installateur de CentOS 7 requiert au moins 1 Go de RAM. Sur une machine disposant de moins de mémoire vive ou dotée d’un processeur 32-bits, on pourra opter pour CentOS 6.

Pour en savoir plus sur la configuration de GNOME, on pourra lire cet article.

GNOME

Le poste de travail présenté ici offre une série d’améliorations par rapport à un poste de travail CentOS standard.

  • L’esthétique de l’environnement GNOME est améliorée de manière significative.
  • Une panoplie d’applications populaires est installée pour toutes les tâches courantes.
  • Les codecs et plug-ins multimédia permettent de gérer les contenus audio et vidéo.
  • Les polices TrueType offrent une meilleure interopérabilité avec l’univers Microsoft.
  • Infinality permet d’obtenir un affichage aussi net que sur les systèmes de chez Apple.

Support d’installation

On choisira le CD minimal, mais rien n’empêche d’utiliser le DVD.

  • CentOS-7-x86_64-Minimal-1804.iso
  • CentOS-7-x86_64-DVD-1804.iso

Graver le CD ou le DVD à partir de l’ISO téléchargé.

Sur les machines dépourvues de lecteur optique, il faudra confectionner une clé USB d’installation. L’image ISO est hybride et peut s’écrire directement sur une clé USB.

# dd if=CentOS-7-x86_64-Minimal-1804.iso of=/dev/sdX

Démarrage

Débrancher clés USB, disques externes et autres périphériques amovibles. Autrement l’installateur les proposera au formatage.

Sur un ordinateur portable, il vaut mieux passer par une connexion cablée le temps de l’installation. La connexion wifi sera réglée en mode graphique par NetworkManager une fois que le bureau sera installé.

Langue et clavier

Dans l’écran de bienvenue, sélectionner la langue (Français) et la localisation (Français – France). La disposition du clavier sera définie par le biais de l’écran principal de l’installateur.

Interfaces réseau

Le réseau n’est pas activé par défaut, il faut donc songer à l’activer explicitement.

Les noms des interfaces réseau ont changé avec cette nouvelle version. Désormais, on n’a plus affaire à eth0, eth1, eth2, wlan0, etc. Le nouveau schéma de nommage est moins arbitraire et offre davantage de consistance en se basant sur l’emplacement physique de la carte dans la machine.

  • enp2s0
  • enp3s0
  • enp3s1
  • etc.

Date et heure

Vérifier si le fuseau horaire (Europe/Paris) est correctement configuré. Éventuellement, activer Heure du réseau et vérifier les serveurs NTP.

Désactivation de Kdump

Kdump est un mécanisme de capture lors du plantage d’un noyau. Il peut être désactivé.

Partitionnement manuel

L’outil de partitionnement graphique de CentOS n’est pas très intuitif. Voici un exemple de schéma de partitionnement courant.

  • une partition /boot de 500 MiB, formatée en ext2
  • une partition /boot/efi de 100 MiB sur les systèmes EFI
  • une partition swap, équivalent à la RAM disponible
  • une partition principale, formatée en ext4

Sur une station de travail munie de deux disques durs, on choisira le RAID 1.

  1. Cliquer sur Destination de l’installation.
  2. Vérifier si le ou les disques durs sont bien sélectionnés.
  3. Cocher Je vais configurer le partitionnement et cliquer sur Terminé.
  4. Dans le menu déroulant, sélectionner Partition standard au lieu de LVM.

Partition /boot

La taille de la partition /boot sera relativement réduite. Il faudra veiller à ne pas laisser s’entasser les vieux kernels sous peine de la remplir assez rapidement.

  1. Cliquer sur le bouton “+” pour créer un nouveau point de montage.
  2. Créer le point de montage /boot avec une capacité de 500 MiB.
  3. Définir le type de périphérique standard ou RAID 1.
  4. Choisir le système de fichiers ext2 et l’étiquette boot.
  5. Confirmer Mise à jour des paramètres.

Partition EFI

Sur les systèmes UEFI, il faut créer un point de montage /boot/efi pour une partition de type EFI, au début du disque.

  1. Cliquer sur le bouton “+” pour créer un point de montage.
  2. Créer le point de montage /boot/efi et spécifier une taille de 100 MiB.
  3. Définir le type de périphérique standard.
  4. Choisir le système de fichiers EFI System Partition et l’étiquette efi.
  5. Confirmer Mise à jour des paramètres.

Partition swap

Dans certains cas, la partition swap pourra être reléguée à la fin du disque par l’installateur pour une utilisation optimale.

  1. Cliquer sur le bouton “+” pour créer un autre point de montage.
  2. Créer le point de montage swap en spécifiant sa capacité en GiB.
  3. Définir le type de périphérique standard ou RAID 1.
  4. Choisir l’étiquette swap.
  5. Confirmer Mise à jour des paramètres.

Partition principale

La partition principale occupera tout l’espace disque restant.

  1. Cliquer sur le bouton “+” pour créer un dernier point de montage.
  2. Créer le point de montage / sans spécifier la capacité souhaitée.
  3. Définir le type de périphérique standard ou RAID 1.
  4. Choisir le système de fichiers ext4 et l’étiquette root.
  5. Confirmer Mise à jour des paramètres, puis Terminé.

Choix des paquets

Dans l’écran de sélection des logiciels du DVD, on optera pour le groupe de paquets Installation minimale proposé par défaut. Le CD minimal ne laisse pas le choix de toute façon.

Utilisateur initial

Créer un utilisateur provisoire install. Éventuellement, cocher l’option Faire de cet utilisateur un administrateur pour l’ajouter au groupe wheel et lui permettre d’utiliser sudo. Cet utilisateur sera supprimé une fois l’installation terminée.

Configuration provisoire du réseau

L’installation par défaut ne fournit pas la commande ifconfig, qui fait partie du paquet net-tools. Dans un premier temps, il faudra afficher la configuration réseau en utilisant la commande ip fournie par le paquet iproute2.

# ip address
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 
 ...
2: enp2s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 
   qdisc mq state UP qlen 1000
 link/ether 2c:27:d7:15:54:a1 brd ff:ff:ff:ff:ff:ff
 inet 192.168.1.2/24 brd 192.168.1.255 scope global dynamic enp2s0
 ...
3: enp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 
 ...
# ip route
default via 192.168.1.1 dev enp2s0

Récupérer le script de post-installation

L’utilitaire git ne fait pas partie d’une installation par défaut. Il va donc falloir l’installer.

# yum install git

Ensuite, récupérer le contenu de mon dépôt Github.

# cd
# git clone https://github.com/kikinovak/centos-7-desktop-gnome

Lancer le script de post-installation

Le répertoire centos-7-desktop-gnome contient un script postinstall.sh. Lancer ce script.

# cd centos-7-desktop-gnome
# ./postinstall.sh

L’affichage du script est assez laconique. Pour en savoir un peu plus sur le détail et la progression des opérations, on peut ouvrir un deuxième terminal et afficher le fichier journal “à chaud”, comme ceci.

# tail -f /tmp/postinstall.log

Le script se charge automatiquement des opérations suivantes.

  • Basculer SELinux en mode permissif.
  • Désactiver l’IPv6.
  • Configurer l’affichage en temps réel.
  • Personnaliser le shell Bash pour root et les utilisateurs.
  • Personnaliser la configuration de Vim.
  • Configurer les dépôts de paquets officiels de manière prioritaire.
  • Activer la gestion des Delta RPM.
  • Effectuer la mise à jour initiale.
  • Configurer les dépôts de paquets tiers : EPEL, Nux, Adobe, etc.
  • Installer une panoplie d’outils en ligne de commande.
  • Installer le serveur graphique X Window.
  • Installer l’environnement de bureau GNOME.
  • Installer une panoplie cohérente d’applications supplémentaires.
  • Personnaliser les entrées du menu GNOME.
  • Installer le profil par défaut des nouveaux utilisateurs.
  • Installer une panoplie de polices TrueType avec le rendu Infinality.
  • Installer une collection de fonds d’écran.
  • Personnaliser le gestionnaire de connexion GDM.

Remarque importante : SELinux est basculé en mode permissif de manière temporaire afin de permettre à l’administrateur de résoudre manuellement les éventuels blocages avant de rebasculer en mode renforcé.

Pour vous donner un ordre d’idée, j’ai testé le script sur une paire de vieux Dell Optiplex avec un processeur double coeur, 4 gigaoctets de RAM et une connexion ADLS à 20 Mbit/s, et ça a mouliné près de 40 minutes. Vous avez donc largement le temps de boire un ou deux cafés en attendant que ça défile.

Basculer en mode graphique

Le script ne se charge pas de basculer automatiquement en mode graphique. L’administrateur pourra donc sereinement gérer la configuration de la carte graphique, installer d’éventuels pilotes propriétaires, etc.

Un premier test de l’affichage graphique pourra être effectué comme ceci.

# systemctl isolate graphical.target

Une fois que tout fonctionne correctement, on pourra démarrer en mode graphique par défaut.

# systemctl set-default graphical.target

Créer un ou plusieurs utilisateurs

Une fois que le script est arrivé à terme, on peut créer un nouvel utilisateur. Si vous souhaitez qu’il puisse utiliser sudo, ajoutez-le au groupe wheel.

# useradd -c "Nicolas Kovacs" kikinovak
# passwd kikinovak
# usermod -a -G wheel kikinovak

Redémarrez le PC, connectez-vous et supprimez l’utilisateur install provisoire.

# userdel -r install

Configurer le réseau sur un poste de travail

Dans la configuration par défaut, le réseau est géré par NetworkManager, qui est pratique sur un portable, mais ne sert pas à grand-chose sur un poste de travail ou une station de travail. Notons au passage que contrairement à ce qui se dit dans des blogs un peu partout sur le Web, NetworkManager n’est pas nécessaire pour la gestion du réseau. C’est juste une couche d’abstraction et de complexité supplémentaire, et dont on peut aisément se passer.

Avant la sortie de CentOS 7.5, il était tout à fait possible de désactiver le service NetworkManager (systemctl disable NetworkManager) voire même de supprimer le paquet correspondant (yum remove NetworkManager) pour configurer les choses de manière traditionnelle.

Or, depuis la version 7.5, les choses ont changé quelque peu. D’une part, le gestionnaire de connexion GDM dépend désormais de NetworkManager. D’autre part, la désactivation du service nous gratifie d’un avertissement au démarrage. Pour configurer le réseau de manière traditionnelle, on va donc simplement laisser le service en l’état et éditer le fichier correspondant à notre carte réseau comme ceci par exemple.

# /etc/sysconfig/network-scripts/ifcfg-enp2s0
DEVICE=enp2s0
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=dhcp
NM_CONTROLLED=no

Si l’on gère les noms d’hôtes de manière centralisée avec Dnsmasq, il faut supprimer les occurrences correspondantes dans /etc/hosts.

# /etc/hosts
127.0.0.1 localhost.localdomain localhost

Le fichier /etc/hostname devra juste contenir ceci.

localhost

Configurer le réseau sur un portable

Sur un ordinateur portable, on utilisera le NetworkManager et l’applet correspondant network-manager-applet, qu’il faudra installer.

# yum install network-manager-applet

Pour éviter les conflits, il vaut mieux supprimer les fichiers ifcfg-<interface> dans /etc/sysconfig/network-scripts et garder uniquement ifcfg-lo. Ensuite, il suffit de vérifier si NetworkManager est actif.

# systemctl status NetworkManager

GNOME

Publié dans CentOS, Documentation Microlinux | Marqué avec , | 9 commentaires