linux-debian.net

Formations en informatique libre, pour particuliers

Utiliser Linux Debian

email Facebook Twitter
Màj : 17 août 2024   –   # pages : 19

L'esprit Linux Debian

https://linux-debian.net/utiliser#esprit-du-libre
linux-debian.jpg

Maintenant que vous avez libéré votre ordinateur (voir /installer), vous allez pouvoir acquérir (par la pratique) l'esprit Linux, c-à-d vous libérer du comportement passif dans lequel vous a maintenu votre ancien système propriétaire (Microsoft ou Mac). Cette passivité maintient la population dans l'analphabétisme numérique, et la pousse ainsi dans les bras des GAFAM. Ces entreprises commerciales privées se moquent de savoir que vous n'utilisez qu'une infime partie des fonctions de leur système, et souvent de façon très inefficace (je tombe de ma chaise à chaque fois que j'observe travailler sur leur ordinateur des utilisateurs de Microsoft comme de Macintosh). La raison de cette situation est que l'objectif des GAFAM est de collecter vos données personnelles (privées, sociales et professionnelles). Ce ne sont pas des entreprises publiques dans un système de démocratie directe...

Avec Linux vous allez démultiplier votre productivité informatique ... par la pratique. Car Linux Debian, ce n'est pas seulement un système libre et ouvert. C'est aussi une communauté d'entraide et de collaboration.

Entraide

Dans l'esprit Linux Debian, vous aider, ce n'est pas résoudre les supposés "problèmes" à votre place, mais vous indiquer la voie pour le faire vous-même. Vous découvrirez d'ailleurs que, dans la plupart des cas, la cause de supposés "dysfonctionnements" du système n'est pas le matériel ou le logiciel, mais l'analphabétisme numérique.

Ainsi avant de demander de l'aide sur un forum (par exemple debian-fr.org), ayez le réflexe de systématiquement vous poser d'abord les questions suivantes : "quelle est nature du supposé "problème" " ⇒ "quelles sont ses causes possibles" ⇒ "que dois-je faire pour résoudre le problème". Pour chacune de ces questions, écrivez les réponses que vous imaginez, tout cela dans un même fichier que vous mettez à jour au fur et à mesure de vos recherches. Dans la section suivante vous apprendrez comment répondre à ces questions ⇒ ne demandez de l'aide à la communauté Linux Debian qu'après avoir essayé de résoudre vous-même le "problème", et en communiquant le résultat de vos recherches. Sinon, la seule réponse que vous risquez de recevoir sera généralement RTFM.

Mode
de vie

Mais, in fine, la maîtrise de votre ordinateur est surtout une philosophie d'émancipation. Le logiciel libre est donc aussi un mode de vie, ce qui se traduit par :

  • l'autoformation permanente (par exemple un demi journée par semaine, jusqu'à la fin de vos jours) ;
  • la participation à la création d'un réseau décentralisé.

Apprentissage

https://linux-debian.net/utiliser#apprentissage

Apprenez par la pratique, et non en lisant les manuels de debian.org de A à Z. Utilisez ceux-ci comme une encyclopédie où l'on va chercher la réponse à une question spécifique.

Si le sommaire ne suffit pas pour trouver la section ad hoc, faites une recherche par mots clés via un moteur de recherche : motsClés site:debian.org. Vous trouverez ainsi des éléments des réponse provenant :

D'autre part sachez qu'une réponse a très probablement déjà été fournie à votre question. Faites donc une recherche sur ces excellents sites (anglophones...) :

  • debian otherKeyWords site:superuser.com
  • debian otherKeyWords site:stackoverflow.com

Pour traduire vos mots clés en anglais : translate.google.com

Système de fichiers

https://linux-debian.net/utiliser#systeme-fichiers

Avec Linux Debian et d’autres systèmes d’exploitation semblables à UNIX, les fichiers sont organisés en répertoires. Tous les fichiers et les répertoires sont disposés sous forme d’une arborescence ancrée sur / . On parle d'arborescence parce que si vous dessinez le système de fichiers, il ressemble à un arbre qui se trouverait disposé la tête en bas (c'est aussi pourquoi on utilise le terme "répertoire" plutôt que "dossier").

Un autre différence par rapport à d'autres systèmes d'exploitation est l'absence du concept de "lecteurs" : il y a un système de fichiers qui comprend tout. C’est un gros avantage comparé au système de lecteurs tels que A: etc sur MS Windows.

Arborescence des fichiers :

À priori les noms des répertoires peuvent sembler rébarbatifs, mais on s'y habitue très vite, et surtout ils sont très bien adaptés à l'utilisation des lignes de commandes.

Ligne de commandes

https://linux-debian.net/utiliser#ligne-commandes
 4.1. Principes
 4.2. Bash

