Debian

System

Ce billet présente des trucs et astuces pour le système Debian. Ce système est à la base du fonctionnement des systèmes Ubuntu et Raspberry PI OS. Les manipulations proposées devraient être applicables à ces deux autres systèmes. Elles vous permettront par exemple de vous connecter automatiquement au terminal lors du démarrage du système ou de changer la configuration du clavier, etc...

Cacher le menu de démarrage du système.

Sur les systèmes Debian installés par défaut, un écran de choix du type de démarrage s'affiche lorsque le système démarre. C'est l'utilitaire Grub qui pilote ces types de démarrage par l'intermédiaire d'un menu de sélection qui s'affiche lors du lancement du système. Il est possible d'exécuter immédiatement l'option par défaut en supprimant le temps d'attente pour faire votre choix ce qui aura pour effet de ne plus afficher le menu. La configuration de cet outil se trouve dans le fichier grub à l'emplacement /etc/default. Éditez ce fichier en utilisant l'outil d'édition de fichier nano en tant qu'administrateur.

sudo nano /etc/default/grub

Modifiez le paramètre GRUB_TIMEOUT en lui donnant la valeur 0.

GRUB_TIMEOUT=0

Sauvegardez la modification puis appliquez là avec la commande

sudo update-grub

Terminez la manipulation en redémarrant le système.

sudo reboot

Haut de la page

Se connecter automatiquement au terminal avec un utilisateur par défaut.

Pour se connecter automatiquement au terminal avec un utilisateur par défaut lorsque le système démarre il faut modifier la configuration de getty qui est l'outil d'ouverture d'un port de communication vers le système Linux à partir d'un terminal.

Pour cela il faut exécuter la commande

sudo systemctl edit getty@.service

Cette commande crée automatiquement un fichier de remplacement de la configuration du service getty à l'emplacement

/etc/systemd/system/getty@.service.d/override.conf

Ce fichier commence avec les lignes suivantes :

### Editing /etc/systemd/system/getty@.service.d/override.conf
### Anything between here and the comment below will become the new contents of the file

### Lines below this comment will be discarded
...

Il faut ajouter dans l'espace réservé les lignes suivantes en remplaçant le nom de l'utilisateur myuser par l'identifiant de l'utilisateur avec lequel on souhaite se connecter automatiquement.

[Service]
ExecStart=
ExecStart=-/sbin/agetty --noclear --autologin myuser %I $TERM

La première ligne indique entre les [] la section de configuration concernée par les lignes qui suivent. Dans notre cas, il s'agit de la section [Service] qui indique ce que le service doit exécuter comme commandes Linux et à quel moment il doit les exécuter. Il s'appuie pour cela sur les paramètres et leurs valeurs associées qui suivent la déclaration de cette section. La deuxième ligne permet de réinitialiser le paramètre ExecStart qui détermine la commande à exécuter au démarrage du service. Le fait de ne rien associer à ce paramètre va permettre de le réinitialiser. La troisième et dernière ligne contient la nouvelle commande Linux associée au paramètre ExecStart. Dans notre cas, il s’agit de la commande /sbin/agetty. L'option noclear de la commande agetty indique de ne pas vider l'écran avant l'exécution de la commande. L'option autologin indique de se connecter automatiquement avec l'utilisateur qui suit ce paramètre sans demander l'identifiant ni le mot de passe de cet utilisateur. Le dernier paramètre -I est suivi d'une chaîne de caractères qui sera transmise au début de l'exécution de la commande agetty. Dans notre cas, cette chaîne de caractères est contenue dans la variable $TERM qui contient par défaut la valeur linux. Vous pouvez obtenir une information détaillée et en Français de la commande agettysur le site officiel du système Debian. Vous trouverez également une explication détaillée et en Français du fonctionnement du gestionnaire du système et des services sur la page dédiée du Wiki de Debian.

Une fois la section ajoutée au fichier, le début de celui-ci doit ressembler à ce qui suit

### Editing /etc/systemd/system/getty@.service.d/override.conf
### Anything between here and the comment below will become the new contents of the file

[Service]
ExecStart=
ExecStart=-/sbin/agetty --noclear --autologin myuser %I $TERM

### Lines below this comment will be discarded
...

Terminez la manipulation en redémarrant le système.

sudo reboot

Haut de la page

Configurer un clavier Mac en Français.

