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).
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.
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.
| Distribution | Origine | Remarque |
|---|---|---|
| Red Hat Linux | États-Unis | Référence en entreprise |
| Fedora | — | Version libre de Red Hat |
| Debian | Internet | Communautaire — celle des TP du BTS |
| Ubuntu | — | Dérivée de Debian |
| Mandrake Linux | France | Devenue Mandriva |
| SuSE Linux | Allemagne | |
| KNOPPIX, Slackware, Mandriva | — |
La position du noyau dans une distribution
| Élément | Rôle |
|---|---|
| Noyau Linux | Gère la machine et ses ressources |
| Shell | Interpré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
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é$ 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
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)
└──────────── commande03Le 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.
À éviter : ? * &
` ' " < >, les
caractères accentués et les espaces.
À utiliser : A-Z a-z 0-9, le
soulignement _, le tiret - et le point ..
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
| Chemin | Contenu |
|---|---|
. | Le répertoire actuel |
.. | Le répertoire parent |
~ | Le répertoire personnel |
/boot | Fichiers nécessaires au démarrage du système |
/bin | Commandes de base (binaires) |
/sbin | Commandes du super-utilisateur |
/usr/bin, /usr/sbin | Autres fichiers binaires |
/etc | Fichiers de configuration du système et des services |
/home | Répertoires personnels des utilisateurs simples |
/root | Répertoire personnel de l'administrateur |
/usr | Reste des programmes du système et logiciels |
/dev | Noms 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.
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 partition04Les commandes de base
Se repérer et se déplacer
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édentLe 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
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 ⚠ DANGERLe 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 pasIl 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
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'écranArrêter et redémarrer
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)| Touche | Effet |
|---|---|
| TAB | Autocomplé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+C | Arrêter la commande en cours |
| Ctrl+A | Curseur en début de ligne |
| Ctrl+E | Curseur en fin de ligne |
| Ctrl+D | Fermer la session |
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.
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.
| Format | Distributions | Outil |
|---|---|---|
| RPM (Red Hat Package Manager) | Red Hat, Fedora, SuSE, Mandriva | rpm -i paquet.rpm, dnf, yum |
| DPKG (Debian Package) | Debian, Knoppix, Kaella, Ubuntu | dpkg, 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.
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 paquetupdate ≠ upgradeapt 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.
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.
| Type | Caracté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ée | Signification |
|---|---|
| PID | Process Identifier — numéro unique pour chaque processus |
| PPID | Parent PID — le PID du processus « père » |
| État | Prêt (Ready), Actif, Endormi (Sleep), Attente E/S… |
| Terminal | Le terminal depuis lequel le processus a été lancé |
| Priorité | Liée à son contexte d'exécution |
| Taille mémoire | Occupation en mémoire |
| UID | User Identifier — l'utilisateur qui a lancé le processus |
| GID | Group Identifier — le groupe propriétaire du processus |
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.
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 recoursCtrl+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.
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.
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 utilisateursudo 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
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 bobGé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
audiopermet d'utiliser les périphériques audio ; - faire partie de
lpadminpermet de configurer les imprimantes ; - faire partie de
sudopermet… d'utilisersudo.
Chaque utilisateur fait partie de son propre groupe, créé à son nom.
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 !-a n'est pas optionnelleusermod -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
| Fichier | Contenu |
|---|---|
/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/group | La 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
$ 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 fichierLes 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égorie | Qui | Droit | Sur un fichier | Sur un répertoire | Valeur | |
|---|---|---|---|---|---|---|
u | User — le propriétaire | r | Lire le contenu | Lister le contenu | 4 | |
g | Group — l'équipe | w | Modifier | Créer / supprimer des fichiers | 2 | |
o | Others — le reste du monde | x | Exécuter comme programme | Traverser (entrer dedans) | 1 |
Un fichier exécutable se lance avec ./fichier.
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 :
rsansx— je vois les noms mais je ne peux rien ouvrir.xsansr— 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
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.
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
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--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
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 contenuTrois 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.
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 groupePourquoi 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
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.
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.1sudo 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 configurationauto enp0s3manquante — 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.0sur une ligne séparée, pasaddress 10.0.0.10/24. - Le nom de l'interface —
eth0n'existe plus sur Debian récent. Relevez le nom réel avecip aavant d'écrire quoi que ce soit. - La passerelle oubliée — sans
gateway, la machine communique dans son LAN mais ne sort pas.
eth0 a disparuAutrefois, 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 statique | DHCP | |
|---|---|---|
| Pour | Serveurs, imprimantes, routeurs, switchs | Postes de travail, portables, mobiles |
| Avantage | Adresse stable et prévisible : les clients et le DNS la retrouvent toujours | Aucune 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.