Principes

https://linux-debian.net/utiliser#ligne-commandes-principes
shell.jpg

Pour utiliser un ordinateur, c-à-d interagir avec le système d'exploitation (SE), une couche logicielle appelée "interface système" ou plus souvent shell – et logiquement située "entre" le SE et l'utilisateur – permet à celui-ci d'utiliser une série de commandes.

Il y a deux façons d'envoyer les commandes au SE (et de recevoir sa réponse) :

  • shell graphique (communément "bureau") : l'utilisateur interagit indirectement par clics sur une interface graphique  ;

    NB : dans toutes les pages de linux-debian.net, dès qu'il est fait référence à une interface graphique, sachez que c'est dans le cadre du bureau Mate, que nous recommandons en raison de sa simplicité.

  • shell texte (communément "terminal") : l'utilisateur interagit directement par texte dans une interface en lignes de commandes.

Le shell graphique est supposé plus convivial, mais présente cependant deux inconvénients : (i) il n'utilise qu'une partie des commandes disponibles, et pour chacune d'elle seulement une partie de ses options ; (ii) il peut consommer beaucoup de mémoire vive, et ainsi ralentir sensiblement la vitesse de fonctionnement de l'ordinateur.

Quelle type de shell préférer ? Préférer l'interface graphique n'est pas un crime, mais si vous n'utilisez que le shell graphique, vous progresserez nettement moins dans la maîtrise de votre ordinateur, et dans la compréhension intuitive des technologies de l'information. Ainsi à chaque fois que j'utilise une commande, je cherche à comprend la signification de chacune de ses chaînes de caratères, au moyen des manuels présentés plus loin dans la section #bash.

Terminal

Dans l'image ci-dessous, illustrant un terminal, l'utilisateur dev, travaillant sur l'ordinateur vmdev, a lancé la commande ls -l (première ligne). Cette commande affiche le contenu du répertoire courant (ici le répertoire racine de dev). Une fois le résultat affiché, l'invite de commande dev@mdev:~$ est à nouveau affichée (dernière ligne).

Interface de ligne de commande (ou "terminal")

terminal.jpg

Si le répertoire courant était "Documents", l'invite serait dev@mdev:~/Documents$

Copier-coller. Dans le terminal, les habituelles combinaisons de touche ctrl+c (copier) et ctrl+v (coller) de l'interface graphique doivent être remplacées respectivement par ctrl+shift+c et ctrl+shift+v. On peut aussi utiliser le clic-droit de la souris.

Quelques principes de base de la ligne de commande :

  • debian.org/doc/manuals/debian-handbook/... > B1
  • $ commande : commande en mode utilisateur ;
    # commande : commande en mode root (peut tout faire) ; pour passer en root : $ su -
  • séquence : commande1 | commande2 applique "commande2" à la sortie de "commande1" ; en voici deux exemples  :
    • déterminer quel est le type de carte graphique installée : $ lspci | egrep "3D|Display|VGA"
    • afficher la liste des fichiers (du répertoire courant) dont le nom se termine par gif ou jpg : $ ls | grep '.*\(gif\|jpg\)'
  • redirection :
    commande > fichier redirige la sortie de "commande" vers "fichier" (en écrasant) ;
    commande >> fichier redirige la sortie de "commande" vers "fichier" (en ajoutant) [source] ;
    commande < fichier nourrit la commande en valeurs stockées dans le fichier.
  • Nettoyer le terminal : clear ;
  • ... et bien d'autres choses, que vous apprendrez en utilisant le langage bash (cf. section suivante).

Les fonctions de séquence et redirection évoquées ci-dessus montrent bien que l'interface graphique ne permet d'opérer qu'une partie des fonctions utilisables via l'interface en lignes de commandes.

Laurent Bloch stimule une compréhension intuitive du shell en posant cette question : « Avez-vous déjà essayé de vous rappeler quelle séquence de coups de souris avait produit tel résultat subtil et ardemment désiré dans Word ? ou de dicter au téléphone une telle séquence à un collègue (sauf dans le cas où il est devant son écran et peut effectuer les actions au fur et à mesure de la dictée) ? Tandis qu’une série de commandes du shell, cela s’envoie par courrier électronique de façon sûre » [source p.62].

Autrement dit, on peut donc écrire en shell des programmes, appelés shell scripts, constitués de séquences de commandes agrémentées de constructions telles qu’alternative ou répétition, ce qui permet d’automatiser des tâches répétitives. Le shell est donc un type de langage de programmation. Il existe divers shell, le plus célèbre étant probablement bash ...

Bash

https://linux-debian.net/utiliser#bash
 4.2.1. Manuels
 4.2.2. Exercices