La configuration d'un clavier pour le système Debian se trouve dans le fichier keyboard à l'emplacement /etc/default. Éditer ce fichier en tant qu'administrateur avec la commande nano.

sudo nano /etc/default/keyboard

Remplacez la configuration existante avec celle qui correspond à un clavier Mac standard en Français.

# KEYBOARD CONFIGURATION FILE

# Consult the keyboard(5) manual page.

XKBMODEL="pc105"
XKBLAYOUT="fr"
XKBVARIANT="mac"
XKBOPTIONS="lv3:switch,compose:lwin"

BACKSPACE="guess"

Terminez la manipulation en redémarrant le système.

sudo reboot

Haut de la page

Permettre à un utilisateur d'exécuter une commande avec des privilèges d'administrateur.

Si vous avez installé un système Debian en donnant un mot de passe au compte root lors de son installation, le compte rootsera activé. Mais dans ce cas l'utilisateur par défaut ne disposera pas des droits lui permettant d'exécuter la commande sudo. C'est cependant cette commande qui permet à l'utilisateur d'élever ses privilèges afin d'exécuter une commande Unix qui requiert des privilèges d'administrateur.

Pour ajouter ce droit à un utilisateur il faut d'abord disposer de la commande sudo. Cette commande n'est pas disponible si vous avez activé l'utilsiateur root lors de l'installation du système.

Pour installer cette commande, il faut vous connecter au système avec l'utilisateur root puis installer la commande sudo.

apt install sudo

Il faut ensuite autoriser l'utilisateur à exécuter la commande sudo.

usermod -aG sudo myuser

Le paramètre myuser doit être remplacé par l'utilisateur choisi.

Haut de la page

Configurer les sources de mise à jour du système.

Si vous avez installé un système Debian à partir d'une image DVD, la configuration des mises à jour est paramétrée de telle manière qu'elle se fasse à partir du DVD. Pour que les mises à jour se fessent à partir de l'Internet, il faut modifier le fichier sources.list à partir de l'emplacement etc/apt avec la commande nano.

sudo nano /etc/apt/sources.list

Pour la version de système 12 "Bookworm", remplacez la configuration existante par la suivante :

# Debian Bookworm, dépôt principal
deb https://deb.debian.org/debian bookworm main non-free-firmware
deb-src https://deb.debian.org/debian bookworm main non-free-firmware

# Debian Bookworm, mises à jour de sécurité
deb https://security.debian.org/debian-security bookworm-security main non-free-firmware
deb-src https://security.debian.org/debian-security bookworm-security main non-free-firmware

# Debian Bookworm, mises à jour "volatiles"
deb https://deb.debian.org/debian bookworm-updates main non-free-firmware
deb-src https://deb.debian.org/debian bookworm-updates main non-free-firmware

Haut de la page

Changer la langue du système.

Le changement de la langue du système se fait avec la commande dpkg-reconfigure.

sudo dpkg-reconfigure locales

Elle affiche un écran de sélection qui vous permet de choisir la langue du système que vous souhaitez utiliser.

dpkg_reconfigure_1

Les deux premiers caractères en identifient le code langue. Il s'agit d'un acronyme du nom de la langue exprimé en Anglais. Cette codification répond à la norme internationale ISO 639-1. Les deux caractères suivants US identifient le code pays qui est une déclinaison de la langue. Il s'agit également d'un acronyme exprimé en Anglais. Cette codification répond à la norme internationale ISO 3166-1 Alpha 2. Ces deux codes sont suivis du standard d'encodage utilisé pour stocker les caractères de la langue. Plus de 95% des langues suivent le standard UTF-8.

Sélectionnez en_US.UTF-8 UTF-8 pour l'américain ou fr_FR.UTF-8 UTF-8 pour le Français.

Dans le cas où vous choisissez plusieurs langues, vous devrez déterminer quelle est la langue principale que le système utilisera.

dpkg_reconfigure_2

Cet écran apparaitra systématiquement même si vous n'avez sélectionné qu'une seule langue car il existe la langue de l'ordinateur qui est identifiée par C. Cette langue est quasiment systématiquement délivrée en américain en-US.

Les autres langues servent à supplanter cette langue principale en les attribuant spécifiquement par utilisateur mais par défaut la langue principale s'applique à tous les utilisateurs. Si vous avez installé un Bureau comme Gnome ou KDE cette supplantation se paramètre dans le fichier .dmrc de l'utilisateur en modifiant dans la section DESKTOP la valeur du paramètre Language.

