← Réseaux & systèmes

Système de fichiers & navigation Linux

Sommaire

Arborescence, chemins, commandes fondamentales, puis le cœur de l'administration Linux : les droits et la gestion des comptes.

1. Arborescence Linux

Linux utilise une arborescence unique qui démarre à la racine /. Contrairement à Windows, il n'y a pas de lettres de lecteur : les disques et partitions sont montés quelque part dans cette arborescence.

RépertoireRôle
/Racine globale du système
/homeRépertoires personnels des utilisateurs
/rootRépertoire personnel du superutilisateur
/bin, /usr/binExécutables des commandes
/sbinExécutables réservés à l'administration
/etcFichiers de configuration système
/varDonnées variables : journaux (/var/log), sites web, files d'attente
/tmpFichiers temporaires, vidés au redémarrage
/optLogiciels installés hors gestionnaire de paquets
/mnt, /mediaPoints de montage (manuels / amovibles)
/proc, /sysSystèmes de fichiers virtuels exposant l'état du noyau

2. Chemins absolus et relatifs

Raccourcis :

Le point d'attention classique : ./script.sh plutôt que script.sh. Le répertoire courant n'est pas dans la variable PATH, il faut donc dire explicitement au shell où chercher l'exécutable.

3. Commandes de navigation

pwd                   # afficher le répertoire courant
cd /var/www           # se déplacer
ls -la                # lister tous les fichiers, format long
mkdir -p a/b/c        # créer une arborescence complète
touch fichier.txt     # créer un fichier vide
cp -r source/ dest/   # copier (récursif pour un dossier)
mv fichier.txt /tmp/  # déplacer ou renommer
rm -rf dossier/       # supprimer récursivement, sans confirmation

Lire et rechercher

cat fichier.txt              # afficher tout le contenu
less /var/log/syslog         # affichage progressif (q pour quitter)
head -5 fichier.txt          # les 5 premières lignes
tail -f /var/log/syslog      # suivre un fichier en temps réel
nano fichier.txt             # éditer

find /home -name "*.txt"     # chercher par nom
find . -type f -mtime -7     # fichiers modifiés dans les 7 derniers jours
du -sh /var/log              # taille d'un répertoire
df -h                        # espace libre par partition

rm -rf ne demande aucune confirmation et ne passe par aucune corbeille. Toujours relire la commande avant de valider, en particulier si elle contient une variable ou un joker.

4. Droits et permissions

Chaque fichier appartient à un propriétaire et à un groupe. Trois droits sont définis pour trois catégories.

DroitSur un fichierSur un répertoire
r (read, 4)Lire le contenuLister le contenu
w (write, 2)Modifier le contenuCréer, renommer, supprimer à l'intérieur
x (execute, 1)Exécuter le fichierTraverser le répertoire (y entrer)

Les catégories sont u (propriétaire), g (groupe), o (autres), a (toutes).

-rwxr-x---  1  alice  devteam  4096  compile.sh
│└┬┘└┬┘└┬┘     └─┬─┘  └──┬──┘
│ u  g  o        │       └── groupe propriétaire
│                └────────── utilisateur propriétaire
└── type : - fichier, d répertoire, l lien symbolique

Ici : le propriétaire lit / écrit / exécute (7), le groupe lit et exécute (5), les autres n'ont rien (0) — soit 750.

chmod 750 compile.sh          # notation octale
chmod u+x,g-w compile.sh      # notation symbolique
chmod +x script.sh            # rendre exécutable (cas le plus fréquent)
chmod -R 755 site/            # récursif

chown alice fichier.txt              # changer le propriétaire
chown alice:devteam compile.sh       # propriétaire et groupe
chgrp devteam compile.sh             # groupe seulement

Piège du TP : retirer le droit x sur un répertoire le rend inaccessible même si r est présent. On peut lister son nom, mais pas y entrer ni lire les fichiers qu'il contient. Sur un répertoire, x est le droit de traversée.

5. Utilisateurs et groupes

sudo adduser etudiant1        # créer un utilisateur (interactif, crée le home)
sudo passwd etudiant1         # définir son mot de passe
su - etudiant1                # changer d'utilisateur
exit                          # revenir à la session précédente
id                            # UID, GID et groupes de l'utilisateur courant
whoami                        # nom de l'utilisateur courant

sudo groupadd devteam                 # créer un groupe
sudo usermod -aG devteam alice        # ajouter alice au groupe (secondaire)
sudo usermod -g devteam alice         # changer son groupe principal

L'option -a de usermod -aG est indispensable : sans elle, les groupes existants sont remplacés au lieu d'être complétés. Une modification de groupe ne prend effet qu'à la prochaine ouverture de session.

Les trois fichiers de référence

FichierContenu
/etc/passwdComptes : nom, UID, GID, home, shell. Lisible par tous.
/etc/groupGroupes et liste de leurs membres.
/etc/shadowMots de passe hachés et politique d'expiration. Lisible par root uniquement.
alice:x:1001:1001:Alice Martin:/home/alice:/bin/bash
  │   │  │    │        │             │          └── shell de connexion
  │   │  │    │        │             └───────────── répertoire personnel
  │   │  │    │        └─────────────────────────── commentaire (GECOS)
  │   │  │    └──────────────────────────────────── GID du groupe principal
  │   │  └───────────────────────────────────────── UID
  │   └──────────────────────────────────────────── mot de passe déporté dans /etc/shadow
  └──────────────────────────────────────────────── nom de connexion

Le x en deuxième champ signale que le mot de passe n'est pas là : il est dans /etc/shadow, illisible pour un utilisateur ordinaire. C'est ce qui empêche n'importe qui de récupérer les empreintes pour les casser hors ligne.

passwd                # changer son propre mot de passe
chage -l alice        # dates de dernière modification et d'expiration
sudo chage -M 90 alice   # durée de vie maximale du mot de passe

sudo

sudo exécute une commande avec les privilèges du superutilisateur, sous réserve d'appartenir au groupe sudo (Debian / Ubuntu) ou wheel. On l'utilise plutôt que de se connecter directement en root : chaque élévation est journalisée et rattachée à un compte nominatif, ce qui préserve l'imputabilité.

6. Gestion de paquets

sudo apt update                  # rafraîchir la liste des paquets disponibles
sudo apt upgrade                 # mettre à jour les paquets installés
sudo apt install htop            # installer
sudo apt remove htop             # désinstaller
sudo apt search mot-cle          # rechercher
dpkg -l | grep apache            # lister ce qui est installé

apt update ne met rien à jour : il actualise seulement le catalogue. C'est apt upgrade qui installe. Les deux s'enchaînent presque toujours.

7. Trouver de l'aide

man chmod             # manuel complet (q pour quitter, / pour chercher)
chmod --help          # aide courte
apropos permission    # chercher une commande par mot-clé
which ls              # emplacement de l'exécutable