Manuels
https://linux-debian.net/utiliser#bash-manuels

Bash est un shell libre, installé par défaut sur Linux Debian.

Avec l'anglais, actuellement la première langue internationale, le langage de programmation bash devrait faire partie du programme d'enseignement obligatoire de base. Ce n'est malheureusement pas le cas, ce qui a conduit à l'analphabétisme numérique de la quasi totalité de la population, y compris parmi les jeunes universitaires ! Cela est une des raisons de la création du présent site linux-debian.net.

Voici les manuels :

  • manuel en français ;
  • manuel en anglais (plus détaillé) ;
  • focus sur les expressions régulières : également appelée "regex" ou encore "expressions rationnelles", elles permettent de programmer des fonctionnalités de lecture, contrôle, modification et analyse de textes.

    Avec les regex, l'informatique rejoint donc la pensée. Par conséquent, ne sommes-nous pas ici au coeur de l'intelligence artificielle et/ou collective ?

  • deux manuels complets (plus théoriques que les précédents, à ne consulter que pour approfondir des points spécifiques) :
Exercices
https://linux-debian.net/utiliser#bash-exercices

Sur votre terminal, reproduisez les opérations de l'encadré ci-dessous. Pour chaque ligne de commande, cherchez à comprendre la signification de chaque chaîne de caractères : essayez d'abord la compréhension intuitive, puis vérifiez dans le manuel ad hoc.


# Créer une base de données alphanumérique (nommée par exemple bd) :
cat > bd
Ilda 69 Lyon
Jean 23 Paris
# : "Enter" après chaque ligne (suivi de ctrl+c pour la dernière entrée).

# Afficher le contenu de bd :
cat bd
Ilda 69 Lyon
Jean 23 Paris

# Lister le contenu du répertoire actif --> constatez la présence de bd :
ls -l
# : trouvez dans man ls l'explication de l'option -l.

# Ajouter des nouvelles lignes à bd :
cat >> bd
Sophie 26 Lille
Jean 23 Paris
Alice 42 Paris
Jean 23 Paris
cat bd
Ilda 69 Lyon
Jean 23 Paris
Sophie 26 Lille
Jean 23 Paris
Alice 42 Paris
Jean 23 Paris
# : à l'aide de >> site:https://fr.wikibooks.org/wiki/Programmation_Bash dans votre moteur de recherche, trouvez l'explication de ">>".

# Identifier les doublons :
sort bd | uniq -c
1 Alice 42 Paris
1 Ilda 69 Lyon
3 Jean 23 Paris
1 Sophie 26 Lille
# : cherchez dans man uniq le passage qui explique le pourquoi de ce tunnel.

# Supprimer les doublons:
sort -u bd -o bd
cat bd
Alice 42 Paris
Ilda 69 Lyon
Jean 23 Paris
Sophie 26 Lille
# : cherchez dans man sort la signification des options -u et -o.

# Trier la base de données sur base de la colonne 2 :
sort -k 2 bd
Jean 23 Paris
Sophie 26 Lille
Alice 42 Paris
Ilda 69 Lyon

# Afficher Prénom et Ville si Ville=Paris :
awk '$3 == "Paris" {print $1,$3}' bd
Jean Paris
Alice Paris

# Afficher les lignes des personnes âgées dans la vingtaine :
awk '$2~/^2/' bd
Jean 23 Paris
Sophie 26 Lille

# Calculer l'âge moyen :
awk '{sum+=$2} END{print sum/FNR}' bd
40

# Remplacer "Paris" par "Lutèce" :
sed -i 's/Paris/Lutèce/g' bd
Ilda 69 Lyon
Jean 23 Lutèce
Sophie 26 Lille
Alice 42 Lutèce
# : trouvez la signification de l'option -i.

N.B. Remarquez que la plupart des opérations que nous appliquons ici au fichier bd, peuvent l'être également au résultat de commandes. Exemples avec la commande ls : ls -lh | sort -k 9 (trier sur base de la neuvième colonne) ou encore ls -lh | sort -nk 5 (trier sur base de la cinquième colonne).

# Soit la base de données numériques :
cat bdn
1 2 3
6 5 4
7 8 9

# Afficher la somme de chaque ligne :
awk '{s=0;for(i=1; i<=NF; i++) {s+=$i} print s}' bdn
6
15
24

# Afficher la somme de chaque colonne (source : stackoverflow.com/...) :
awk '{for (i=1;i<=NF;i++) {sums[i]+=$i;maxi=i}} END{for (i=1;i<=maxi;i++) {printf("%s ", sums[i])} print}' bdn
14 15 16
# : lecture : pour chaque colonne, sa somme est calculée (progressivement) et stockée dans une table ⇒ après "END", chaque élément de la table est imprimé ("%s " ajoute un espace entre les éléments, et "print" envoie finalement à la ligne).

