💻 Le Shell Linux
| Formation | BTS SIO option SISR — IRIS Mediaschool |
|---|---|
| Bloc | B2 — Administration Systèmes & Réseaux |
| Module | M2.2 — Administration Linux |
| Prérequis | Notions de base en informatique, utilisation basique d'un OS |
🎯 Objectifs
- Comprendre le rôle du terminal et connaître les principaux shells
- Naviguer efficacement dans le système de fichiers Linux
- Gérer les fichiers, répertoires, permissions et propriétaires
- Maîtriser les redirections et les pipes
- Administrer les utilisateurs, groupes et processus
- Utiliser les commandes réseau essentielles
📖 Le terminal et les shells
Qu'est-ce qu'un terminal ?
Le terminal (ou émulateur de terminal) est l'interface textuelle qui permet d'interagir avec le système d'exploitation Linux. Contrairement à l'interface graphique (GUI), le terminal offre un contrôle complet et précis sur le système. C'est l'outil principal de tout administrateur système.
Les principaux shells
Le shell est le programme qui interprète les commandes saisies dans le terminal. Plusieurs shells existent :
| Shell | Description | Particularité |
|---|---|---|
sh | Bourne Shell | Shell historique, présent sur tous les systèmes Unix |
bash | Bourne Again Shell | Shell par défaut sur la plupart des distributions Linux |
zsh | Z Shell | Shell avancé avec autocomplétion améliorée, thèmes (Oh My Zsh) |
fish | Friendly Interactive Shell | Shell moderne avec suggestions et coloration syntaxique |
Pour connaître votre shell actuel, tapez echo $SHELL. Pour lister tous les shells disponibles : cat /etc/shells.
📖 Navigation du système de fichiers
Le système de fichiers Linux est organisé en arborescence à partir de la racine /. Voici les commandes essentielles pour naviguer :
| Commande | Description | Exemple |
|---|---|---|
pwd | Affiche le répertoire courant | pwd → /home/user |
ls | Liste le contenu d'un répertoire | ls -la /etc |
cd | Change de répertoire | cd /var/log |
tree | Affiche l'arborescence | tree -L 2 /home |
Raccourcis de navigation importants :
~: répertoire personnel de l'utilisateur (/home/user).: répertoire courant..: répertoire parent-: répertoire précédent (cd -)
📖 Gestion des fichiers
| Commande | Description | Exemple |
|---|---|---|
cp | Copier un fichier ou répertoire | cp -r /src /dest |
mv | Déplacer ou renommer | mv ancien.txt nouveau.txt |
rm | Supprimer | rm -rf /tmp/dossier |
mkdir | Créer un répertoire | mkdir -p /srv/web/site |
touch | Créer un fichier vide | touch index.html |
ln | Créer un lien (dur ou symbolique) | ln -s /etc/nginx nginx-conf |
La commande rm -rf supprime récursivement et sans confirmation. Utilisez-la avec une extrême prudence, surtout en tant que root. Vérifiez toujours le chemin avant d'exécuter.
📖 Permissions et propriétés
Lecture des permissions
Chaque fichier possède trois niveaux de permissions pour trois catégories d'utilisateurs :
-rwxr-xr-- 1 user group 4096 jan 15 10:30 script.sh
│├─┤├─┤├─┤
│ │ │ └── Autres (others) : r-- (lecture seule)
│ │ └───── Groupe (group) : r-x (lecture + exécution)
│ └───────── Propriétaire (user) : rwx (lecture + écriture + exécution)
└─────────── Type (- = fichier, d = répertoire, l = lien)
Notation octale et symbolique
| Permission | Symbolique | Octale |
|---|---|---|
| Lecture | r | 4 |
| Écriture | w | 2 |
| Exécution | x | 1 |
Exemples d'utilisation de chmod :
# Notation octale : rwxr-xr-- = 754
chmod 754 script.sh
# Notation symbolique : ajouter l'exécution pour tous
chmod a+x script.sh
# Retirer l'écriture pour le groupe et les autres
chmod go-w fichier.txt
Permissions spéciales
| Permission | Octal | Effet |
|---|---|---|
| SUID | 4000 | Le fichier s'exécute avec les droits du propriétaire (ex : /usr/bin/passwd) |
| SGID | 2000 | Sur un répertoire, les fichiers créés héritent du groupe du répertoire |
| Sticky bit | 1000 | Sur un répertoire, seul le propriétaire peut supprimer ses fichiers (ex : /tmp) |
Changer le propriétaire et le groupe :
# Changer le propriétaire
chown user:group fichier.txt
# Définir le masque par défaut pour les nouveaux fichiers
umask 022 # permissions par défaut : 755 pour les répertoires, 644 pour les fichiers
📖 Redirection et pipes
Les redirections permettent de contrôler les flux d'entrée et de sortie des commandes :
| Opérateur | Description | Exemple |
|---|---|---|
> | Redirige la sortie (écrase le fichier) | ls > liste.txt |
>> | Redirige la sortie (ajoute à la fin) | echo "log" >> journal.txt |
< | Redirige l'entrée depuis un fichier | sort < noms.txt |
2> | Redirige les erreurs (stderr) | cmd 2> erreurs.log |
&> | Redirige stdout et stderr | cmd &> tout.log |
| | Pipe : envoie la sortie d'une commande vers l'entrée d'une autre | cat log | grep ERROR |
tee | Affiche et redirige simultanément | ls | tee liste.txt |
# Compter les lignes contenant "ERROR" dans un fichier de log
cat /var/log/syslog | grep "ERROR" | wc -l
# Enregistrer et afficher en même temps
df -h | tee espace_disque.txt
📖 Gestion des utilisateurs et groupes
| Commande | Description |
|---|---|
useradd -m -s /bin/bash user1 | Créer un utilisateur avec répertoire home et shell bash |
passwd user1 | Définir ou modifier le mot de passe |
usermod -aG sudo user1 | Ajouter l'utilisateur au groupe sudo |
userdel -r user1 | Supprimer l'utilisateur et son répertoire home |
groupadd dev | Créer un groupe |
groupdel dev | Supprimer un groupe |
Les fichiers de référence :
/etc/passwd: liste des utilisateurs (login, UID, GID, home, shell)/etc/shadow: mots de passe chiffrés et politique d'expiration/etc/group: liste des groupes et de leurs membres
📖 Gestion des processus
| Commande | Description |
|---|---|
ps aux | Afficher tous les processus en cours |
top / htop | Moniteur de processus en temps réel |
kill PID | Envoyer un signal à un processus (par défaut SIGTERM) |
kill -9 PID | Forcer l'arrêt d'un processus (SIGKILL) |
nice -n 10 cmd | Lancer une commande avec une priorité réduite |
nohup cmd & | Exécuter une commande qui persiste après la déconnexion |
cmd & | Lancer une commande en arrière-plan |
Utilisez Ctrl+Z pour suspendre un processus au premier plan, puis bg pour le reprendre en arrière-plan ou fg pour le remettre au premier plan.
📖 Variables d'environnement et PATH
Les variables d'environnement sont des valeurs dynamiques qui influencent le comportement du système et des programmes :
# Afficher toutes les variables d'environnement
env
# Afficher une variable spécifique
echo $PATH
echo $HOME
# Définir une variable temporaire
export MA_VAR="valeur"
# Ajouter un répertoire au PATH
export PATH="$PATH:/opt/mon-programme/bin"
# Rendre permanent : ajouter dans ~/.bashrc ou ~/.bash_profile
Le PATH est la variable qui liste les répertoires dans lesquels le shell cherche les exécutables. Quand vous tapez une commande, le shell parcourt ces répertoires dans l'ordre pour trouver le binaire correspondant.
📖 Commandes réseau
| Commande | Description | Exemple |
|---|---|---|
ip a | Afficher les interfaces réseau et adresses IP | ip addr show eth0 |
ip r | Afficher la table de routage | ip route show |
ss -tulnp | Lister les ports en écoute | ss -tulnp | grep :80 |
ping | Tester la connectivité | ping -c 4 8.8.8.8 |
traceroute | Tracer le chemin vers une destination | traceroute google.com |
dig | Requête DNS détaillée | dig A example.com |
curl | Effectuer des requêtes HTTP | curl -I https://example.com |
La commande ifconfig est obsolète sur les distributions modernes. Utilisez ip à la place. De même, préférez ss à netstat.
📝 QCM — Testez vos connaissances
- Quel est le shell par défaut sur la plupart des distributions Linux ?
- Quelle commande affiche le contenu d'un répertoire ?
- Comment obtenir les droits administrateur sous Linux ?
- Que représentent les permissions 755 ?
- Quelle commande recherche des fichiers sur le système ?
- Comment rediriger la sortie d'une commande vers un fichier ?
- Que fait le pipe | ?
📝 Afficher les corrections
- Bash — Bash (Bourne Again Shell) est le shell par défaut sur Ubuntu, Debian, RHEL et la plupart des distributions.
- ls — La commande ls liste les fichiers et dossiers du répertoire courant (-la pour les détails et fichiers cachés).
- sudo ou su — sudo exécute une commande avec les privilèges root, su change d'utilisateur vers root.
- rwxr-xr-x (propriétaire: tout, groupe/autres: lecture+exécution) — 7=rwx pour le propriétaire, 5=r-x pour le groupe, 5=r-x pour les autres.
- find — find / -name 'fichier' -type f recherche un fichier par nom dans toute l'arborescence.
- Avec > ou >> — > écrase le fichier, >> ajoute à la fin. Exemple : ls > liste.txt
- Envoie la sortie d'une commande comme entrée de la suivante — Le pipe connecte la sortie standard d'une commande à l'entrée standard de la suivante.
Le shell est l'outil central de l'administration Linux. Maîtriser la navigation, la gestion des fichiers, les permissions, les redirections, les utilisateurs et les processus est indispensable pour tout administrateur système. Bash est le shell standard, mais zsh gagne en popularité grâce à ses fonctionnalités avancées.