L'exemple suivant permet d'attribuer la langue Française en éditant le fichier .dmrc de l'utilisateur en utilisant la commande nano

nano /home/<user>/.dmrc

Le paramètre <user> doit être remplacé par l'identifiant de l'utilisateur choisi.

Puis modifiez le fichier comme suit

...
[Desktop]
Language=fr_FR.utf8
...

Haut de la page

Se connecter à distance avec un terminal.

Il y a plusieurs raisons qui justifie de vouloir se connecter à distance sur votre système avec un terminal. LE système est installé sur un serveur distant. Le serveur n'a pas de bureau ce qui limite les interactions comme les copier/coller. Vous voulez utiliser un environnement de développement comme Visual Studio Code pour réaliser vos scripts ou vos programmes. Bref, il y a des tas de raisons qui justifient ce besoin.

La connexion à distance s'appuie sur la solution ssh. Pour que cela fonctionne, il vous faut d'abord un serveur que vous devez installer et configurer sur le système sur lequel vous souhaitez vous connecter.

Pour cela, il faut vous authentifier sur la console du système concerné et installer le serveur ssh avec la commande.

sudo apt install openssh-server

L'installation du serveur ssh entrainera automatiquement son démarrage et l'ajoutera à liste des services à lancer lors du lancement du système.

Vous pouvez vérifier son bon fonctionnement avec la commande

sudo systemctl status sshd.service

openssh_server_1

Vous devez voir la mention enabled en vert qui indique que le service est activé et se lancera automatiquement au démarrage du système. Si ce n'est pas le cas, vous pouvez activer le service avec la commande

sudo systemctl enable ssh

Vous devez également voir active en vert. Si ce n'est pas le cas, lancez le service avec la commande

sudo systemctl start sshd.service

Haut de la page

suppression du message d'accueil du terminal.

Par défaut, lors du lancement du terminal, le système affiche un message d'accueil une fois que l'on s'est authentifié.

Par exemple, on peut avoir le message suivant :

motd_1

Ce message est géré par l'utilitaire motd qui est l'acronyme de "Message Of The Day". Il est défini dans le fichier motd à l'emplacement /etc. Pour supprimer ce message, une première méthode radicale consiste à supprimer ce fichier avec la commande suivante:

sudo rm /etc/motd

Mais il est également possible de supprimer ce message en ajoutant le fichier .hushlogin au niveau du dossier d'accueil de l'utilisateur. cea se fait avec la commande suivante.

touch ~/.hushlogin

Si ce fichier existe, la commande d'authentification login va supprimer tous les messages systèmes affichés au démarrage. Vous pouvez obtenir une information détaillée et en Français de la commande login sur le site officiel du système Debian.

Haut de la page

Modification du prompt du terminal.

Par défaut, une fois que l'on est connecté au terminal, les commandes Linux que vous saisissez sont toujours précédées par une chaîne de caractères que l'on nomme le prompt. En général ce prompt reprend l'identifiant de l'utilisateur suivi de @ puis le nom du système suivi de : puis de l'emplacement du dossier où l'on se trouve, ~ indiquant que l’on se trouve au niveau dossier racine de l'utilisateur, et enfin de $. Comme par exemple

ps1_1

C'est seulement après cette chaîne de caractères que l'on peut commencer à saisir sa commande Linux. La définition de cette chaîne se trouve dans la variable d'environnement PS1. La manière la plus simple d'en modifier sa définition consiste à ajouter au fichier de configuration de l'interface en ligne de commande Bash une redéfinition de cette variable d'environnement. Ce fichier se nomme .bashrc et se trouve à la racine du dossier de l'utilisateur qui s'est connecté. Éditez ce fichier en utilisant l'outil d'édition de fichier nano.

nano ~/.bashrc

Il faut ensuite définir la variable PS1 avec une nouvelle chaîne de caractères que vous pouvez rajouter à la fin du fichier.

...

PS1=">"

Le prompt du terminal affichera alors la valeur de cette chaîne comme on peut le voir ci-dessous.

ps1_2

La définition de cette variable peut également peut faire appel à d'autres variables comme l'identifiant de l'utilisateur ou le nom du serveur mais elle peut aussi utiliser des commandes de formatage de ces informations. Par défaut l'affichage du contenu de cette variable renvoie une valeur de prompt assez complexe.

