Administration des systèmes Linux

Le système qui fait tourner la quasi-totalité des serveurs du monde — et qu'on administre au clavier, une commande à la fois.

📌

Résumé flash

Sous Linux, tout est fichier et tout part de la racine /. Le shell traduit vos commandes, écrites toujours de la même façon : commande, options, paramètres. Le système est multi-utilisateurs : chaque fichier a un propriétaire, un groupe et neuf droits (rwx × 3) que l'on manipule avec chmod. Seul root — ou un utilisateur passant par sudo — peut tout faire.

🔑 #Unix #noyau #distribution #shell #bash #arborescence #chemin #APT #processus #PID #root #sudo #UID-GID #chmod #chown #octal #interfaces

01Unix, Linux, distributions

D'où vient Unix

  • 1969 — Unix naît aux laboratoires Bell, développé par Ken Thompson et Dennis Ritchie, ce dernier étant aussi le créateur du langage C.
  • 1973 — Unix est réécrit presque entièrement en C, pour faciliter la portabilité.
  • Le code source est vendu à bas prix aux sociétés. IBM, Sun et d'autres reprennent son développement pour créer leur propre version : Solaris (Sun), AIX (IBM), HP-UX (HP).
🌍 Pourquoi la réécriture en C a tout changé

Avant 1973, un système d'exploitation s'écrivait en assembleur — donc pour une machine, et il fallait tout reprendre pour en changer. En le réécrivant en C, langage portable, Thompson et Ritchie ont rendu Unix transportable d'une architecture à l'autre en recompilant simplement. C'est ce choix, plus que le système lui-même, qui explique qu'Unix et ses descendants tournent aujourd'hui du Raspberry Pi au supercalculateur.

Les caractéristiques d'Unix

  • Basé sur le principe « tout est fichier ».
  • Multi-tâches en temps partagé.
  • Multi-utilisateurs.
  • Utilisation du shell comme interpréteur de commandes.
  • Disponible sur une large gamme d'architectures, du PC au supercalculateur massivement parallèle.
  • C'est le système le plus utilisé dans les universités, les centres de recherche et les serveurs d'Internet.
💡 « Tout est fichier », concrètement

Le disque dur est un fichier (/dev/sda). Le clavier est un fichier. La souris est un fichier. Même le générateur de nombres aléatoires est un fichier (/dev/urandom). Conséquence pratique : les mêmes commandes — lire, écrire, copier — fonctionnent sur tout. Vous n'avez pas cinquante outils à apprendre, mais cinq outils applicables partout.

Logiciel libre

Un logiciel libre est un logiciel dont la licence prévoit :

  • la disponibilité des codes sources ;
  • la possibilité de modifier, améliorer, adapter le logiciel, sous réserve que ces modifications soient rendues accessibles à toute personne intéressée ;
  • la possibilité de copier et diffuser le logiciel, sous réserve que les termes de la licence ne soient pas modifiés.

Exemples : Linux, OpenOffice, Apache, Sendmail, MySQL, PostgreSQL, gcc, PHP.

Noyau et distributions

Le noyau (ou kernel), développé par Linus Torvalds, est l'élément essentiel de toutes les distributions Linux existantes. C'est l'ensemble de programmes qui gère la machine et ses ressources. Chaque distribution essaie d'offrir de la valeur ajoutée sous la forme d'outils d'installation et d'administration.

DistributionOrigineRemarque
Red Hat LinuxÉtats-UnisRéférence en entreprise
Fedora—Version libre de Red Hat
DebianInternetCommunautaire — celle des TP du BTS
Ubuntu—Dérivée de Debian
Mandrake LinuxFranceDevenue Mandriva
SuSE LinuxAllemagne
KNOPPIX, Slackware, Mandriva—

La position du noyau dans une distribution

ÉlémentRôle
Noyau LinuxGère la machine et ses ressources
ShellInterpréteur de commandes
Pilotes (drivers) Disques durs, carte graphique, carte réseau, imprimantes…
Logiciels d'application X-Window fournit l'environnement graphique ; KDE et GNOME gèrent l'interface (fenêtres…)

02Se connecter et utiliser le shell

