💻 Le Shell Linux

Bloc 2 Module 2.2 BTS SIO SISR
FormationBTS SIO option SISR — IRIS Mediaschool
BlocB2 — Administration Systèmes & Réseaux
ModuleM2.2 — Administration Linux
PrérequisNotions 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 :

ShellDescriptionParticularité
shBourne ShellShell historique, présent sur tous les systèmes Unix
bashBourne Again ShellShell par défaut sur la plupart des distributions Linux
zshZ ShellShell avancé avec autocomplétion améliorée, thèmes (Oh My Zsh)
fishFriendly Interactive ShellShell moderne avec suggestions et coloration syntaxique
💡 Astuce

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 :

CommandeDescriptionExemple
pwdAffiche le répertoire courantpwd/home/user
lsListe le contenu d'un répertoirels -la /etc
cdChange de répertoirecd /var/log
treeAffiche l'arborescencetree -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

CommandeDescriptionExemple
cpCopier un fichier ou répertoirecp -r /src /dest
mvDéplacer ou renommermv ancien.txt nouveau.txt
rmSupprimerrm -rf /tmp/dossier
mkdirCréer un répertoiremkdir -p /srv/web/site
touchCréer un fichier videtouch index.html
lnCréer un lien (dur ou symbolique)ln -s /etc/nginx nginx-conf
⚠️ Attention

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

PermissionSymboliqueOctale
Lecturer4
Écriturew2
Exécutionx1

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

PermissionOctalEffet
SUID4000Le fichier s'exécute avec les droits du propriétaire (ex : /usr/bin/passwd)
SGID2000Sur un répertoire, les fichiers créés héritent du groupe du répertoire
Sticky bit1000Sur 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érateurDescriptionExemple
>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 fichiersort < noms.txt
2>Redirige les erreurs (stderr)cmd 2> erreurs.log
&>Redirige stdout et stderrcmd &> tout.log
|Pipe : envoie la sortie d'une commande vers l'entrée d'une autrecat log | grep ERROR
teeAffiche et redirige simultanémentls | 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

CommandeDescription
useradd -m -s /bin/bash user1Créer un utilisateur avec répertoire home et shell bash
passwd user1Définir ou modifier le mot de passe
usermod -aG sudo user1Ajouter l'utilisateur au groupe sudo
userdel -r user1Supprimer l'utilisateur et son répertoire home
groupadd devCréer un groupe
groupdel devSupprimer 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

CommandeDescription
ps auxAfficher tous les processus en cours
top / htopMoniteur de processus en temps réel
kill PIDEnvoyer un signal à un processus (par défaut SIGTERM)
kill -9 PIDForcer l'arrêt d'un processus (SIGKILL)
nice -n 10 cmdLancer 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
💡 Astuce

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

CommandeDescriptionExemple
ip aAfficher les interfaces réseau et adresses IPip addr show eth0
ip rAfficher la table de routageip route show
ss -tulnpLister les ports en écoutess -tulnp | grep :80
pingTester la connectivitéping -c 4 8.8.8.8
tracerouteTracer le chemin vers une destinationtraceroute google.com
digRequête DNS détailléedig A example.com
curlEffectuer des requêtes HTTPcurl -I https://example.com
💡 Astuce

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

  1. Quel est le shell par défaut sur la plupart des distributions Linux ?
  2. Quelle commande affiche le contenu d'un répertoire ?
  3. Comment obtenir les droits administrateur sous Linux ?
  4. Que représentent les permissions 755 ?
  5. Quelle commande recherche des fichiers sur le système ?
  6. Comment rediriger la sortie d'une commande vers un fichier ?
  7. Que fait le pipe | ?
📝 Afficher les corrections
  1. Bash — Bash (Bourne Again Shell) est le shell par défaut sur Ubuntu, Debian, RHEL et la plupart des distributions.
  2. ls — La commande ls liste les fichiers et dossiers du répertoire courant (-la pour les détails et fichiers cachés).
  3. sudo ou su — sudo exécute une commande avec les privilèges root, su change d'utilisateur vers root.
  4. 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.
  5. find — find / -name 'fichier' -type f recherche un fichier par nom dans toute l'arborescence.
  6. Avec > ou >> — > écrase le fichier, >> ajoute à la fin. Exemple : ls > liste.txt
  7. 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.
💡 À retenir

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.

← Retour au module Cours suivant →