echo $PS1
\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\[\033[01;32m\] ...

Il existe une documentation provenant d'un outil qui permet d'afficher le résulat de ce formatage du prompt sur le site officiel du système Debian.

Sécurisation d'un site web de développement.

Lorsque l'on développe un site web, on peut décider de le tester localement. il est possible de sécuriser le serveur web qui sert à ces tests en générant un certificat SSL pour ce serveur. Mais dans ce cas le certficiat est dit "auto-signé" et le navigateur web affichera une alerte de sécurité lorsque vous accéderez à ce serveur web. Pour éviter ce message il faut disposer d'un certificat signé. Mais dans ce cas il faut le signer par une autorité de certification reconnnue ce qui est contraignant voir très compliqué ou même impossible si le nom de domaine du serveur web n'est pas déclaré sur Internet, par exemple "mydebian.local". il existe pourtant une solution avec mkcert.

Il faut tout d'abord installer l'outil mkcert avec la commande

sudo apt install mkcert

Il faut ensuite ce positionner dans le dossier où l'on souhaite stocker le certificat, par exemple ...

cd /etc/ssl/website/

On peut alors générer pour le serveur web, par exemple "mydebian.local" les clés publique et privée avec la commande...

sudo mkcert mydebian.local

On peut alors vérifier que les deux fichiers ont bien été générés avec la commande ls

myuser@mydebian:/etc/ssl/website$ ls -al 
total 16
drwxr-xr-x 2 root root 4096 Feb 27 17:06 .
drwxr-xr-x 5 root root 4096 Feb 27 15:15 ..
-rw------- 1 root root 1704 Feb 27 17:06 mydebian.local-key.pem
-rw-r--r-- 1 root root 1456 Feb 27 17:06 mydebian.local.pem
myuser@mydebian:/etc/ssl/website$

Il faut ensuite déclarer les clés dans le fichier de configuration du site ...

<VirtualHost *:80>
    ServerName mydebian.local
    Redirect permanent / https://mydebian.local/
</VirtualHost>

<VirtualHost *:443>
    ServerName mydebian.local
    DocumentRoot /data/website/content

    <Directory /data/website/content>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>

    SSLEngine on
    SSLCertificateFile /etc/ssl/website/mydebian.local.pem
    SSLCertificateKeyFile /etc/ssl/website/mydebian.local-key.pem

    ErrorLog ${APACHE_LOG_DIR}/website_error.log
    CustomLog ${APACHE_LOG_DIR}/website_access.log combined
</VirtualHost>


il faut enfin installer le certficat racine mkcert pour votre navigateur. Sur un mac celà se fait avec l'utilitaire brew.

On commence par installer le package mkcertavec la commande ...

brew install mkcert

Ensuite on installe le certficiat racine avec la commande ...

mkcert -install

Celà installera le certifciat dans le trousseau des clés Système qui seront repris par Safari et Chrome. Pour Firefox il faut au préable installer nssavec la commande ...

brew install nss

Accéder aux repositories Git.

Bien que cette rubrique ne soit pas directement liée à l'usage d'un système Débian, elle s'applique à la plupart des systèmes Unix. Bon nombre de petits projets informatiques, ou gros d'ailleurs, gèrent les programmes sources de sces projets ainsi que leur documentation dans des espaces de travail, que l'on nomme des dépôts ou repsitories en anglais. Ces dépôts sont gérés par des sites optimisés pour ce ctype d'usage. il existe aujourd'hui dans le cloud deux leaders dans ce domaine, github et gitlab. Je ne préconise l'usage ni de l'un ni de l'autre. D'ailleurs, il y a un petit débat sur le sujet et dans l'ensemble aucun des deux n'a véritablement pris l'avantage. Mais j'ai écrit ce billet, non pas pour que vous puissiez gérer vos propres dépôts mais pour que vous puissiez télécharger celui des autres. Pour tout vous dire, j'ai un peu galérer la première fois.

Tout d'abord, il vous faut la boîte à outils 'git' pour accéder à ces dépôts. Par défaut, elle n'est pas livrée par défaut avec le systèem Débain. il faut donc l'installer.

sudo apt install git

Une fois installé, vous pouvez télécharger un dépôt git avec la commande 'clone'. J'avais installé git pour télécharger ES-DE. J'ai donc voulu télécharger ses sources qui se trouvent sur gitlab en utilisant la première méthode préconnisée qui s'appuie sur ssh.

git clone git@gitlab.com:es-de/emulationstation-de.git

Sur un système Débian fraichement installé, la commande git vous demandera tout d'abord d'approuver la clé d'accès du site gitlab.

Cloning into 'emulationstation-de'...
The authenticity of host 'gitlab.com (172.65.251.78)' can't be established.
ED25519 key fingerprint is SHA256:eUXGGm1YGsMAS7vkcx6JOJdOGHPem5gQp4taiCfCLB8.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])?