Linux étant un système multi-utilisateurs, il faut entrer un nom et un mot de passe pour y accéder.

  • Utilisateur simple — droits restreints ; chaque utilisateur possède un répertoire de travail.
  • Super-utilisateur ou administrateur, root — tous les droits.

Les utilisateurs sont organisés en groupes : chaque utilisateur doit appartenir à un groupe. La connexion se fait selon deux modes : mode texte (ou console, pour exécuter des commandes shell) et mode graphique (à l'aide du serveur de graphisme X-Window).

Le shell

C'est l'interface entre les utilisateurs et le système. Le shell est un interpréteur qui exécute les commandes une à une, après traduction de l'instruction — écrite en langage évolué — en langage interne.

Versions : sh, ksh, bash, csh… bash est celui de Debian et d'Ubuntu.

Lire l'invite de commande

shell
anthony@debian:~$
   │       │     │ │
   │       │     │ └── $ = simple utilisateur   #  = super-utilisateur (root)
   │       │     └──── ~ = le répertoire personnel de l'utilisateur connecté
   │       └────────── le nom de la machine
   └────────────────── le nom de l'utilisateur connecté
⚠️ Le caractère le plus important de l'écran

$ ou # ? C'est la première chose à regarder. Un # signifie que vous êtes root : chaque commande peut détruire le système sans le moindre avertissement. Sous Linux, il n'y a pas de « êtes-vous sûr ? ».

La syntaxe d'une commande

syntaxe
commande [option] [paramètres]

• option     : NON nécessaire pour exécuter la commande     (souvent  -x  ou  --mot)
• paramètres : arguments NÉCESSAIRES à l'exécution
• les trois champs sont séparés par des ESPACES
• plusieurs commandes sur une même ligne : les séparer par  ;

exemple :   ls  -la  /etc
            │    │    └── paramètre : le répertoire à lister
            │    └─────── options : -l (détaillé) et -a (fichiers cachés)
            └──────────── commande

03Le système de fichiers

Le système de fichiers structure les données sur le ou les disques. Sous Linux, il forme une arborescence unique :

  • la racine est dénotée par / ;
  • les chemins sont séparés par / ;
  • les noms des objets sont des séquences de 255 caractères maximum, sensibles à la casse ;
  • le point en premier caractère signifie un fichier caché ;
  • le point ne sépare pas forcément le nom de son extension — exemples : rapport.ps.gz, postgresql-2.3.6-src.tar.Z, README.
🧰 Nommer proprement un fichier

À éviter : ? * & ` ' " < >, les caractères accentués et les espaces.

À utiliser : A-Z a-z 0-9, le soulignement _, le tiret - et le point ..

⚠️ Sensible à la casse — vraiment

Rapport.txt, rapport.txt et RAPPORT.TXT sont trois fichiers différents qui peuvent coexister dans le même répertoire. Windows ne fait pas cette distinction : c'est la source d'erreur numéro un quand on arrive de Windows, en particulier sur les noms de scripts et de dossiers web.

Les répertoires à connaître

/ /bootdémarrage du système /bincommandes de base (binaires) /sbincommandes du super-utilisateur /etcfichiers de configuration /homerépertoires des utilisateurs simples /rootrépertoire personnel de root /usrprogrammes et logiciels /dev noms des périphériques
Une racine unique, et chaque répertoire a un rôle défini. Il n'y a pas de « lecteur C: » sous Linux.
CheminContenu
.Le répertoire actuel
..Le répertoire parent
~Le répertoire personnel
/bootFichiers nécessaires au démarrage du système
/binCommandes de base (binaires)
/sbinCommandes du super-utilisateur
/usr/bin, /usr/sbinAutres fichiers binaires
/etcFichiers de configuration du système et des services
/homeRépertoires personnels des utilisateurs simples
/rootRépertoire personnel de l'administrateur
/usrReste des programmes du système et logiciels
/devNoms des périphériques
⚠️ /root n'est pas /

La racine est /. Le répertoire personnel de root est /root. Deux choses différentes, souvent confondues à l'oral parce qu'on dit « la racine » et « root ». De même, /bin contient les commandes de tout le monde, /sbin celles de l'administrateur — le s comme system.

La représentation des disques

Selon le type de contrôleur et d'interface sur lesquels les disques sont connectés, Linux donne des noms différents aux fichiers spéciaux des périphériques. Chaque disque est représenté par un fichier spécial de type bloc — et chaque partition également.

bash
lsblk              # liste les disques et partitions, en arborescence
ls -l /dev/sd*     # les fichiers spéciaux des disques

/dev/sda           → le premier disque
/dev/sda1          → sa première partition
/dev/sda2          → sa deuxième partition

04Les commandes de base

Se repérer et se déplacer

bash
pwd                 # affiche le répertoire de travail courant
ls                  # liste le contenu du répertoire courant
ls -l               # informations étendues : droits, propriétaire, groupe, taille
ls -a               # affiche TOUS les fichiers, y compris les cachés (.nom)
ls -la              # les deux à la fois
ls -l -C            # affichage en colonnes

cd /                # aller à la RACINE
cd ..               # remonter au répertoire PARENT
cd ~   ou   cd      # revenir à son répertoire personnel
cd /usr/bin         # se déplacer vers un chemin précis
cd -                # revenir au répertoire précédent
🔧 Corrigé pour exactitude technique

Le mémo de commandes présente cd / comme servant à « revenir au dossier parent ». C'est inexact : cd / conduit à la racine du système de fichiers. C'est cd .. qui remonte d'un niveau, vers le parent. La confusion vient d'une fusion de deux lignes du tableau d'origine.

Créer, copier, déplacer, supprimer

bash
mkdir dossier1                   # crée un répertoire
mkdir -p dossier2/dossier3       # crée l'arborescence complète d'un coup
touch essai.txt                  # crée un fichier texte vide

cp fichier1 /dossier1            # copie un fichier dans un dossier
cp -r dossier1 dossier2          # copie TOUT le dossier (récursif)

mv fichier1 fichier2             # RENOMME fichier1 en fichier2
mv dossier2 dossier3             # renomme un dossier
mv fichier2 dossier3             # DÉPLACE fichier2 dans dossier3
mv fichier2 dossier4/fichier3    # déplace ET renomme

rm essai.txt                     # supprime un fichier
rmdir dossier1                   # supprime un répertoire VIDE
rm -r dossier1                   # supprime un répertoire et son contenu
rm -rf dossier1                  # idem, sans aucune confirmation  ⚠ DANGER
🔧 Corrigé pour exactitude technique

Le mémo indique rm dossier1 pour « supprimer un répertoire vide ». Cela échoue : rm refuse les répertoires et répond rm: impossible de supprimer 'dossier1': est un dossier. La commande correcte est rmdir pour un répertoire vide, ou rm -r pour un répertoire avec son contenu.

⚠️ rm -rf — la commande qui ne pardonne pas

Il n'y a pas de corbeille sous Linux : ce qui est supprimé est perdu. rm -rf ne demande aucune confirmation et ne s'arrête sur aucune erreur. Une faute de frappe comme rm -rf / home/bob — avec un espace de trop — détruit le système entier au lieu du seul dossier.

Le réflexe : lancez d'abord ls avec exactement le même chemin. Ce que ls affiche est précisément ce que rm supprimera.

Se renseigner sur le système

bash
man ls                    # AIDE sur une commande — la référence absolue
uname -a                  # quel noyau est installé (uname -rms pour l'essentiel)
cat /etc/debian_version   # quelle version de Debian
cat /etc/issue            # quelle distribution
who                       # utilisateurs actuellement connectés
whoami                    # sous quel nom suis-je connecté
id                        # mon UID, mon GID principal et tous mes groupes
date                      # date et heure
clear                     # efface l'écran

Arrêter et redémarrer

bash
shutdown            # arrête le système        (ou  init 0  , ou  poweroff)
shutdown -r         # redémarre le système     (ou  reboot  , ou  init 6)
exit  /  logout     # ferme la session         (ou  Ctrl + D)
🧰 Les raccourcis qui font gagner des heures
ToucheEffet
TABAutocomplétion des noms de commandes et de fichiers. À utiliser en permanence : c'est aussi une vérification que le fichier existe
↑ ↓Naviguer dans l'historique des commandes
Ctrl+CArrêter la commande en cours
Ctrl+ACurseur en début de ligne
Ctrl+ECurseur en fin de ligne
Ctrl+DFermer la session
❓ Auto-évaluation

Vous êtes dans /home/la copie A/projets. Écrivez les commandes pour : lister les fichiers cachés, créer test/sous-test en une seule commande, revenir à la racine, puis afficher l'aide de date.

bash
ls -la                    # ou  ls -a  si le détail n'est pas demandé
mkdir -p test/sous-test   # l'option -p crée toute l'arborescence
cd /                      # la racine — PAS cd ..  qui remonterait à /home/la copie A
man date                  # l'aide complète  (date --help pour un résumé)

Le point qui départage : l'option -p de mkdir. Sans elle, mkdir test/sous-test échoue tant que test n'existe pas ; il faudrait deux commandes.

05La gestion des paquets

Contrairement à d'autres systèmes, il n'est pas courant sous Linux de disposer de logiciels fournis avec un programme d'installation interactif — pas d'install.exe. On dispose des produits, outils et mises à jour sous forme de paquetages (packages). Un package est un fichier, parfois gros, qui contient le produit à installer et des règles :

  • Gestion des dépendances — le produit ne pourra être installé que si les produits qu'il utilise sont déjà présents ;
  • Pré-installation — des actions à prévoir avant l'installation : changer des droits, créer des répertoires ;
  • Post-installation — des actions après : paramétrer un fichier de configuration, compiler une annexe.
FormatDistributionsOutil
RPM (Red Hat Package Manager) Red Hat, Fedora, SuSE, Mandrivarpm -i paquet.rpm, dnf, yum
DPKG (Debian Package) Debian, Knoppix, Kaella, Ubuntudpkg, et surtout apt

Outre le format, ce sont surtout les outils qui les différencient. Nous utilisons apt, qui gère les dépendances sous Debian et Ubuntu. Ces commandes s'utilisent en tant que root ou via sudo.

bash
sudo apt update                 # met à jour la BASE LOCALE (la liste des paquets disponibles)
sudo apt upgrade                # met à jour les paquets installés
sudo apt full-upgrade           # mise à jour complète, peut retirer des paquets
sudo apt install php            # installe un paquet
sudo apt remove php             # désinstalle, en gardant la configuration
sudo apt purge php              # désinstalle ET supprime la configuration
sudo apt autoremove             # retire les dépendances devenues inutiles
apt search apache               # cherche un paquet
apt show php                    # affiche les détails d'un paquet
⚠️ update ≠ upgrade

apt update ne met aucun logiciel à jour : il rafraîchit seulement le catalogue, la liste de ce qui est disponible dans les dépôts. C'est apt upgrade qui installe réellement les nouvelles versions.

D'où l'enchaînement systématique : sudo apt update && sudo apt upgrade. Faire upgrade sans update revient à faire ses courses avec le catalogue de l'an dernier.

💡 Analogie

Un dépôt APT, c'est un magasin d'applications — vingt ans avant l'App Store. Vous ne téléchargez pas un .exe sur un site inconnu : vous demandez au système d'installer un paquet signé et vérifié, qui apporte automatiquement tout ce dont il a besoin. C'est aussi pour cela que les virus sont rares sous Linux : personne ne télécharge de logiciel au hasard.

06Les processus

Un processus représente à la fois un programme en cours d'exécution et tout son environnement d'exécution : mémoire, état, identification, propriétaire, père.

TypeCaractéristiques
Processus système
(daemon)
N'est attaché à aucun terminal. Son rôle est de rendre des services : FTP, SSH, serveur web…
Processus utilisateur Lancé par un utilisateur ; se termine automatiquement lorsque celui-ci se déconnecte

Les données d'identification d'un processus

DonnéeSignification
PIDProcess Identifier — numéro unique pour chaque processus
PPIDParent PID — le PID du processus « père »
ÉtatPrêt (Ready), Actif, Endormi (Sleep), Attente E/S…
TerminalLe terminal depuis lequel le processus a été lancé
PrioritéLiée à son contexte d'exécution
Taille mémoireOccupation en mémoire
UIDUser Identifier — l'utilisateur qui a lancé le processus
GIDGroup Identifier — le groupe propriétaire du processus
🔧 Précision

Le polycopié définit le GID comme « le GID du propriétaire du processus, c'est-à-dire de l'utilisateur qui a lancé l'exécution » — reprenant mot pour mot la définition de l'UID. Le GID désigne le groupe, pas l'utilisateur : c'est en général le groupe principal de celui qui a lancé le processus. La distinction compte, car les droits d'accès s'appliquent séparément au propriétaire et au groupe.

Avant-plan et arrière-plan

Lorsqu'un processus fonctionne en arrière-plan, il n'est pas bloquant : l'utilisateur récupère la main pour continuer son travail. Il suffit de placer un & à la fin de la commande.

bash
ps                    # les processus du terminal courant
ps -ef                # TOUS les processus, format complet
ps aux                # idem, autre syntaxe, avec la consommation CPU/mémoire
pstree                # l'ARBORESCENCE des processus (père → fils)
top   /   htop        # activité en temps réel

sleep 1000 &          # lance en arrière-plan ; le shell affiche le PID
jobs                  # liste les tâches de la session
fg %1                 # ramène la tâche 1 en AVANT-plan
Ctrl + Z              # STOPPE le processus courant (il ne meurt pas, il est suspendu)
bg %1                 # relance la tâche 1 en ARRIÈRE-plan
ps -f -p 1234         # les détails du processus dont le PID est 1234

kill 1234             # demande poliment au processus de se terminer  (signal TERM)
kill -9 1234          # le TUE sans discussion  (signal KILL) — dernier recours
⚠️ Stopper n'est pas tuer

Ctrl+Z suspend le processus : il reste en mémoire, figé, et peut repartir avec fg ou bg.
Ctrl+C et kill le terminent.

« Stopper le processus, ne pas le tuer » : la formulation revient souvent, et elle n'est pas un détail de vocabulaire — c'est Ctrl+Z qui est attendu, pas kill.

07Utilisateurs et groupes

Linux est multi-utilisateurs : plusieurs personnes peuvent s'y connecter en même temps et partager des ressources. Chaque utilisateur a un nom et un répertoire personnel dans /home. Le système peut théoriquement accueillir 232 utilisateurs.

🔧 Précision de lecture

Le diaporama affiche « 232 utilisateurs » : il s'agit de 232 (environ 4,3 milliards), l'exposant ayant été perdu à l'impression. Même accident que dans le chapitre sur la RAM.

Le super-utilisateur

Pour des raisons de sécurité, un utilisateur ordinaire ne peut pas tout faire. Seul le super-utilisateur peut installer ou supprimer des programmes, et accéder aux fichiers « dangereux ».

Les utilisateurs sont identifiés par un nom et un UID. Le super-utilisateur root a toujours l'UID 0. Il existe par ailleurs de nombreux utilisateurs « spéciaux », créés par les services.

bash
sudo commande                    # exécute UNE commande en super-utilisateur
su                               # ouvre une session root (si on n'a pas le droit d'utiliser sudo)
su -c 'commande options'         # exécute UNE seule commande en super-utilisateur
sudo visudo                      # édite /etc/sudoers pour autoriser un utilisateur
⚠️ sudo ou su ?

sudo demande votre mot de passe et n'élève les privilèges que pour une commande. su demande le mot de passe de root et ouvre une session root entière.

sudo est préférable : chaque action est journalisée, l'élévation est limitée dans le temps, et on peut accorder des droits précis via /etc/sudoers — par exemple le droit de redémarrer un service, et rien d'autre. C'est exactement la réponse attendue à la question « comment permettre à un utilisateur d'exécuter une commande administrative sans lui donner un shell root complet ».

Gérer les utilisateurs

bash
sudo adduser bob                    # ajoute l'utilisateur (interactif, crée le /home)
sudo useradd bob                    # équivalent bas niveau, moins automatique
sudo deluser bob                    # supprime — le /home N'EST PAS supprimé
sudo deluser --remove-home bob      # supprime aussi son répertoire personnel
sudo deluser --remove-all-files bob # supprime tous ses fichiers, où qu'ils soient
sudo usermod bob                    # modifie l'utilisateur
passwd                              # change SON propre mot de passe
sudo passwd bob                     # change celui de bob

Gérer les groupes

Les groupes sont identifiés par un nom et un GID. Ils servent à définir des permissions de manière plus globale et simple :

  • faire partie de audio permet d'utiliser les périphériques audio ;
  • faire partie de lpadmin permet de configurer les imprimantes ;
  • faire partie de sudo permet… d'utiliser sudo.

Chaque utilisateur fait partie de son propre groupe, créé à son nom.

bash
groups                              # affiche les groupes dont je fais partie
sudo addgroup projet                # crée un groupe
sudo delgroup projet                # supprime un groupe
sudo groupmod projet                # modifie un groupe

sudo usermod -aG projet bob         # AJOUTE bob au groupe projet
                                    # -a = append : sans lui, on REMPLACE tous ses groupes !
⚠️ L'option -a n'est pas optionnelle

usermod -G projet bob — sans le -a — remplace la liste complète des groupes secondaires de bob par projet seul. S'il était dans sudo, il en sort : il perd instantanément ses droits d'administration.

Retenez : usermod -aG, a comme append — « ajouter ». C'est une question classique de QCM.

Les fichiers du système

FichierContenu
/etc/passwd Liste principale des comptes : nom, UID, GID principal, répertoire personnel, shell. Lisible par tous — malgré son nom, il ne contient plus de mot de passe
/etc/shadow Les mots de passe chiffrés. Lisible par root seul
/etc/groupLa liste des groupes et de leurs membres
/etc/sudoers Qui a le droit d'utiliser sudo, et pour quelles commandes. À éditer uniquement avec visudo, qui vérifie la syntaxe

08Les permissions

Les objectifs sont au nombre de trois : la sécurité des données (empêcher l'accès non autorisé), l'organisation (permettre des accès spécifiques selon les rôles) et l'audit (identifier qui a accédé ou modifié des fichiers sensibles).

Lire une ligne de ls -l

bash
$ ls -l
-rwxr-xr--  1  la copie A  projet  4096  15 jan 10:23  script.sh
│└┬┘└┬┘└┬┘     └─┬─┘  └─┬──┘
│ │  │  │        │      └──── le GROUPE propriétaire
│ │  │  │        └─────────── le PROPRIÉTAIRE (user)
│ │  │  └──────────────────── droits des AUTRES     (o)  r--
│ │  └─────────────────────── droits du GROUPE      (g)  r-x
│ └────────────────────────── droits du PROPRIÉTAIRE(u)  rwx
└──────────────────────────── TYPE de fichier

Les types les plus fréquents : - pour un fichier ordinaire, d pour un répertoire, l pour un lien.

Les trois catégories et les trois droits

CatégorieQuiDroitSur un fichierSur un répertoireValeur
uUser — le propriétaire rLire le contenuLister le contenu4
gGroup — l'équipe wModifierCréer / supprimer des fichiers2
oOthers — le reste du monde xExécuter comme programmeTraverser (entrer dedans)1

Un fichier exécutable se lance avec ./fichier.

⚠️ Sur un répertoire, les droits ne veulent pas dire la même chose
  • r — je peux lister les noms des fichiers.
  • x — je peux traverser le répertoire, donc accéder à un fichier dont je connais déjà le nom.

D'où deux situations déroutantes qui tombent souvent :

  • r sans x — je vois les noms mais je ne peux rien ouvrir.
  • x sans r — je ne vois rien, mais si je connais le nom exact, j'ouvre le fichier.

C'est pourquoi un répertoire utile porte presque toujours r et x ensemble.

Modifier les droits — la méthode symbolique

bash
chmod g+w fich       # AJOUTE le droit d'écriture au groupe
chmod o+wx fich      # ajoute écriture et exécution aux autres
chmod u-r fich       # RETIRE la lecture au propriétaire
chmod g=r fich       # FIXE les droits du groupe à « lecture seule » exactement
chmod ug-wx fich     # retire w et x au propriétaire ET au groupe
chmod a+r fich       # a = all : ajoute la lecture à tout le monde

  qui :  u (user)  g (group)  o (others)  a (all)
  quoi:  + (ajoute)  - (retire)  = (fixe exactement)
  koi :  r (4)  w (2)  x (1)

Modifier les droits — la méthode octale

On utilise un chiffre par catégorie, obtenu en additionnant les valeurs des droits souhaités.

calcul
r = 4     w = 2     x = 1

rwx = 4+2+1 = 7      r-x = 4+0+1 = 5      r-- = 4      --- = 0
rw- = 4+2   = 6      -wx =   2+1 = 3      -w- = 2      --x = 1

chmod 755 fichier    →  rwx r-x r-x   (le classique d'un script ou d'un dossier)
chmod 644 fichier    →  rw- r-- r--   (le classique d'un fichier de données)
chmod 640 fichier    →  rw- r-- ---   (le groupe lit, les autres ne voient rien)
chmod 770 dossier    →  rwx rwx ---   (travail d'équipe, rien pour l'extérieur)
chmod 600 fichier    →  rw- --- ---   (privé : clé SSH, mot de passe)

Un exemple déroulé, à partir de 644

exercice
départ                                  644   rw- r-- r--

1. ajouter w au groupe          g+w  →  664   rw- rw- r--
2. ajouter wx aux autres        o+wx →  667   rw- rw- rwx
3. retirer r au propriétaire    u-r  →  267   -w- rw- rwx
4. retirer w au groupe
   et wx aux autres             g-w, o-wx → 244   -w- r-- r--
🔧 Corrigé pour exactitude technique

Le diaporama donne chmod 367 à l'étape 3 et chmod 344 à l'étape 4. Les deux valeurs sont fausses, et la seconde découle de la première.

Étape 3 : le propriétaire a 6 (rw-). Lui retirer r revient à retrancher 4 : 6 − 4 = 2 (-w-). Le résultat est donc 267, pas 367 — 3 vaudrait -wx, ce qui signifierait qu'on a ajouté le droit d'exécution alors qu'on n'a rien fait de tel.

Étape 4 : en repartant de 267 — groupe 6 − 2 = 4, autres 7 − 3 = 4 — on obtient 244, et non 344.

Le contrôle qui évite l'erreur : après chaque étape, retraduisez le nombre en rwx et relisez l'énoncé. Un chiffre qui augmente alors qu'on a « retiré » un droit signale une faute de calcul.

Changer le propriétaire

bash
sudo chown alice fichier            # change le PROPRIÉTAIRE
sudo chown alice:projet fichier     # change le propriétaire ET le groupe, d'un coup
sudo chgrp projet fichier           # change seulement le GROUPE
sudo chown -R alice:projet dossier  # récursif, sur tout le contenu
❓ Auto-évaluation

Trois personnes doivent travailler ensemble dans /srv/projet, sans que quiconque d'autre puisse y accéder ni y voir quoi que ce soit. Quelle est la bonne solution, et pourquoi pas chmod 777 ?

La solution : un groupe commun et des permissions rwxrwx---, soit 770.

bash
sudo addgroup projet
sudo usermod -aG projet alice
sudo usermod -aG projet bob
sudo usermod -aG projet claire

sudo chgrp projet /srv/projet      # le groupe devient propriétaire
sudo chmod 770 /srv/projet         # rwx pour u et g, RIEN pour les autres
sudo chmod g+s /srv/projet         # bonus : les fichiers créés héritent du groupe

Pourquoi pas 777 : cela donne tous les droits à tout le monde, y compris à n'importe quel compte de service compromis. Le but était justement de restreindre : 777 fait exactement l'inverse. C'est la mauvaise réponse classique du QCM.

Pourquoi pas non plus un compte partagé ni le mot de passe root : on perd toute traçabilité — impossible de savoir qui a fait quoi — et on donne bien plus de droits que nécessaire. Le principe est celui du moindre privilège : juste ce qu'il faut, à la bonne personne.

09La configuration réseau

Voir la configuration actuelle

bash
ip a          # ou  ip addr  — affiche les interfaces et leurs adresses
ip route      # la table de routage, dont la passerelle par défaut
              # (ifconfig et route sont les commandes ANCIENNES, souvent absentes)

La commande retourne l'interface lo, qui correspond à la boucle locale (loopback), ainsi qu'une ou plusieurs autres interfaces — enp0s3, ens33… Il faut récupérer le nom exact de l'interface connectée au réseau local.

Passer en adresse IP statique

On édite le fichier /etc/network/interfaces, où les interfaces sont déclarées. La mention inet dhcp signifie que l'interface est en mode DHCP : il faut remplacer dhcp par static et déclarer les propriétés.

/etc/network/interfaces
auto enp0s3
iface enp0s3 inet static
    address   10.0.0.10
    netmask   255.255.255.0
    gateway   10.0.0.1
    dns-nameservers 8.8.8.8 1.1.1.1
bash
sudo nano /etc/network/interfaces          # éditer, puis sauvegarder et fermer
sudo systemctl restart networking.service  # redémarrer le service réseau
sudo ifup enp0s3                           # activer la carte réseau
ip a                                       # VÉRIFIER la nouvelle configuration
⚠️ Les quatre lignes qui font échouer le TP
  • auto enp0s3 manquante — sans elle, l'interface n'est pas activée au démarrage. Tout est juste, et pourtant rien ne marche après un redémarrage.
  • Le masque en notation CIDR — dans ce fichier, on écrit netmask 255.255.255.0 sur une ligne séparée, pas address 10.0.0.10/24.
  • Le nom de l'interface — eth0 n'existe plus sur Debian récent. Relevez le nom réel avec ip a avant d'écrire quoi que ce soit.
  • La passerelle oubliée — sans gateway, la machine communique dans son LAN mais ne sort pas.
🌍 Pourquoi eth0 a disparu

Autrefois, les interfaces étaient numérotées dans l'ordre de détection au démarrage : eth0, eth1… Problème : cet ordre pouvait changer d'un démarrage à l'autre sur une machine à plusieurs cartes, et la configuration se retrouvait appliquée à la mauvaise interface. Les noms actuels — enp0s3, ens33 — encodent l'emplacement physique de la carte (bus, slot) : ils sont laids, mais ils ne bougent jamais.

Statique ou DHCP ?

Adresse statiqueDHCP
PourServeurs, imprimantes, routeurs, switchs Postes de travail, portables, mobiles
AvantageAdresse stable et prévisible : les clients et le DNS la retrouvent toujoursAucune configuration manuelle, aucun conflit
InconvénientÀ documenter, sous peine de conflit d'adresses L'adresse peut changer — inacceptable pour un service

Sur un serveur accessible en permanence, l'adressage statique est indispensable.

⚡ Le récap en 2 minutes

  • Unix 1969, réécrit en C en 1973 pour la portabilité. Linux = un noyau (Torvalds) + une distribution.
  • Tout est fichier, tout part de /, tout est sensible à la casse.
  • $ = utilisateur simple, # = root. Syntaxe : commande [option] [paramètres].
  • À retenir : /etc configuration · /home utilisateurs · /bin commandes · /sbin commandes admin · /dev périphériques.
  • apt update = catalogue, apt upgrade = installation. Jamais l'un sans l'autre.
  • PID unique, & pour l'arrière-plan, Ctrl+Z suspend, kill termine.
  • root a l'UID 0. sudo pour une commande, usermod -aG pour ajouter à un groupe.
  • r=4, w=2, x=1. Sur un répertoire : r liste, x traverse.
  • Serveur = IP statique, dans /etc/network/interfaces, sans oublier auto ni gateway.

Sources exploitées

  • 1-Cours-Administration des systèmes Linux.pdf — le professeur
  • 1-1-Memo-Commande_base.pdf — tutos-info.fr, Debian 12
  • 1-2-TP-Permission.pdf · 1-2-TP_accès_Sécurité_linux.pdf
  • Adresse IP statique sur Linux.pdf
  • Test Linux.pdf — évaluation notée
  • Arborescence.docx · Les Commandes.docx · Les Permissions.docx