# Chaque jour à midi (NB : on suppose qu'à cette heure votre ordinateur est systématiquement déjà allumé et connecté), enregistrer (dans un fichier que nous appellerons dataTable) le nombre de fois que les chaînes de caractères "climat", "épidémi" et "ukrain" sont mentionnées dans la page d'accueil du journal Le Monde :

# 1. enregistrement : écrire le code suivant dans le fichier script (que nous appellerons getData) :
#!/bin/bash
wget -O $HOME/lemonde.html https://lemonde.fr;
(
  echo -n $(date '+%d-%m-%g')\;
  echo -n $(grep -o -i "climat" $HOME/lemonde.html | wc -l)\;
  echo -n $(grep -o -i "épidémi" $HOME/lemonde.html | wc -l)\;
  echo $(grep -o -i "ukrain" $HOME/lemonde.html | wc -l)
) >> $HOME/dataTable

# NB : la commande wget ci-dessus ne fonctionne pas sur certains sites.
# trouvez la signification de l'option -i de la commande grep.

# 2. retour dans le terminal, pour programmer la planification :
crontab -e
    # ⇒ ajouter la ligne :
    0 12 * * * $HOME/getData
    # NB : il faut quitter crontab pour que la planification soit enregistrée par le SE.
    # Adaptez la ligne supra pour tester immédiatement le bon fonctionnement de votre script getData.

# Vérification du résultat (faite le 29-08-22 après-midi) :
cat dataTable
DATE;CLIMAT;ÉPIDÉM;UKRAIN
27-08-22;6;0;14
28-08-22;6;0;14
29-08-22;10;0;18
# : j'ai ajouté la première ligne (titres) manuellement.
# Alternative plus lisible :
column --separator ";" --table < dataTable
DATE      CLIMAT  ÉPIDÉM  UKRAIN
27-08-22  6       0       14
28-08-22  6       0       14
29-08-22  10      0       18

Programmation : Python et Bash

https://linux-debian.net/utiliser#programmation

Nous allons introduire ici le plus populaire des langages de programmation, en l'occurrence Python [source], qui est apprécié notamment pour sa simplicité ... et sa licence libre.

Manuels :