Et là les ennuis commencent. La commande nous renvoie une erreur.

Warning: Permanently added 'gitlab.com' (ED25519) to the list of known hosts.
Connection closed by 172.65.251.78 port 22
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

Après avoir "googlé" sur le sujet, j'ai compris qu'il me fallait un compte et une clé SSH d'accès à ce compte qui servirait à la fois à accéder à mes propres repos Git mais aussi aux autres.

J'ai donc créé mon compte sur GitLab puis accédé à l'outil de configuration des clés SSH à partir de mes préférences d'utilisateur.

gitlab_1

C'est là qu'il faut intégrer sa clé SSH. Il s'agit bien sur de sa clé Publique que tout le monde peut lire puisqu'elle ne sert qu'à crypter des données et pas à les décrypter. C'est le rôle de la clé privée. Il faut donc disposer d'une paire de clés publiques et privées.

Lors de la première tentative de clônage du dépôt Git, le site me demandait d'approuver la clé publique qui était de type ED25519. J'ai donc demandé de générer une paire de clés de ce type avec la commande...

ssh-keygen -t ed25519 -C "fxlevy@arkama.fr"

L'option -t détermine le type de clé à créer et l'option -C permet d'ajouter un commentaire à la clé qui sera générée. en l'occurence j'ai indiqué mon identifiant Gitlab.

Plusieurs questions sont posées durant la procédure de création. Vous pouvez conserver les paramètres proposés par défaut.

Generating public/private ed25519 key pair.
Enter file in which to save the key (/Users/fxlevy/.ssh/id_ed25519): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /Users/fxlevy/.ssh/id_ed25519
Your public key has been saved in /Users/fxlevy/.ssh/id_ed25519.pub
The key fingerprint is:
SHA256:bxa7ll9JCSUM0uiUAR3fZlhOCS6q00UlTApeSgtIA30 fxlevy@arkama.fr
The key's randomart image is:
+--[ED25519 256]--+
|+=. o o=**+++..  |
|. o+E= .**.*oo   |
|   .+ .oo + *    |
|       o.. o . . |
|      . S .   o  |
|     o . . o . . |
|    o .   =.  o  |
|     .   oo. .   |
|         ....    |
+----[SHA256]-----+

La procédure génère 2 fichiers. Celui qui contient la clé privée à ne jamais communiquer bien sur et celui qui se termine par .pub et qui conteient la clé publique que l'on va utiliser.

On édite le fihcier qui contient la clé publique.

nano /Users/fxlevy/.ssh/id_ed25519.pub

il faut copier toute la ligne qui s'affiche.

ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOrO+rjk5FCxyYD+UQRJjni3BeVfcJvRy6EJB11n6NnJ fxlevy@arkama.fr

A partir des paramètres de l'utiliser pour les clés SHH sur le site Gitlab, il faut cliquer sur le bouton Add New Key, coller la ligne que l'on vient de copier et cliquer sur le bouton 'Add Key'.

gitlab_2

Si vous avez plusieurs systèmes Unix et que vous souhaitez utiliser cette même paire de clés, il faut copier les 2 fichiers dans le dossier .ssh de votre dossier d'accueil.

Pour vérifier si tout marche, vous lancer la commande

ssh git@gitlab.com

La réponse doit être un succès.

Welcome to GitLab, @fxlevy!

On peut maintenant clôner n'importe lequel des dépôts publiques à partir du site Gitlab.

git clone git@gitlab.com:es-de/emulationstation-de.git

Le dépôt demandé devrait être clôner localement sans problème.

Cloning into 'emulationstation-de'...
remote: Enumerating objects: 65789, done.
remote: Counting objects: 100% (549/549), done.
remote: Compressing objects: 100% (253/253), done.
remote: Total 65789 (delta 311), reused 514 (delta 296), pack-reused 65240 (from 1)
Receiving objects: 100% (65789/65789), 156.31 MiB | 18.70 MiB/s, done.
Resolving deltas: 100% (45153/45153), done.
Updating files: 100% (5208/5208), done.

Haut de la page

Previous Post Next Post