1. Introduction au Shell Linux
Dans le cadre des travaux pratiques de ce cours et dans la suite de votre cursus, vous allez utiliser de manière intensive le shell Linux. Il est donc essentiel de vous familiariser au maximum avec cet outil. Pour réaliser les exercices de ce TP, il vous faudra une machine virtuelle Linux.
1.1. RTFM
Dès que vous utilisez un utilitaire en ligne de commande, prenez l’habitude d’aller consulter la documentation fournie avec. Généralement, cette documentation est disponible sous forme de manpage, ou page de manuel. Pour les consulter, il faut utiliser la commande man
.
Consultez les pages de manuel pour répondre aux questions suivantes :
- Comment afficher la liste des fichiers dans un répertoire, y compris ceux qui commencent par un point (fichiers cachés)?
- Comment trouver le propriétaire d’un fichier?
- A quoi sert la commande touch ?
- A quoi sert l’utilitaire grep ?
1.2. Manipulations de fichiers
Pouvoir manipuler des fichiers est indispensable dans le cadre de la mise en place de services réseaux, puisque ces derniers sont très souvent configurés à travers des fichiers textuels.
1.2.1. Création et édition de fichiers
Dans votre répertoire home
, créez un répertoire TP1. Créez deux fichiers texte vides, et ajoutez-y le texte suivant :
Lorem ipsum dolor sit amet,
consectetur adipiscing elit,
sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Pour cela, utilisez deux méthodes :
- en utilisant l’utilitaire
echo
et les caractères de redirection<
,>
ou|
- en utilisant l’éditeur de texte
vi
(ou, éventuellement,nano
)
Ensuite, sur un des fichiers, effectuez les opérations suivantes (n’hésitez pas à consulter les manpages de tail
et grep
) :
- Afficher les deux dernières lignes du fichier,
- Afficher les lignes du fichier qui contiennent
dolor
, - Afficher, parmi les deux dernières lignes du fichiers, celles qui contiennent
labor
.
1.2.2. Propriétaires, groupes et droits d’éditions
Vous allez à présent jouer avec les paramètres des fichiers et avec les propriétaires. Vous utiliserez les commandes adduser
, chown
, chgrp
, groupadd
.
- Créez un nouvel utilisateur,
toto
. - Créez un nouveau groupe,
newbies
. - Attribuez
toto
au groupenewbies
. - Changez les paramètres d’un de vos fichiers « lorem ipsum » pour que
toto
en soit propriétaire. - Changez les paramètres de l’autre fichier pour qu’il appartienne au groupe
newbies
. - Changez les permissions de vos fichiers pour que seul l’accès en lecture soit possible par le propriétaire, et en écriture par le groupe.
- Que fait la commande
umask
?
2. Les processus
Les services réseaux sont bien sûr des programmes comme les autres, et tournent dès lors à l’intérieur de processus. Il est donc indispensable de pouvoir identifier les processus qui tournent sur un système et examiner leurs propriétés.
ps
est une commande permettant d’afficher les processus qui tournent sur le système. Quelles sont les processus affichés lorsqu’aucun paramètre n’est spécifié ? Quelles sont les options de cet utilitaire qui vous paraissent intéressantes ?kill
permet de forcer un processus à quitter. Comment fonctionne- t-il ? Quels sont les paramètres qu’il accepte ?
3. Installation de programmes
Sous Linux, les programmes s’installent, pour la plupart, à l’aide des gestionnaires de paquets. Ceux-ci sont spécifiques à chaque distribution. Dans les distributions CentOS/Red Hat, c’est yum
qui est utilisé. Par contre, dans Ubuntu/Debian, on utilisera plutôt apt
.
- Quelle commande vous permettra d’installer l’éditeur de texte emacs?
- A quoi sert la commande
yum/apt update
? - Comment lister les programmes installés sur la machine ?
- Pourquoi parle-t’on de repository dans le cadre des gestionnaires de paquets ?
4. Utilitaires réseaux
Les services réseaux utilisant évidemment les interfaces réseaux et les connectivités disponibles, vous serez fréquemment amenés à examiner la configuration IP d’une machine et à analyser son fonctionnement.
Prenez dès à présent l’habitude de représenter la situation courante sous forme d’un schéma réseau en préalable à toute opération de configuration ou de debugging.
- Utilisez la commande
ip addr
pour afficher les informations de configuration des interfaces de la machine. Expliquez chaque élément de la réponse. - Faites un schéma représentant votre machine virtuelle, votre machine hôte et leurs interfaces respectives. Indiquez les subnets IP correspondant à chaque interface.
- A quoi sert l’utilitaire
ping
? Expliquez en quelques mots, et utilisez-le avec la machine de votre voisin comme cible. Quelles sont les options deping
? Si vous connaissez déjà Wireshark, utilisez-le pour observer le trafic généré par cet outil. De quel protocole s’agit-il ? Quelles sont les couches/protocoles sur lesquelles il repose ? - La commande
arp
vous permet de consulter la table ARP de la machine. Qu’est ce que le protocole ARP ? A quoi sert-il ? En quoi consulter cette table peut vous être utile pour le troubleshooting réseau ? - Même question avec la commande
route
. - A quoi sert l’utilitaire
traceroute
? Utilisez-le pour découvrir un maximum d’information sur le réseau dans lequel vous vous trouvez. Si vous savez le faire, observez le trafic généré avec Wireshark. De quels protocoles s’agit- il?traceroute
tourne-t’il au dessus de TCP ou d’UDP? Comparez sous Linux et sous Windows (outiltracert
). - ⚠️ [IMPORTANT] A quoi sert l’utilitaire
netstat
? Quels sont les effets de la commandenetstat -lnptu
? Utilisez la manpage pour déterminer le rôle de chaque option.
5. Connexion à distance et transfert de fichiers
Vous serez régulièrement amenés, lors de votre cursus ou dans votre vie professionnelle, à contrôler des machines à distance. Le protocole SSH est souvent utilisé pour cela, surtout dans le monde Unix.
- Que fait la commande
ssh
? Comment l’utilise-t’on? Qu’apporte-t- elle de plus quetelnet
? - Connectez-vous en
ssh
sur la machine de votre voisin. Vous aurez pour cela besoin de son adresse IP. - Utilisez
scp
ousftp
pour transférer un de vos fichiers « lorem ipsum » sur la machine de votre voisin.
6. Fichiers de configuration Linux
Les machines Linux possèdent un système de fichiers organisé sous forme d’un arbre contenant, à la racine, un ensemble de répertoires “standards” : /home
, /dev
, /mnt
, … Nous allons ici nous intéresser au répertoire /etc
. L’acronyme ETC signifie “Editable Text Configuration”. Ce répertoire va donc contenir des fichiers de configuration au format texte, qu’il est possible d’éditer pour adapter la machine à ses besoins.
Nous allons donc nous intéresser aux fichiers contenus dans ce répertoire. Pour chaque fichier indiqué ci-dessous, consultez-le au moyen des commandes cat
, grep
ou less
.
Expliquez à quoi chacun d’eux sert. Dans le cas d’un dossier, décrivez brièvement les fichiers qu’il contient. Les items marqués d’un ⚠️ sont particulièrement importants pour le cours, les autres restent intéressants pour votre culture générale.
- ⚠️
/etc/hosts
- ⚠️
/etc/resolv.conf
- ⚠️
/etc/passwd
- ⚠️
/etc/shadow
- ⚠️
/etc/group
- ⚠️
/etc/sudoers
/etc/networks
/etc/host.conf
/etc/services
/etc/sysconfig
/etc/default/useradd
/etc/fstab
/etc/rsyslog.conf
7. Les logs
Les logs, ou journaux système, sont les fichiers qui listent tous les événements qui se produisent dans le système.
Lorsqu’un service est bien configuré, toute action importante ou problème sera listée dans le fichier de log correspondant. Les logs sont un point d’entrée incontournable en cas de troubleshooting. Dans les systèmes Unix/Linux, ils sont généralement stockés dans le répertoire /var/log
(⚠️).
- Examinez les fichiers dans
/var/log
. Essayez d’expliquer quelles informations on trouve dans chacun d’eux. Lesquels sont génériques (i.e. journaux systèmes), et lesquels sont spécifiques à un programme ou un service particulier ? - Le fichier de logs qui vous sera le plus utile est le fichier
/var/log/messages
. Comment faire pour l’examiner en temps réel ? Pour n’afficher que les 10 dernières lignes ? Affichez toutes les lignes du fichier/var/log/messages
concernant le processusdhclient
.
8. Gestion des services (facultatif)
Un service est un programme qui tourne en arrière-plan, sous contrôle d’un gestionnaire appelé systemd
dans certaines versions récentes de Linux. L’utilitaire systemctl
permet de contrôler l’ensemble de ces services.
- Quelle commande permet de démarrer le service SSH ?
- Comment lister les services démarrés sur la machine ?
- A quoi correspond la notion de target dans SystemD ?
- Comment afficher les services démarrés dans le target graphical ?