Exercice : Nous allons compléter, par du code Python, le dernier script bash que nous avions étudié dans la section précédente (#bash-exercices).

Rappel : notre script bash, qui est lancé automatiquement chaque jour à midi, enregistre dans un fichier le nombre de fois que les chaînes de caractères "climat", "épidémi" et "ukrain" sont mentionnées dans la page d'accueil du journal Le Monde. Voici le résultat au 29-08-22 après-midi :

column --separator ";" --table < dataTable
DATE      CLIMAT  ÉPIDÉM  UKRAIN
27-08-22  6       0       14
28-08-22  6       0       14
29-08-22  10      0       18

Dans notre crontab (cf. section précédente), nous allons ajouter un script écrit en Python, qui va construire le graphique du tableau ci-dessus.

# Contenu de ce fichier (que nous appellerons makeGraph) :
#!/bin/python3
# Lire les données du tableau :
import pandas as pd
df = pd.read_csv('dataTable', sep='\;+', parse_dates=['DATE'], dayfirst=True)
# Calculer la moyenne mobile de 30 jours :
df = df.set_index('DATE').rolling('30D').mean().reset_index()
# Créer un graphe avec DATE en abscisse et les colonnes en ordonnée :
ax = df.plot(x='DATE', y='CLIMAT', color='r', linestyle='dotted')
df.plot(x='DATE', y='ÉPIDÉM', color='g', ax=ax)
df.plot(x='DATE', y='UKRAIN', color='b', ax=ax, linestyle='dashed')
# Afficher le graphe :
ax.legend(['CLIMAT', 'ÉPIDÉM', 'UKRAIN'])
ax.set_ylabel('# mentions')
# Forcer l'affichage de nombres entiers sur l'axe Y du graphique :
from matplotlib.ticker import MaxNLocator
ax2.yaxis.set_major_locator(MaxNLocator(integer=True))
# Affichage des mois en français :
import locale
locale.setlocale(locale.LC_ALL,'fr_FR.utf8')
# : vérifier la locale dans le terminal : locale -a
import matplotlib.pyplot as plt
# Afficher les grilles :
plt.grid(True)
plt.grid(which='minor', linestyle=':', linewidth='0.5', color='black')
# Enregistrer le graphique :
plt.savefig('dataGraph.png')

# : essayez de comprendre intuitivement la signification de chaque chaîne de caractère de chaque ligne du code ci-dessus (et si nécessaire, vérifiez et approfondissez à l'aide des manuels).

# Dans le terminal, compléter la planification, en ajoutant le lien vers le script makeGraph :
crontab -e
    # ⇒ ajouter la ligne :
    0 12 * * * $HOME/getData && /usr/bin/python3 $HOME/makeGraph
    # NB : crontab a besoin qu'on lui indique où se trouve le paquet python3 ...

Voici le graphique dataGraph.png (auquel j'ai ajouté une variable depuis la publication ci-dessus du code) :

dataGraph.png

Retour à bash, cette fois pour télécharger quotidiennement sur le présent site web la version mise à jour du graphique ci-dessus !

# Contenu de ce script, que nous appellerons uploadGraph :
#!/bin/bash
# pw='MotDePasse'
# SSHPASS=$pw sshpass -ev sftp -oBatchMode=no -b - monId@monServeurFtp:monRepertoire << !
#  cd ./monDossierImages
#  put '$HOME/dataGraph.png'
#  bye
# !

# NB : sshpass n'est pas installé par défaut.
# Mais laisser un mot de passe en clair dans un fichier ce n'est pas recommandé --> deux solutions :
# (a) : à la place d'un mot de passe, utiliser une double clé publique/privée (NB : il faut un access ssh au serveur);
# (b) : en l'absence d'accès ssh au serveur, renoncer au 100% automatique : la commande suivante affiche un popup demandant d'introduire le mot de passe (NB : cette fenêtre apparaîtra donc sur l'écran chaque jour à l'heure précisée dans le crontab) :
#!/bin/bash
pw=$(zenity --password --title="Mise à jour dataGraph.png")
SSHPASS=$pw sshpass -ev sftp -oBatchMode=no -b - monId@monServeurFtp:monRepertoire << !
  cd ./monDossierImages
  put '$HOME/dataGraph.png'
  bye
!


# Compléter la planification :
crontab -e
# Il faut ajouter les quatre lignes suivantes pour que crontab puisse gérer zenity (source : unix.stackexchange.com/.../do-zenity-system-tray-notifications-not-work-with-cron ... que j'ai trouvée en tapant debian zenity crontab site:stackexchange.com dans un moteur de recherche) :
DISPLAY=":0.0"
XAUTHORITY="$HOME/.Xauthority"
XDG_RUNTIME_DIR="/run/user/1000"
DBUS_SESSION_BUS_ADDRESS=unix​:path=/run/user/1000/bus

# et ajouter le lien vers maj :
0 12 * * * $HOME/getData && /usr/bin/python3 $HOME/makeGraph && $HOME/uploadGraph
# : si vous placez les trois scripts (getData, makeGraph, uploadGraph) ailleurs que dans votre racine $HOME, la ligne ci-dessus deviendra difficilement lisible dans crontab car celui-ci ne permet pas de la briser en allant à la ligne -> une solution est de placer la ligne "$HOME/getData && /usr/bin/python3 $HOME/makeGraph && $HOME/uploadGraph" dans un script bash.

Bilan. La collecte des données sur lemonde.fr (getData), puis la fabrication du graphique (makeGraph), et enfin la mise à jour du graphique sur cette page (uploadGraph), tout se fait ainsi automatiquement !

Tout problème qui survient est une opportunité d'apprentissage

Par exemple, vous constaterez qu'après une réinstallation du système d'exploitation (qui supprime toutes les variables d'environnement enregistrées par le SE), le fichier uploadGraph ne fonctionne plus. Si vous observez son déroulement dans le terminal, il se peut pourtant que rien d'anormal n'apparaisse. C'est pourquoi il est utile d'ajouter l'option "verbose" (v) à la commande sshpass, qui explique la cause du problème : la clé d'identification du serveur ftp n'est pas connue du SE. Une solution consiste alors à lancer dans le terminal la ligne :

$ sftp -oBatchMode=no -b - monId@monServeurFtp:monRepertoire
$ The authenticity of host 'monServeurFtp' can't be established.
$ * key fingerprint is *.
$ This key is not known by any other names.
$ Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
$ Warning: Permanently added 'monServeurFtp' to the list of known hosts.
à la ligne :
$ monId@monServeurFtp's password:
... faire juste Enter pour fermer la connection.

Paquets : (dés)installation et infos

https://linux-debian.net/utiliser#gestion-paquets
Vocabulaire

Les termes "paquet", "application", "logiciel" ou encore "programme" sont synonymes. Le choix varie selon le contexte : "application" pour l'utilisateur lambda, "paquet" pour le développeur Debian, ...

(Dés)installation

L'installation (NB : toujours en étant connecté) et la désinstallation d'un paquet sont réalisables soit via une interface graphique, soit en ligne de commande :

  • En interface graphique (Système > Administration > Synaptic) :

    1. sélectionner les ou les programmes à (dés)installer ;
    2. si désinstallation, choisir entre "avec" ou "sans" fichiers de configuration ;
    3. cliquer sur "Appliquer".
  • En ligne de commandes [source] :

    • installer : # apt install nomPaquet
    • supprimer (en conservant la configuration) : # apt remove nomPaquet
    • supprimer (en supprimant la configuration) : # apt purge nomPaquet

Exercice : identifiez à quelle commande correspond chaque étape de la procédure graphique.

Si vous privilégiez la sécurité du système sur la facilité de configuration d'une application, préférez la suppression complète.

Conseils pour ne pas endommager votre système par des installations ou désinstallations inconsidérées : wiki.debian.org/DontBreakDebian

Infos

Tel paquet est-il déjà installé ? Tel paquet est-il installé par défaut ? Comment trouver un paquet sans en connaître le nom exact ? ... :

  • infos sur un paquet installé : $ dpkg -s nomPaquet
    • priorité : required, important, standard, optional, extra (signification) ;
    • dépendances,...
  • chercher un paquet (installé ou pas) par type d'application : packages.debian.org/stable ;
  • manuel d'un paquet (installé ou pas) dont on connaît le nom : manpages.debian.org ;

    Il existe également des pages de manuel pour les fichiers de configuration ! Exemple : /etc/hosts. Lecture vivement recommandée ...

  • liste de paquets (installés ou pas) dont le nom contient motClé : $ dlocate motClé (NB : dlocate n'est pas installé par défaut) ;
  • liste des fichiers installés par nomPaquet : $ dpkg -L nomPaquet (aussi via Synaptic) ;
  • liste des paquets dont nomPaquet dépend : $ apt-cache depends nomPaquet (aussi via Synaptic) ;
  • liste des paquets dépendant de nomPaquet : $ apt-cache rdepends nomPaquet (aussi via Synaptic) ;

Sécurisation

https://linux-debian.net/utiliser#securisation

La présente section concerne tous les types de système d'exploitation (Linux, MS Windows, MacOS, ...).

Principes de sécurisation informatique :

  • Les failles de sécurité peuvent se trouver dans chaque application d'une machine, dans la machine qui les contient, dans le réseau qui relie les machines.

  • Il n'existe pas de système sécurisé à 100% : on ne peut faire qu'abaisser le risque d'erreurs de manipulation ou d'attaques à un niveau "acceptable", relativement au business modèle dans lequel opère le système considéré.

  • Plus on augmente le nombre de fonctions serveurs sur un ordinateur, plus on accroît le risque d'erreurs de manipulation ou d'attaques. C'est comme une maison : plus elle comprend de fenêtres et de portes externes, plus il est coûteux de la protéger des cambrioleurs.

Politique de sécurisation (informatique domestique) :

  1. Faites, à une fréquence au moins mensuelle, une double copie de vos données sur des supports externes (tels que clés USB) : une clé que vous videz avant de la remplir, l'autre sans la vider préalablement (de sorte que, contrairement à la première, elle contiendra une copie des fichiers que vous avez volontairement effacés de votre ordinateur.

  2. Évitez de vous connectez à Internet via une borne wifi publique, ne le faites que si vous avez un service VPN payant.

  3. Ne connectez jamais votre ordinateur à un appareil (dont clé USB) appartenant à une autre personne.

  4. N'ouvrez pas des documents d'origine douteuse, et sinon, ne le faites qu'après les avoir scannés (par exemple au moyen de clamscan) ... et après avoir mis à jour la base de données du logiciel de scannage.

  5. Abonnez-vous à l'infolettre debian-security-announce, et mettez à jour votre système d'exploitation (cf. infra la section #mise-a-jour-niveau) – de préférence à chaque annonce – afin de minimiser le nombre des failles identifiées.

  6. N'installez que des programmes inclus dans votre distribution Linux-Debian, et le moins possible de programmes (car tout programme informatique est une source potentielle de failles).

  7. Utilisez des mots de passe différents pour chaque application, et de longueur suffisante ⇒ pour ce faire, utilisez un gestionnaire de mots de passe (par exemple KeePassXC). Et pour son mot de passe, déterminez une phrase absurde d'au moins vingt caractères.

  8. Préférez toujours un fournisseur d'accès Internet (FAI) qui garantit une adresse IP dynamique, c-à-d une adresse IP qui change à chaque fois que vous vous reconnectez à Internet (en l'occurrence il est recommandé de fermer sa connexion tous les soirs) (cf. /adresse-IP-dynamique).

  9. Avant de vous engagez dans une transaction commerciale ou bancaire en ligne, vérifiez que l'adresse du site web est exactement celle du site de l'entreprise dont vous avez préalablement vérifié la crédibilité.

  10. Ayez conscience que l'e-mail permet assez facilement d'usurper l'identité d'une personne : voir ./citoyennete-numerique#usurpation-email.

  11. Ne cliquez pas sur des liens d'e-mails douteux.
  12. N'obtempérez à aucune injonction vous priant de communiquer des données confidentielles par e-mail ou par téléphone (il s'agit certainement d'une fraude).

  13. N'utilisez jamais votre ordinateur professionnel pour des usages privés, ni votre ordinateur personnel pour des usages professionnels : utilisez deux ordinateurs.

  14. Sortez de l'analphabétisme numérique, par exemple en suivant nos formations.

N.B. Ces principes concernent l'informatique domestique. Pour ce qui concerne le réseau d'une organisation, c'est évidemment plus complexe. Voir ce Guide d'hygiène informatique, qui s'adresse aux « entités publiques ou privées dotées d’une direction des systèmes d’information (DSI) ou de professionnels dont la mission est de veiller à leur sécurité ».

Mises à jour/niveau

https://linux-debian.net/utiliser#mise-a-jour-niveau
 8.1. Principes
 8.2. Mises à jour
 8.3. Mises à niveau

Principes

https://linux-debian.net/utiliser#majn-principes
Pourquoi

Il est très important de mettre à jour le système chaque semaine, afin :

  • de minimiser les risques de sécurité (correction des failles identifiées) ;
  • supprimer les bugs ;
  • obtenir les mises à jour des paquets installés (nouvelles fonctionnalités).
sources.list

Le fichier qui permet de gérer les mises à jours est /etc/apt/sources.list :

  • contenu par défaut (défini par vous lors de l'installation assistée de Linux-Debian) ;
  • contenu actuel : $ cat /etc/apt/sources.list
Types

On distingue en fait :

  • mises à jour :
    • mises à jour de sécurité ;

      En moyenne, environ une fois par semaine. La façon la plus rationnelle de procéder est de s'abonner à lists.debian.org/debian-security-announce, et de procéder à la mise à jour à chaque réception d'une annonce.

    • mises à niveau intermédiaires :
      • voir la version intermédiaire actuelle (une nouvelle est proposée environ tous les deux mois);
      • voir la version intermédiaire de votre système : $ cat /etc/debian_version;
      • NB : /etc/apt/sources.list doit contenir la ligne deb http://deb.debian.org/debian bullseye-updates main
    • audit de la base de donnée des paquets : # dpkg -C : permet notamment d'identifier d'éventuels paquets étrangers à Debian, que vous auriez installés (et que l'on retrouve généralement dans /opt/ et /usr/local).
  • mises à niveau :

N.B. Pour ne pas être perturbés dans la lecture des paragraphes suivants, il faut juste comprendre ceci : qu'il s'agisse d'une mise à jour ("update" en anglais) ou d'une mise à niveau ("upgrade" en anglais), Linux Debian utilise dans les deux cas des options de la commande apt, appelées ... "update" et "upgrade".

Mises à jour

https://linux-debian.net/utiliser#maj-procedure
  • Soit via l'interface graphique Synaptic [wiki.debian.org/fr/Synaptic] :
    1. cliquer sur le bouton "Recharger"  ;
    2. cliquer sur "Tout mettre à niveau" (+ confirmation), puis sur "Appliquer" (+ confirmation) .
  • Soit en lignes de commande :
    1. # apt update : télécharge la liste des paquets qu'il faut mettre à jour (= bouton "Recharger" dans Synaptic) ;
    2. # apt upgrade : réalise la mise à jour de Linux Debian (= boutons "Tout mettre à niveau" et "Appliquer" dans Synaptic).

Mises à niveau

https://linux-debian.net/utiliser#man-procedure

Sources :
wiki.debian.org/fr/DebianUpgrade ;
debian.org/releases/stable/?/release-notes/ch-upgrading.fr

  1. Sauvegardez vos données sur un support externe (par exemple une clé USB) afin de pouvoir réinstaller le système si un incident se produisait durant la mise à niveau :
    • vos fichiers personnels ;
    • liste des paquets que vous avez installés : dpkg --get-selections > packages.dpkg
  2. Faire une mise à jour
  3. Remplacer l'ancien nom de code la version stable (oldstable) par le nouveau (stable) :
    • soit en lignes de commande :
      sed -i 's/nomOldstable/nomStable/g' /etc/apt/sources.list
      ou éditer le fichier :
      # apt edit-sources
    • soit via l'interface graphique :
      "Synaptic" > "Configuration" > "Dépôts" ;
  4. # apt clean (nettoyage de la liste)
  5. # apt update
  6. # apt full-upgrade
  7. # apt autoremove (nettoyage des paquets)
  8. shutdown -r now (redémarre le système).

La mise à niveau telle que ci-dessus est dite "par dessus". Une alternative est de procéder à une nouvelle installation (c-à-d réinstallation du SE, avec la nouvelle version "Stable") : on parle alors de "mise à niveau par écrasement" du système installé, (c-à-d comme lors de la libération de la machine). Chacune a ses avantages et inconvénients :

  • mise à niveau "par écrasement" :
    • avantage : meilleure solution du point de vue de la sécurité (nettoyage intégral) ;
    • inconvénient : il faut réinstaller les fichiers personnels, et refaire tout ou partie des opérations qui avait été nécessaires pour obtenir un système répondant à l'ensemble de vos besoins personnels (notamment, des variables d'environnement pourraient devoir être redéfinies, comme illustré supra dans l'encadré en fin de section#programmation) ...

    Obtenir le type de votre processeur (nécessaire pour installer la version stable adaptée) $ uname -r

  • mise à niveau "par dessus" :
    • avantage : pas besoin de réinstaller les fichiers personnels, ni de refaire tout ou partie des opérations qui avait été nécessaires pour obtenir un système répondant à l'ensemble de vos besoins personnels ;
    • inconvénient : le système peut conserver des modifications ou ajouts non souhaitables (suite à l'action de l'utilisateur ou d'un hackeur).

Conclusion (mise à niveau) : comme dans les deux cas il faut de toute façon sauvegarder les fichiers personnels (obligatoire si mise à niveau "par écrasement", vivement conseillé si "par dessus"), je recommande la mise à niveau "par écrasement", dans la mesure où la réinstallation des fichiers personnels est assez rapide (et pour autant que l'inconvénient supposé soit réel...).

Dépannage

https://linux-debian.net/utiliser#depannage
Analyse

Quand une application (frontend ou backend) ne fonctionne pas, on en trouvera généralement la cause dans son journal ("log file" en anglais). Exemple d'utilisation de la commande journalctl :

  • consulter le journal des deux dernières minutes du service NetworkManager : # journalctl -u NetworkManager --since "- 2 min"

    Pour obtenir la liste des services actifs : $ systemctl list-units --type=service

  • consulter le contenu du journal global (c-à-d de systemd) depuis le démarrage de la machine, et contenant le mot "mail" : # journalctl -b | grep mail
Commande
inactive

Une commande qui "ne fonctionne pas" ? Avant de laisser tomber les bras, vérifiez ces trois causes possibles ... et très fréquentes :

  • peut-être le paquet gérant la commande n'a-t-il pas été installé ⇒ découvrir le nom du paquet Debian contenant la commande en question (NB : ce n'est pas toujours le nom de la commande) ⇒ installer le paquet ;
  • par exemple $ ifconfig ne fonctionne pas ("commande introuvable"), mais bien # ifconfig ou $ /sbin/ifconfig ;
  • en outre, certaines commandes (par exemple ifconfig) requièrent que les variables d'environnement soient supprimées, ce qui se fait soit en se connectant en root par su - au lieu de su [source].

    Une autre possibilité est sudo plutôt que su - (N.B. sudo n'est pas installé par défaut dans Linux Debian. Une fois installé il faut en outre s'ajouter en tant qu'utilisateur de sudo [source] ).

Blocage

Linux Debian est un SE qui est moins souvent sujet aux blocages que MS Windows ou macOS. Quand il s'agit d'une seule application, il n'est pas nécessaire de redémarrer la machine : Application > Outil système > Moniteur système (à installer) > Processus > Cliquer droit sur l'application bloquée > Terminer voire Tuer.

Quand le blocage est total, on peut accéder à un terminal sans GUI en faisant CTRL+ALT+F1 (CTRL+ALT+F7 pour revenir au GUI) ⇒

  • sudo service lightdm restart pour redémarrer le GUI ;
  • CTRL+ALT+DEL ou $ reboot pour redémarrer l'ordinateur.
Bug
reporting
  1. vérifier que le bug n'a pas déjà été identifié : debian.org/Bugs/#pkgreport
  2. dans la négative, envoyer un mail décrivant le bug, en respectant le format recommandé : debian.org/Bugs/Reporting

Réseau

https://linux-debian.net/utiliser#reseau

Pour compléter votre auto-formation aux technologies libres du web, il est vivement recommandé de suivre notre programme de formation par expérimentation, d'un réseau wifi décentralisé : /reseau-wifi-decentralise.

linux-debian.net
menu.jpg

Auteur : F. Jortay   |   Contact :   |   Suivre : infolettre

top-of-page.png