Linux
Shell
- Shell : Un shell est un programme qui fournit une interface en ligne de commande (CLI) pour interagir avec le système d'exploitation en saisissant des commandes textuelles sensibles à la case.
- Bash : Un shell, un interpréteur de commandes.
- Ksh : Un autre shell (Korn).
Script shell
Tous les scripts shell doivent commencer par #!/bin/bash
ou n'importe quel autre shell que vous préférez. Cette ligne est appelée shebang, et même si elle ressemble à un commentaire, elle n'en est pas un. Elle indique au shell de l'interpréteur que le fichier est un script. Le chemin fourni doit être absolu (on ne peut pas utiliser "bash" par exemple). Le shebang doit être en première ligne du script, sans espace qui le précède.
Les commentaires dans le shell
Dans les scripts shell, toutes les lignes commençant par #
sont des commentaires.
Il peut aussi y avoir des commentaires sur plusieurs lignes, pour cela il suffit d'utiliser :
suivi d'une apostrophe :
Remarque : Cette méthode ne fonctionnera pas s'il y a une apostrophe dans les lignes de commentaires.
Le prompt ! Où suis-je ?
Le prompt est une ligne de texte qui apparaît dans le terminal et qui vous indique où vous êtes dans le système de fichiers. Voici un exemple de prompt :
nom_utilisateur
: C'est le nom de l'utilisateur actuellement connecté.
@
: C'est un séparateur qui indique que ce qui suit est le nom de la machine (comme dans une adresse email).
nom_machine
: C'est le nom de la machine (ou de l'ordinateur) sur laquelle vous êtes connecté.
:
: C'est un autre séparateur qui indique que ce qui suit est le répertoire dans lequel vous vous trouvez.
~
: C'est un symbole qui représente le répertoire personnel de l'utilisateur, également connu sous le nom de répertoire "home". Par exemple, si votre nom d'utilisateur est alice, ~ représente /home/alice.
$
: C'est un symbole qui indique que vous êtes connecté en tant qu'utilisateur standard (et non en tant que superutilisateur ou root). Si vous étiez connecté en tant que superutilisateur, ce symbole serait généralement #
.
Auto-complétion
Le shell est votre ami, il faut l’aimer aussi. Lorsqu’il n’y a aucune ambiguïté, la touche tabulation (tab) permet de compléter la saisie d'un chemin du système de fichiers automatiquement. Si la première partie est commune, appuyer sur tab permet de compléter une saisie selon ce que vous avez déjà tapé. Si cela ne fonctionne pas, c’est soit que la commande de début de ligne ne permet pas l’auto-complétion ou bien que la saisie est ambiguë.
En cas d’ambiguïté, une double pression (une pinte quoi) sur tab affichera les possibilités, ou s’il y en a trop nous demandera confirmation.
Lorsque vous savez que ça existe, l’auto-complétion est un outil qui permet de substantiels gains de temps.
Disques
/dev/sda
correspond au premier disque détecté.
/dev/sdb
correspond au deuxième disque.
Linux ne nomme pas les partitions à la suite. Il va réserver les chiffres de 1 à 4 pour les partitions principales (principale et étendue). Quel que soit le nombre de partitions principales, s’il y a une partition étendue alors les partitions logiques commenceront quoi qu’il arrive à 5.
/dev/sdb
deuxième disque entier
/dev/sdb1
première partition principale
/dev/sdb2
deuxième partition principale
/dev/sdb3
partition étendue
/dev/sdb5
première partition logique
/dev/sdb6
deuxième partition logique
L’arborescence (FHS)
/
C'est la racine unique. I ln'y a pas de C:\
ou D:\
comme sur Windows. Tous les disques et volumes sont à la racine, ils sont alors montés dans des répertoires.
- Chemin relatif : chemin depuis là où on se trouve.
- Chemin absolu : chemin complet
..
Répertoire parent
.
Répertoire courant
/home/user
Répertoire de l'utilisateur dont le login est user.
/root
Répertoire personnel de l'utilisateur root.
/media
Points de montages des médias amovibles (clé USB, CD-rom…).
/mnt
Points de montage temporaires de volumes disques.
/bin
Commandes systèmes disponibles aux utilisateurs standards. Peut être un lien de /usr/bin.
/usr/bin
Commandes systèmes disponibles aux utilisateurs standards.
/usr/local/bin
Commandes systèmes disponibles aux utilisateurs standards
/sbin
Commandes d'administration du super-utilisateur root. Peut être un lien de /usr/sbin.
/usr/sbin
Commandes d'administration du super-utilisateur root.
/usr/local/sbin
Commandes d'administration du super-utilisateur root.
/opt
Répertoires pour les applications tierces (compilation manuelle de logiciels).
/boot
Fichiers nécessaires au démarrage du système.
/dev
Liaisons des périphériques (disques, claviers, écrans…).
/etc
Contient les fichiers de paramètres du système.
/var
Données de tailles variables (sites web, bases de données, journaux…).
/var/log
Dossiers contenant les fichiers de journalisation du système.
/lib
Contient les librairies principales utiles aux exécutables dans /bin
et /sbin
.
/tmp
Fichiers temporaires.
/proc
Répertoire virtuel contenant les fichiers de paramètres du noyau (matériels...).
/sys
Répertoire virtuel contenant les informations des périphériques, pilotes…
Le dossier personnel est représenté sous Linux par un tilde ~
. C’est généralement le dossier par défaut lorsque vous ouvrez un shell.
Les permissions
Lister les permissions d’un fichier ou d’un répertoire
Comprendre les permissions d’un fichier ou d’un répertoire
Interpretation avec ls -l
-rw-rw-r-- 1 user_demo groupe_demo 0 mai 5 10:30 fichier_exemple
drwxrwxr-x 2 user_demo groupe_demo 4096 juin 6 14:20 repertoire_exemple
- 3ème colonne : "user_demo" est le propriétaire pour lequel des permission sont définies.
- 4ème colonne : "groupe_demo" est le groupe pour lequel des permission sont définies.
owner et group
L'utilisateur propriétaire "owner" a des droits spécifiques sur le fichier. Le groupe propriétaire "group" est un groupe d'utilisateurs qui partagent certains droits sur le fichier.
- Le premier caractère représente le type de fichier, voici les principaux :
File "-"
Directory "d"
Symslink "l"
Charactere device "c"
Socker "s"
- Puis les 9 derniers caractères par bloc de 3 représentent les permissions pour owner / group / other (le propriétaire, le groupe et les autres) :
"r" : read
"w" : write
"x" : executable
notation en octal (commande stat
):
"4" = read (r)
"2" = write (w)
"1" = executable (x)
exemple : 765 ( rwx rw- r-x )
Changer le propriétaire et le groupe d’un fichier ou d’un répertoire
chown
: C'est la commande utilisée pour changer le propriétaire et/ou le groupe d'un fichier ou d'un répertoire.
nom_utilisateur
: C'est le nom de l'utilisateur qui deviendra le nouveau propriétaire du fichier ou du répertoire.
nom_groupe
: C'est le nom du groupe qui deviendra le nouveau groupe pour lequel des permissions sont définies sur le fichier ou le répertoire.
/data/commun
: C'est le fichier ou le répertoire dont on veut changer le propriétaire et le groupe.
En résumé, cette commande change le propriétaire et le groupe du répertoire /data/commun
pour les remplacer par utilisateur et groupe.
-R
: Appliquer la commande de manière récursive à tous les fichiers et sous-répertoires.
Modifier les permissions d’un répertoire en notation symbolique
chmod
: C'est la commande utilisée pour changer les permissions d'un fichier ou d'un répertoire.
u+w
: Donne le droit d'écriture (Write) à l'utilisateur propriétaire (User).
g+w
: Donne le droit d'écriture (Write) au groupe (Group).
o‐rx
: Retire le droit de lecture (Read) et d'exécution (eXecute) aux autres utilisateurs (Others).
/data/commun
: C'est le répertoire dont on veut modifier les permissions.
En résumé, cette commande permet à l'utilisateur propriétaire et au groupe d'écrire dans le répertoire, mais empêche les autres utilisateurs de lire ou d'exécuter quoi que ce soit dans ce répertoire.
Modifier les permissions d’un répertoire en notation octale
770
: C'est une notation octale qui représente les permissions. Chaque chiffre représente une combinaison de permissions pour l'utilisateur propriétaire, le groupe et les autres utilisateurs. Le premier chiffre 7 : Donne tous les droits (lecture, écriture, exécution) à l'utilisateur propriétaire. Le second chiffre 7 : Donne tous les droits (lecture, écriture, exécution) au groupe. Le troisième chiffre 0 ne donne aucun droit aux autres utilisateurs.
-R
: Appliquer la commande de manière récursive à tous les fichiers et sous-répertoires.
En résumé, cette commande donne tous les droits (lecture, écriture, exécution) à l'utilisateur propriétaire et au groupe, mais ne donne aucun droit aux autres utilisateurs.
Utilisateurs et groupes
Créer un utilisateur
-u
UID : Définir l'UID (User ID) de l'utilisateur.
-G
groupes : Ajouter l'utilisateur à des groupes secondaires.
-s /bin/shell
: Définir le shell de l'utilisateur.
-m
: Créer le répertoire personnel de l'utilisateur.
-d /chemin
: Définir le répertoire personnel de l'utilisateur.
-c "commentaire"
: Ajouter un commentaire (par exemple, le nom complet de l'utilisateur).
Modifier un utilisateur
-u
UID : Changer l'UID de l'utilisateur.
-G
groupes : Remplacer les groupes secondaires de l'utilisateur.
-aG
groupes : Ajouter des groupes secondaires à l'utilisateur.
-s /bin/shell
: Changer le shell de l'utilisateur.
-d /chemin
: Changer le répertoire personnel de l'utilisateur.
-L
: Verrouiller le compte de l'utilisateur.
-U
: Déverrouiller le compte de l'utilisateur.
Supprimer un utilisateur
-r
: Supprimer également le répertoire personnel de l'utilisateur.
Changer le mot de passe d'un utilisateur
Afficher les informations sur un utilisateur
Créer un groupe
-g GID
: Définir le GID (Group ID) du groupe.
Modifier un groupe
-n
nouveau_nom : Changer le nom du groupe.
-g GID
: Changer le GID du groupe.
Supprimer un groupe
Ajouter un utilisateur à un groupe
Retirer un utilisateur d'un groupe
Afficher les groupes d'un utilisateur
Les Fichiers
ls
Liste les fichiers dans le répertoire actuel :
Liste les fichiers avec des détails (propriétaire, permissions, etc.) :
Liste tous les fichiers, y compris les fichiers cachés :
Liste les fichiers avec des tailles lisibles par l'homme :
Vérifier les permissions et la taille lisible par l'homme d'un répertoire spécifique sans lister son contenu.
pwd
Affiche le chemin du répertoire de travail actuel :
rm
Supprime un fichier :
Supprime un répertoire et son contenu de manière récursive :
Supprime un fichier ou un répertoire avec une confirmation interactive :
mv
Déplace un fichier :
Déplace et renomme un fichier :
Renomme un fichier :
Déplace un répertoire et son contenu :
find
Recherche des fichiers ou des répertoires en fonction de critères spécifiques.
Recherche un fichier par son nom dans le répertoire actuel et ses sous-répertoires :
Recherche tous les fichiers de type "fichier" dans le répertoire actuel et ses sous-répertoires :
Recherche tous les répertoires dans le répertoire actuel et ses sous-répertoires :
Recherche tous les fichiers modifiés dans les 7 derniers jours :
cat
La commande cat est utilisée pour afficher le contenu d'un ou plusieurs fichiers. Elle est principalement utilisée pour afficher le contenu complet d'un fichier à la console.
Affiche le contenu du fichier.txt :
Affiche le contenu de plusieurs fichiers :
Combinaison de plusieurs fichiers et affichage du résultat :
mkdir && touch
Utilisez la commande mkdir pour créer un nouveau répertoire. Par exemple, pour créer un répertoire appelé "nouveau_dossier", vous pouvez faire :
Utilisez la commande touch pour créer un fichier vide. Par exemple, pour créer un fichier appelé "nouveau_fichier.txt", vous pouvez faire :
Si vous souhaitez créer un répertoire et un fichier en une seule commande, vous pouvez utiliser la commande mkdir avec l'option -p pour créer le répertoire parent si nécessaire, et touch pour créer le fichier. Par exemple :
Info
L'opérateur && en shell est utilisé pour exécuter une commande seulement si la commande précédente s'est terminée avec succès (c'est-à-dire avec un code de retour de 0). Cela permet d'enchaîner plusieurs commandes !.***
cp
Copier un fichier :
Cela copie le fichier "fichier_source.txt" dans le répertoire de destination spécifié. Si vous voulez lui donner un autre nom lors de la copie, vous pouvez le faire ainsi :
Pour copier un répertoire et son contenu, vous pouvez utiliser l'option -r (pour récursif) de la commande cp :
Vous pouvez copier plusieurs fichiers vers un répertoire en spécifiant les noms des fichiers source et le répertoire de destination :
Si vous souhaitez voir les fichiers et répertoires copiés au fur et à mesure, vous pouvez utiliser l'option -v pour une sortie verbeuse (verbose) :
scp (ssh)
Copier un fichier local vers un serveur distant :
scp -P <port ssh personnalisé si pas 22> <fichier à envoyer> <utilisateur>@<hôte distant>:<dossier cible>
scp backup.zip user@192.168.130.134:/home/user/
Copier un dossier local et son contenu vers un serveur distant :
Copier un dossier distant vers l'hôte local :
Copier un fichier distant vers l'hôte local :
Copier plusieurs fichiers distants vers l'hôte local. Si vos fichiers ne sont pas tous dans le même dossier source, précisez les chemins absolus de chaque fichier :
wget
Pour télécharger un fichier depuis une URL :
Édition de fichiers avec Nano et Vim
Nano
Nano est un éditeur de texte simple et convivial, idéal pour les utilisateurs débutants. Il est souvent utilisé pour des modifications rapides et simples de fichiers.
Ouvrir un fichier :
Commandes :
-
Ctrl + O
: Enregistrer le fichier (puis appuyez sur Entrée pour confirmer). -
Ctrl + X
: Quitter Nano (vous serez invité à enregistrer les modifications si nécessaire). -
Ctrl + _
: Annuler la dernière action. -
Ctrl + K
: Couper la ligne sélectionné. -
Ctrl + U
: Coller la ligne coupée. -
Ctrl + W
: Rechercher du texte dans le fichier. -
Ctrl + _
: Aller à une ligne spécifique (vous serez invité à entrer le numéro de la ligne). -
Ctrl + G
: Afficher l'aide de Nano.
Vim
Vim est un éditeur de texte puissant et flexible, souvent utilisé par les utilisateurs avancés. Il offre de nombreuses fonctionnalités pour l'édition de texte, mais peut être complexe pour les débutants. Commandes indispensables pour Vim. Vim fonctionne principalement dans trois modes :
-
Mode normal : Le mode par défaut pour naviguer et effectuer des commandes.
-
Mode insertion : Le mode pour insérer du texte.
-
Mode commande : Le mode pour exécuter des commandes.
Exemples d'utilisation
Ouvrir un fichier :
Entrer en mode insertion et ajouter du texte :
-
Appuyez sur
i
pour entrer en mode insertion. -
Tapez votre texte.
-
Appuyez sur
Esc
pour revenir en mode normal.
Enregistrer et quitter :
-
Appuyez sur
:
pour entrer en mode commande. -
Tapez
wq
et appuyez surEntrée
pour enregistrer et quitter Vim.
Annuler une action :
- Appuyez sur
u
en mode normal pour annuler la dernière action.
Rechercher du texte :
-
Appuyez sur
/
en mode normal pour entrer en mode de recherche. -
Tapez le texte à rechercher et appuyez sur
Entrée
. -
Utilisez
n
pour aller à l'occurrence suivante etN
pour aller à l'occurrence précédente.
(Debian/Ubuntu) Gestion des paquets et installation de logiciels APT.
Le fichier sources.list est un fichier de configuration utilisé par le gestionnaire de paquets APT (Advanced Package Tool) sur les systèmes basés sur Debian (comme Debian, Ubuntu, etc.). Ce fichier contient les sources des dépôts de paquets à partir desquels APT peut télécharger et installer des logiciels.
Modifier le fichier sources.list
Pour modifier le fichier sources.list, vous pouvez utiliser un éditeur de texte comme nano :
Voici un exemple de contenu du fichier sources.list :
deb http://ftp.fr.debian.org/debian/ buster main
deb-src http://ftp.fr.debian.org/debian/ buster main
deb http://security.debian.org/debian-security buster/updates main
deb-src http://security.debian.org/debian-security buster/updates main
deb http://ftp.fr.debian.org/debian/ buster-updates main
deb-src http://ftp.fr.debian.org/debian buster-updates main
Explication des lignes du fichier sources.list
deb
: Indique une source de paquets binaires.
deb-src
: Indique une source de paquets source.
http://ftp.fr.debian.org/debian/
: URL du dépôt.
buster
: Nom de la distribution (par exemple, buster pour Debian 10).
main
: Composant du dépôt (par exemple, main pour les paquets officiels).
Mettre à jour, rechercher et installer un paquet
Mettre à jour la liste des paquets disponibles à partir des dépôts spécifiés dans sources.list :
Faire la mise à jour :
Pour rechercher un paquet dans les dépôts, utilisez la commande suivante :
Installer un paquet :
(Red Hat/CentOS) Gestion des paquets et installation de logiciels YUM.
Le gestionnaire de paquets utilisé sur les systèmes basés sur Red Hat (comme Red Hat Enterprise Linux, CentOS, etc.) est yum ou dnf.
Modifier les fichiers de dépôts
Pour modifier les fichiers de dépôts, vous pouvez utiliser un éditeur de texte comme nano :
Voici un exemple de contenu d'un fichier de dépôt :
[nom_du_depot]
name=Nom du dépôt
baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
enabled=1
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-7
Mettre à jour, rechercher et installer un paquet
Mettre à jour la liste des paquets disponibles à partir des dépôts spécifiés :
Faire la mise à jour :
Pour rechercher un paquet dans les dépôts, utilisez la commande suivante :
Installer un paquet :
(Fedora) Gestion des paquets et installation de logiciels DNF.
Le gestionnaire de paquets utilisé sur Fedora est dnf.
Modifier les fichiers de dépôts
Pour modifier les fichiers de dépôts, vous pouvez utiliser un éditeur de texte comme nano :
Voici un exemple de contenu d'un fichier de dépôt :
[nom_du_depot]
name=Nom du dépôt
baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
enabled=1
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-7
Mettre à jour, rechercher et installer un paquet
Mettre à jour la liste des paquets disponibles à partir des dépôts spécifiés :
Faire la mise à jour :
Pour rechercher un paquet dans les dépôts, utilisez la commande suivante :
Installer un paquet :
(Arch Linux) Gestion des paquets et installation de logiciels PACMAN.
Le gestionnaire de paquets utilisé sur Arch Linux est pacman.
Modifier les fichiers de dépôts
Pour modifier les fichiers de dépôts, vous pouvez utiliser un éditeur de texte comme nano :
Mettre à jour, rechercher et installer un paquet
Mettre à jour la liste des paquets disponibles à partir des dépôts spécifiés :
Pour rechercher un paquet dans les dépôts, utilisez la commande suivante :
Installer un paquet :
Réseau
Convention de nommage des interfaces réseau
Dans les systèmes Linux, les cartes réseau sont généralement nommées de manière systématique en fonction de leur type et de leur ordre de détection. Les conventions de nommage peuvent varier légèrement en fonction de la distribution Linux et de la version du noyau utilisé, mais voici les conventions les plus courantes :
- Conventions de nommage traditionnelles
Ethernet (câblé) :
eth0, eth1, eth2, etc. : Les interfaces Ethernet (cablées) sont souvent nommées eth0
, eth1
, eth2
, etc., en fonction de l'ordre dans lequel elles sont détectées par le système.
Wi-Fi (sans fil) :
wlan0, wlan1, etc. : Les interfaces Wi-Fi sont souvent nommées wlan0
, wlan1
, etc.
- Conventions de nommage modernes (Predictable Network Interface Names)
Avec la convention de nommage traditionnelle, le numéro des interface pouvait être amené à changer en cas de reboot ou d'jaour/changement de matériel, ce qui pouvait petre problématique. À partir de la version 197 du système de gestion des périphériques udev
(utilisé par systemd), une nouvelle convention de nommage a été introduite pour rendre les noms des interfaces réseau plus prévisibles et stables. Ces noms sont basés sur des informations matérielles et topologiques.
Ethernet (câblé) :
enpXsY : Où X
est le numéro de l'interface physique et Y
est le numéro de la sous-interface. Par exemple, enp0s3
pour une interface Ethernet sur le bus PCI.
ensX : Où X
est le numéro de l'interface physique. Par exemple, ens1
pour une interface Ethernet sur un bus non-PCI.
Wi-Fi (sans fil) :
wlpXsY : Où X
est le numéro de l'interface physique et Y
est le numéro de la sous-interface. Par exemple, wlp2s0
pour une interface Wi-Fi sur le bus PCI.
wlX : Où X
est le numéro de l'interface physique. Par exemple, wl0
pour une interface Wi-Fi sur un bus non-PCI.
La commande ip
Info
Les commandes traditionnelles ifconfig
, route
et arp
sont dépréciés.
La commande ip
est conseillée, elle permet de gérer aussi bien les adresses IP, que les routes ou la table ARP, de plus elle est universelle sur toutes les distributions Linux.
Afficher le détail des interfaces :
Afficher les adresses IP :
N'afficher que les adresses IP en Ipv4 :
N'afficher que les adresses IP en Ipv6 :
Afficher les adresses IP en filtrant sur une interface :
Activer (up) ou désactiver (down) l'interface enp0s3:
Assigner une adresse IP à l'interface enp0s3 :
Afficher les routes :
Ajouter une route :
Ajouter une route par défaut :
Supprimer une route
Afficher la table ARP :
La commande dig
La commande dig
est un outil de requête DNS qui peut être utilisé pour interroger les serveurs DNS et obtenir des informations détaillées sur les enregistrements DNS. Alternavie à nslooku
.
Installer dig
Voici trois exemples d'utilisation de la commande dig
, avec des explications sur les résultats obtenus, notamment pour les types de requêtes A, MX, et ANY.
1. Requête par défaut (type A) : dig google.fr
Résultat et explications :
- Requête envoyée au serveur DNS par défaut :
En haut de la réponse, vous verrez une ligne indiquant quel serveur DNS a été utilisé. Par exemple :
Ici, 192.168.1.1
est le serveur DNS utilisé.
- Section "ANSWER" :
Cette section contient les enregistrements A (adresse IPv4) pour google.fr
:
google.fr
: Nom de domaine demandé.
-
300
: Temps de vie (TTL) de l'enregistrement, en secondes. -
IN
: Type de réseau (Internet). -
A
: Type de requête (IPv4). -
142.250.74.3
: Adresse IPv4 associée àgoogle.fr
.
2. Requête pour les enregistrements MX (Mail Exchange) : dig google.fr MX
Résultat et explications :
- Section "ANSWER" :
Cette section affiche les enregistrements MX (serveurs de messagerie) pour le domaine google.fr
. Exemple :
google.fr. 86400 IN MX 10 aspmx.l.google.com.
google.fr. 86400 IN MX 20 alt1.aspmx.l.google.com.
google.fr. 86400 IN MX 30 alt2.aspmx.l.google.com.
-
google.fr
: Nom de domaine demandé. -
86400
: TTL (1 jour). -
IN
: Type de réseau (Internet). -
MX
: Type de requête (enregistrement Mail Exchange). -
10 aspmx.l.google.com
: Priorité10
pour le serveur mailaspmx.l.google.com
. Les valeurs de priorité (10, 20, 30) indiquent l’ordre de préférence : plus la valeur est basse, plus le serveur est prioritaire.
3. Requête ANY pour tous les enregistrements : dig google.fr ANY
Résultat et explications :
- Section "ANSWER" :
La requête ANY
demande une réponse regroupant plusieurs types d’enregistrements disponibles pour google.fr
:
google.fr. 300 IN A 142.250.74.3
google.fr. 86400 IN MX 10 aspmx.l.google.com.
google.fr. 300 IN AAAA 2a00:1450:4007:814::2003
A
: Adresse IPv4 (déjà expliquée dans l’exemple 1).
-
MX
: Serveurs de messagerie (exemple 2). -
AAAA
: Adresse IPv6 pour le domainegoogle.fr
:
Certaines configurations DNS restreignent les réponses à ANY
pour des raisons de sécurité. Si vous recevez une réponse vide ou une erreur, c'est normal dans ce cas.
Vérification du serveur DNS utilisé
Dans tous les exemples, le serveur DNS interrogé est mentionné en haut du résultat :
-192.168.1.1
est le serveur DNS utilisé. Cela peut être un DNS local, un DNS de votre routeur, ou celui configuré dans /etc/resolv.conf
.
Pour interroger un autre serveur DNS (comme Quad9), vous pouvez utiliser l’option @
:
Cela envoie la requête directement au serveur DNS Quad9 (9.9.9.9
).
Gestion du réseau
La gestion de la configuration des interfaces réseaux peut être laborieuse. Les méthodes et outils utilisés diffèrent selon le système Linux que vous utilisez et le besoin d'être dans une gestion statique (le réseau ne change pas comme sur un serveur) ou dynamique (besoin de se connecter à des réseaux différents comme sur votre ordinateur portable).
-
Pour une gestion statique, on utilisait traditionnellement le fichier de confifuration
/etc/network/interfaces
et et les outils commeifup/down
. -
Pour une gestion dynamiques, différentes surcouches sont apparues :
1) NetworkManager : C'est le gestionnaire de réseau principalement utilisé sur les systèmes de bureau comme Ubuntu Desktop ou ses dérivées graphiques telles que Kubuntu et Lubuntu. Il est conçu pour simplifier la gestion des connexions réseau, en particulier dans les environnements où les interfaces changent fréquemment, comme avec les connexions Wi-Fi, les VPN, ou les réseaux mobiles. Sur un système utilisant NetworkManager, vous avez souvent accès à une interface graphique, comme celle intégrée dans l’environnement de bureau GNOME, pour gérer les réseaux. Cela rend NetworkManager idéal pour les postes de travail où la flexibilité et l’interaction utilisateur sont essentielles.
2) systemd-networkd : systemd-networkd est plus souvent utilisé sur les systèmes serveurs, comme Ubuntu Server ou Debian, où la gestion des interfaces réseau est plus statique et ne nécessite pas d’interactions fréquentes avec l’utilisateur. Ce service est minimaliste et parfaitement intégré au système systemd, ce qui le rend adapté aux serveurs et aux environnements sans interface graphique.
3) Netplan : Puis vint Netplan qui agit comme une surcouche simplifiant la gestion de systemd-networkd (le gestionnaire de réseau de systemd) et de NetworkManager. Cela permet aux administrateurs d’utiliser une syntaxe unique et simplifiée, peu importe le service sous-jacent. Netplan est introduit dans les distibutions Linux basées sur Ubuntu depuis la version 17.10.
Déterminer quel gestionnaire est utilisé
Pour vérifier si NetworkManager est installé et actif, vous pouvez utiliser la commande suivante :
Si le service est actif, vous verrez un retour indiquant son statut comme “running”. Dans le cas contraire, le service sera inactif ou non installé.
Pour vérifier l’état de systemd-networkd, utilisez cette commande :
De la même manière, le statut sera “active” si systemd-networkd gère le réseau.(Debian) Modifier le réseau avec le fichier de configuration interfaces
nano /etc/network/interfaces
# The loopback network interface < ON NE TOUCHE PAS
auto lo
iface lo inet loopback
# Avec attribution d'adresse statique
allow-hotplug ens33
auto ens33
iface ens33 inet static
address 10.44.0.151
netmask 255.255.0.0
gateway 10.44.255.254
nameserver 10.44.255.254
nameserver 9.9.9.9
nameserver 149.112.112.112
# Avec adresse automatique par DHCP
allow-hotplug ens37
auto ens37
iface ens37 inet dhcp
Relancer le réseau
(Ubuntu) Modifier le réseau avec Netplan
Netplan est un outil de configuration réseau utilisé principalement sur les systèmes basés sur Ubuntu. Il a été introduit pour simplifier et standardiser la gestion des configurations réseau, en remplaçant les méthodes traditionnelles comme NetworkManager
pour les configurations de base.
Installation
Configuration
Les fichiers de configuration utilisés par Netplan sont au format YAML, un format simple et lisible qui permet de configurer facilement les interfaces réseau. Ces fichiers se trouvent dans le répertoire /etc/netplan/
, et c’est à partir de là que les configurations réseau sont appliquées.
Les fichiers de configuration Netplan peuvent être multiples, chacun ayant son propre fichier dans le répertoire /etc/netplan/
. Les fichiers sont traités dans l’ordre alphabétique, c’est pourquoi ils sont souvent nommés avec des préfixes numériques comme 01-network-manager-all, 50-cloud-init.yaml, etc. Un fichier commençant par 01- sera appliqué avant un fichier commençant par 50-, permettant de définir une priorité entre les configurations si nécessaire.
Chaque fichier Netplan suit une syntaxe YAML stricte avec des indentations bien définies.
Voici un exemple simple de configuration où l’interface Ethernet utilise DHCP pour obtenir une adresse IP automatiquement :
Explication :
network
: Bloc principal qui contient toutes les configurations réseau.version
: La version du fichier de configuration Netplan (actuellement, c’est la version 2).renderer
: Définit quel service gère la configuration du réseau. Ici, networkd signifie que systemd-networkd est utilisé.Pour un environnement de bureau, on peut utiliser NetworkManager.ethernets
: Ce bloc contient les interfaces Ethernet. Dans cet exemple, eth0 est l’interface que l’on configure.dhcp4
: Permet d’activer DHCP pour l’IPv4, ce qui attribue une adresse IP automatiquement.
Voici un exemple de configuration où l’interface Ethernet "ens33" est configurée avec une adresse IP statique :
network:
version: 2
renderer: NetworkManager
ethernets:
ens18:
addresses:
- 192.168.29.105/24
routes:
- to: default
via: 192.168.29.254
nameservers:
addresses:
- 9.9.9.9
- 149.112.112.112
addresses
: définit l’adresse IP statique avec le masque de sous-réseau (/24).gateway4
: spécifie la passerelle par défaut, le routeur.nameservers
: définit les serveurs DNS (ici, ceux de Quad9).
Les fichiers Netplan doivent avoir des permissions appropriées pour des raisons de sécurité. Ils doivent être lisibles et modifiables uniquement par l’utilisateur root. Les permissions recommandées pour les fichiers Netplan sont 600
, ce qui signifie que seul root peut les lire et les modifier, garantissant ainsi que la configuration réseau ne puisse être altérée par d’autres utilisateurs. Modifier les permissions sur un fichier de configuration :
Appliquer la configuration Netplan :
Comment vérifier la configuration ?
Si la configuration n'est pas correcte, essayez le mode debug lors de l'application de la nouvelle configuration :
La commande ss
Info
La commande ss
vient remplacer la traditonnelle netstat
, qui, comme ifconfig
, est dépréciée.
Lister les sockets (connexions réseau) ouverts :
Lister les sockets TCP/UDP en écoute :
Gestion des services avec systemctl
systemd
est un système d'initialisation et un gestionnaire de services. Au fil des années, systemd et son outil de commande systemctl
se sont imposés comme des composants clés de la gestion des services Linux. Leur adoption généralisée a créé une norme de facto pour les distributions modernes. Cela signifie que, que vous utilisiez une distribution basée sur Red Hat, Debian, ou une autre, vous êtes susceptible de rencontrer systemd.
Pour lister les différents types de services disponibles, vous pouvez utiliser la commande suivante :
Lister les services en cours d'exécution :
Démarrer un service :
Arrêter un service :
Redémarrer un service :
Activer un Service au Démarrage :
Désactiver un Service au Démarrage :
Vérifier l’État d’un Service :
Arrêt, redémarrage et mise en veille du système :
Logs et diagnostics
Systemd et journald
systemd
est un système d'initialisation et un gestionnaire de services utilisé par de nombreuses distributions Linux modernes. L’un des avantages de systemd est la journalisation centralisée des processus et des systèmes. Contrairement à d'autres outils où les journaux sont dispersés, systemd offre une gestion centralisée via le daemon journald
, qui collecte et stocke les messages du noyau, des services, etc., sous un format binaire.
Cela permet une manipulation facile et dynamique des journaux. L'utilitaire journalctl
permet d'accéder et de manipuler ces données. Les administrateurs peuvent afficher les journaux de manière dynamique, par exemple, visualiser les données de démarrage sur les trois derniers démarrages ou combiner les entrées de deux services liés pour déboguer un problème.
Le stockage binaire des journaux permet de les afficher sous différents formats de sortie, comme syslog ou JSON, selon les besoins. Le journal systemd peut soit remplacer, soit compléter une implémentation syslog existante, offrant ainsi une grande flexibilité. En combinant ces technologies, vous pouvez centraliser les journaux de plusieurs serveurs tout en utilisant les fonctionnalités avancées de systemd pour une gestion locale efficace.
Pour voir les journaux collectés par le daemon journald, utilisez la commande journalctl :
Lorsqu’utilisée seule, chaque entrée de journal qui se trouve dans le système s’affichera dans un pager (généralement less) pour que vous puissiez y naviguer. Les entrées les plus anciennes seront les premières :
Afficher toutes les entrées qui ont été recueillies depuis le dernier démarrage :
Pour consulter le journal d’un service spécifique, utilisez la commande suivante :
Vous pouvez filtrer par date, niveau de gravité, utilisateur, etc. Vous pouvez filtrer par des périodes de temps arbitraires en utilisant les options --since
et --until
, qui limitent respectivement les entrées affichées à celles qui suivent ou précèdent le temps donnée. :
Les valeurs de l’heure peuvent se présenter sous différents formats. Pour les valeurs de temps absolus, vous devez utiliser le format suivant YYYY-MM-DD HH:MM:SS
. Par exemple, nous pouvons voir toutes les entrées depuis le 10 janvier 2024 à 17 h 15 en saisissant :
Rechercher les entrées de journal contenant des erreurs :
Syslog
Syslog est un système de journalisation traditionnel utilisé depuis de nombreuses années. Il est largement supporté par de nombreux systèmes et applications. Les journaux sont généralement stockés dans des fichiers texte.
Les logs générés par syslog sont généralement stockés dans /var/log/
. Vous pouvez vérifier les fichiers suivants :
/var/log/syslog
/var/log/messages
/var/log/auth.log
/var/log/kern.log
Utilisez la commande cat
, less
, ou tail
pour afficher le contenu de ces fichiers :
Afficher les 20 dernières lignes :
Vous pouvez bien sûr filtrer avec la commande grep
:
Rsyslog
rsyslog est une implémentation moderne de syslog qui offre plus de fonctionnalités et de flexibilité. Le fichier de configuration principal de rsyslog est /etc/rsyslog.conf
. Vous pouvez également avoir des fichiers de configuration supplémentaires dans le répertoire /etc/rsyslog.d/
.
Pour configurer rsyslog, vous pouvez éditer le fichier /etc/rsyslog.conf
ou créer un nouveau fichier dans /etc/rsyslog.d/
.
Exemple de configuration simple pour envoyer tous les logs à un serveur distant :
Cette ligne envoie tous les logs (.) à l'adresse IP 192.168.1.100 sur le port 514.
Après avoir modifié la configuration, redémarrez le service rsyslog pour appliquer les changements :
Utilisation de la commande logger
La commande logger
permet d'envoyer des messages directement à syslog. C'est utile pour tester la configuration ou pour envoyer des messages personnalisés. Exemple d'utilisation :
/var/log/syslog
ou /var/log/messages
.
Gestion des disques, volumes et systèmes de fichiers
Lister les disques et partitions
Modifier la table de partition d'un disque
Gestion des volumes LVM (Logical Volume Manager)
Les termes PV, VG, et LV sont des concepts clés dans la gestion des volumes logiques (LVM - Logical Volume Manager) sur les systèmes Linux.
-
PV (Physical Volume) : Un périphérique de stockage physique initialisé pour être utilisé par LVM.
-
VG (Volume Group) : Un ensemble de PV regroupés pour former un pool de stockage.
-
LV (Logical Volume) : Un volume de stockage créé à partir de l'espace disponible dans un VG.
PV (Physical Volume)
Un Physical Volume (PV) est un périphérique de stockage physique (comme un disque dur ou une partition) qui est utilisé par LVM. Un PV est initialisé pour être utilisé par LVM en utilisant la commande pvcreate. Une fois initialisé, un PV peut être ajouté à un Volume Group (VG).
Exemple de création d'un PV :
VG (Volume Group)
Un Volume Group (VG) est un ensemble de Physical Volumes (PV) qui sont regroupés pour former un pool de stockage. Un VG peut contenir plusieurs PV et peut être utilisé pour créer des Logical Volumes (LV). Un VG est créé en utilisant la commande vgcreate.
Exemple de création d'un VG :
LV (Logical Volume)
Un Logical Volume (LV) est un volume de stockage créé à partir de l'espace disponible dans un Volume Group (VG). Les LV sont flexibles et peuvent être redimensionnés, déplacés, et même étendus sur plusieurs disques physiques. Un LV est créé en utilisant la commande lvcreate.
Exemple de création d'un LV :
Recette : exemple complet de création de PV, VG et LV
Créer un PV :
Créer un VG :
Créer un LV :
Gestion des PV, VG et LV
Lister les PV :
Lister les VG :
Lister les LV :
Étendre des VG et LV
Étendre un VG :
Étendre un LV :
Gestion des FileSystem (système de fichiers)
Créer un FS :
Ajouter une étiquette à un FS ext :
Remettre un FS à la taille de sa partition hôte :
Effectuer un check disk sur la partition :
Gestion des points de montage
Voir les points de montage :
Monter un LV sur un point de montage manuel/temporaire :
Démonter un volume :
Montage automatique :
#<Vol. à monter> <mountpoint> <type> <options> <dump> <fsck>
# Appel de la partition par son UUID (recommandé)
UUID=3e65ad… /boot ext2 defaults 0 2
# Appel d'un volume logique
/dev/vgsys/lvroot / ext4 errors=remount:ro 0 1
# Appel d'un FS par son étiquette (Label)
LABEL=homedsk /home ext4 defaults 0 2
# Appel de la partition par son nom (déconseillé)
/dev/sdc1 /mnt/extdsk ext4 defaults 0 0
Tester un montage dans fstab :
Résumé des commandes de gestion des disques
lsblk
: Liste les blocs de stockage de manière hiérarchique.
blkid
: Affiche les attributs des périphériques de bloc, y compris les UUID et les étiquettes.
parted
: Un outil plus moderne pour la gestion des partitions.
pvs, vgs, lvs
: Commandes pour lister les volumes physiques (PV), les groupes de volumes (VG) et les volumes logiques (LV).
pvdisplay, vgdisplay, lvdisplay
: Commandes pour afficher des informations détaillées sur les PV, VG et LV.
mkfs.<fstype>
: Crée un système de fichiers de type
tune2fs
: Modifie les paramètres du système de fichiers ext2/ext3/ext4.
resize2fs
: Redimensionne un système de fichiers ext2/ext3/ext4.
fsck.<fstype>
: Vérifie et répare un système de fichiers de type
mount
: Monte un système de fichiers.
umount
: Démonte un système de fichiers.
/etc/fstab
: Fichier de configuration pour les montages automatiques.
Références
https://blog.stephane-robert.info/