Entretien

Questions Linux en entretien : 24 questions avec réponses

Mis à jour: · Skillaria.Top

En entretien sur Linux, on interroge le plus souvent sur la structure du système de fichiers et les inodes, les liens durs et symboliques, les droits et sudo, les processus et les signaux, le démarrage du système, ainsi que le réseau : comment vérifier les ports ouverts, comment fonctionne la résolution DNS et que faire lorsqu'un serveur est injoignable.

Les questions sur Linux reviennent en entretien pour les ingénieurs DevOps, les administrateurs système, les SRE et les développeurs back-end. Les recruteurs attendent rarement que vous connaissiez les options par cœur : ils veulent savoir si vous comprenez le fonctionnement du système et si vous savez trouver la cause d'un problème. Voici les questions Linux d'entretien les plus fréquentes, des plus basiques aux plus diagnostiques, avec réponses et commandes.

Conseil : en répondant, citez la commande que vous utiliseriez pour vérifier votre affirmation. La phrase « je vérifierais avec ss -tlnp » est bien plus convaincante que des généralités.

Système de fichiers

1. Qu'est-ce que la FHS, et que trouve-t-on dans les principaux répertoires ?

FHS (Filesystem Hierarchy Standard) est la norme qui définit l'organisation des répertoires. Toute l'arborescence part de la racine / ; il n'existe pas de lecteurs identifiés par des lettres — les autres systèmes de fichiers sont montés dans des répertoires de l'arborescence.

  • /etc — configuration du système et des services ;
  • /var — données variables : journaux (/var/log), cache, files d'attente, bases de données ;
  • /home — répertoires personnels des utilisateurs, /root — répertoire personnel de root ;
  • /usr — programmes et bibliothèques ; /bin et /sbin sont en général, sur les distributions récentes, des liens vers /usr/bin et /usr/sbin ;
  • /tmp — fichiers temporaires, /boot — noyau et chargeur d'amorçage ;
  • /proc et /sys — systèmes de fichiers virtuels contenant des informations sur les processus et le noyau, /dev — fichiers de périphériques.

2. Qu'est-ce qu'un inode ?

Un inode est une structure du système de fichiers qui stocke les métadonnées d'un fichier : type, droits, propriétaire, taille, dates, nombre de liens physiques et pointeurs vers les blocs de données. Le nom du fichier n'est pas dans l'inode : le nom est conservé dans le répertoire sous la forme « nom → numéro d'inode ».

Le numéro d'inode s'affiche avec ls -i, les détails avec stat fichier. Le nombre d'inodes d'un système de fichiers est limité, et df -i indique combien sont utilisés. D'où la situation classique : « il reste de la place sur le disque, mais je ne peux pas créer de fichier » — les inodes sont épuisés à cause de millions de petits fichiers.

3. En quoi un lien physique diffère-t-il d'un lien symbolique ?

Un lien physique (ln fichier lien) est un autre nom pour le même inode. Les deux noms sont équivalents, et les données ne sont supprimées que lorsque le compteur de liens atteint zéro. Limites : on ne peut pas créer de lien physique vers un répertoire, ni franchir les limites d'un système de fichiers.

Un lien symbolique (ln -s cible lien) est un fichier distinct, avec son propre inode, qui contient le chemin de la cible. Il peut pointer vers un répertoire et vers un autre système de fichiers, mais il « casse » si la cible est supprimée ou déplacée.

4. Le disque est plein, mais du affiche moins que df. Pourquoi ?

Le plus souvent, un fichier a été supprimé alors qu'un processus le tient encore ouvert — par exemple, le gros journal d'un service en cours d'exécution a été effacé. Le nom a disparu, donc du ne le voit plus, mais les blocs restent occupés, et df les comptabilise.

Pour trouver ces fichiers : lsof +L1 ou lsof | grep deleted. La solution consiste à redémarrer le processus, ou à tronquer le fichier via son descripteur : : > /proc/PID/fd/N. À l'avenir, les journaux doivent être vidés avec truncate ou par la rotation de logrotate, et non avec rm.

5. Comment se déroule le démarrage de Linux ?

Le micrologiciel (BIOS ou UEFI) initialise le matériel et transmet la main au chargeur d'amorçage, en général GRUB. Le chargeur lit sa configuration, puis charge en mémoire le noyau et l'initramfs — un système de fichiers racine temporaire contenant les pilotes nécessaires pour accéder à la vraie racine.

Le noyau initialise les périphériques, monte le système de fichiers racine et lance le premier processus de l'espace utilisateur, de PID 1 — sur la plupart des distributions, c'est systemd. Il démarre les services jusqu'à la cible par défaut, par exemple multi-user.target. La durée de chaque étape s'affiche avec systemd-analyze.

6. À quoi sert la commande mount, et où se décrit le montage automatique ?

mount rattache un système de fichiers présent sur un périphérique à un répertoire (point de montage) : mount /dev/sdb1 /mnt/data. Les montages en cours s'affichent avec findmnt ou avec mount sans argument.

Le montage au démarrage se décrit dans /etc/fstab. Il vaut mieux y indiquer les périphériques par UUID (affiché par blkid) plutôt que par un nom comme /dev/sdb1, qui peut changer. Avant un redémarrage, on vérifie les modifications avec mount -a : une erreur dans fstab peut bloquer le démarrage.

Utilisateurs et droits

7. Comment sont organisés les droits d'accès sous Linux ?

Chaque fichier possède un propriétaire, un groupe et trois ensembles de droits : pour le propriétaire, pour le groupe et pour les autres. Chaque ensemble comprend r (lecture), w (écriture) et x (exécution). En notation numérique, r=4, w=2, x=1 ; ainsi chmod 640 fichier donne au propriétaire la lecture et l'écriture, au groupe la lecture, et aux autres rien.

$ ls -l app.conf
-rw-r----- 1 deploy www-data 512 Oct 12 10:03 app.conf

Le propriétaire se change avec chown utilisateur:groupe fichier, les droits avec chmod.

8. Que signifient r, w et x pour un répertoire ?

Pour un répertoire, le sens est différent : r — on peut obtenir la liste des noms, w — on peut créer, supprimer et renommer les fichiers qu'il contient, x — on peut entrer dans le répertoire et accéder aux fichiers par leur nom.

Conséquence importante : on peut supprimer un fichier si l'on a le droit d'écriture sur le répertoire, même si le fichier ne nous appartient pas. Sans x sur le répertoire, r ne sert à rien : les noms sont visibles, mais les fichiers ne peuvent pas être ouverts.

9. Qu'appelle-t-on SUID, SGID et le sticky bit ?

SUID sur un exécutable lance le programme avec les droits de son propriétaire, et non de l'utilisateur. L'exemple classique est /usr/bin/passwd : il appartient à root et peut modifier /etc/shadow. SGID sur un fichier fait de même pour le groupe ; sur un répertoire, il fait hériter aux nouveaux fichiers le groupe du répertoire, ce qui est pratique pour les dossiers partagés.

Le sticky bit sur un répertoire n'autorise la suppression de fichiers qu'à leur propriétaire, même si le répertoire est accessible en écriture à tous. C'est le cas de /tmp : ls -ld /tmp affiche drwxrwxrwt. Pour auditer tous les fichiers SUID : find / -perm -4000 -type f 2>/dev/null.

10. Qu'est-ce que umask ?

umask est un masque qui retire des droits aux nouveaux fichiers et répertoires. Les droits de base sont 666 pour les fichiers et 777 pour les répertoires ; umask retire des bits. Avec la valeur habituelle 022, les fichiers sont créés en 644 et les répertoires en 755. La valeur actuelle s'affiche avec la commande umask.

11. Où sont stockés les utilisateurs et les mots de passe ?

Les comptes sont dans /etc/passwd : nom, UID, GID du groupe principal, répertoire personnel et shell. Les empreintes des mots de passe sont séparées dans /etc/shadow, que seul root peut lire — ainsi, les utilisateurs ordinaires n'ont pas accès aux empreintes pour les attaquer par force brute. Les groupes sont décrits dans /etc/group.

Les informations sur un utilisateur se consultent commodément avec id utilisateur et getent passwd utilisateur — la seconde commande tient compte aussi des sources externes comme LDAP.

12. Comment fonctionne sudo, et pourquoi est-ce mieux que de se connecter en root ?

sudo exécute une commande au nom d'un autre utilisateur (par défaut root) selon les règles de /etc/sudoers et des fichiers de /etc/sudoers.d/. L'utilisateur saisit son propre mot de passe, et non celui de root ; chaque action est consignée dans le journal avec le nom de la personne qui l'a effectuée.

Une règle peut tout autoriser (alena ALL=(ALL:ALL) ALL) ou seulement certaines commandes. On modifie sudoers uniquement avec visudo : il vérifie la syntaxe avant l'enregistrement, et une erreur ne vous privera pas de sudo. Sous Ubuntu, les droits d'administration s'obtiennent par l'appartenance au groupe sudo, sur les systèmes de type RHEL au groupe wheel.

13. Comment ajouter un utilisateur à un groupe, et pourquoi les modifications ne prennent-elles pas effet ?

La commande usermod -aG docker alena ajoute l'utilisateur à un groupe supplémentaire. L'option -a est indispensable : sans elle, -G remplace toute la liste des groupes.

Les modifications prennent effet à la prochaine connexion : la session en cours conserve l'ancienne liste de groupes. Vous pouvez vous reconnecter, ou ouvrir un shell avec le nouveau groupe grâce à newgrp docker. Vérification avec id.

Processus

14. Qu'est-ce qu'un processus et un PID, et comment lister les processus ?

Un processus est un programme en cours d'exécution, doté de son propre espace d'adressage, de fichiers ouverts et d'un identifiant PID. Chaque processus a un parent (PPID) ; l'ancêtre commun est le processus de PID 1. La liste des processus s'obtient avec ps aux et ps -ef, l'arborescence avec pstree ou ps -ef --forest, et en temps réel avec top et htop.

15. Quelle différence entre les signaux SIGTERM et SIGKILL ?

kill PID envoie par défaut SIGTERM (15) — une demande polie de se terminer. Le processus peut l'intercepter, fermer ses connexions, sauvegarder ses données et quitter. SIGKILL (9, kill -9) ne peut pas être intercepté : le noyau arrête le processus immédiatement, sans nettoyage.

L'ordre correct : d'abord SIGTERM, et seulement si le processus ne réagit pas, SIGKILL. Un autre signal courant est SIGHUP : de nombreux démons relisent leur configuration à sa réception.

16. Qu'est-ce qu'un processus zombie ?

Un zombie est un processus déjà terminé dont le parent n'a pas encore lu le code de retour avec l'appel wait(). Il n'utilise presque aucune ressource, mais garde une entrée dans la table des processus. Dans ps, son état est Z.

On ne peut pas tuer un zombie : il est déjà mort. Il faut que le parent l'« enterre » — corriger le programme parent, ou arrêter le parent ; le zombie est alors adopté par le PID 1, qui le supprime.

17. Que montre la charge moyenne (load average) ?

Les trois nombres affichés par uptime et top donnent le nombre moyen de processus en attente d'exécution sur 1, 5 et 15 minutes. Sous Linux, on y compte aussi les processus en attente ininterruptible (état D), en général l'attente d'un disque.

On compare cette valeur au nombre de cœurs (nproc) : une charge de 4 sur 4 cœurs représente une utilisation complète, sur 16 cœurs seulement un quart. Une charge élevée avec une faible utilisation du processeur signale un problème d'entrées-sorties ; on le vérifie avec iostat ou la colonne wa de top.

Réseau

18. Comment voir les adresses IP, les routes et les ports ouverts ?

Les adresses des interfaces s'obtiennent avec ip a, la table de routage avec ip r. Les anciennes commandes ifconfig et netstat du paquet net-tools ne sont pas installées par défaut sur beaucoup de distributions.

Les ports en écoute et les processus qui les ouvrent s'affichent avec ss -tlnp : t — TCP, l — uniquement les ports en écoute, n — sans résolution des noms, p — avec le processus. Pour l'UDP : ss -ulnp.

$ sudo ss -tlnp
State  Recv-Q Send-Q Local Address:Port Peer Address:Port Process
LISTEN 0      511          0.0.0.0:80        0.0.0.0:*     users:(("nginx",pid=812,fd=6))
LISTEN 0      128          0.0.0.0:22        0.0.0.0:*     users:(("sshd",pid=640,fd=3))

19. Un service écoute sur 127.0.0.1:8080 — peut-on s'y connecter depuis l'extérieur ?

Non. L'adresse 127.0.0.1 est l'interface de boucle locale, accessible uniquement depuis la même machine. Pour accepter des connexions externes, le service doit écouter sur l'adresse de l'interface externe ou sur 0.0.0.0 (toutes les adresses IPv4). C'est une cause fréquente de « le port est ouvert, mais de l'extérieur ça ne marche pas », à côté du pare-feu.

20. Comment Linux transforme-t-il un nom d'hôte en adresse IP ?

L'ordre des sources est défini par la ligne hosts: de /etc/nsswitch.conf : en général le fichier /etc/hosts d'abord, puis le DNS. Les adresses des serveurs DNS sont lues dans /etc/resolv.conf ; sur les systèmes avec systemd-resolved, ce fichier pointe vers l'adresse locale 127.0.0.53, et les serveurs réels s'affichent avec resolvectl status.

Pour tester, on utilise dig example.com ou dig @1.1.1.1 example.com (requête vers un serveur précis). Subtilité importante : dig et nslookup interrogent le DNS directement et ne lisent pas /etc/hosts, alors que getent hosts example.com emprunte le même chemin que les applications.

21. En quoi TCP diffère-t-il d'UDP ?

TCP établit une connexion (poignée de main en trois temps : SYN, SYN-ACK, ACK), garantit la livraison et l'ordre des données, et renvoie les paquets perdus. HTTP, SSH et la plupart des bases de données reposent dessus. UDP envoie des datagrammes sans connexion ni garanties, mais avec des délais plus faibles — il sert pour les requêtes DNS, les appels vidéo et les jeux.

22. Un site ne s'ouvre pas. Comment cherchez-vous la cause ?

On parcourt les couches, du nom jusqu'à l'application :

  1. Le nom se résout-il : dig site.example, l'adresse obtenue est-elle la bonne ?
  2. L'hôte est-il joignable : ping (peut être bloqué), traceroute ou mtr.
  3. Le port est-il ouvert : nc -zv hote 443 ou curl -v https://site.example.
  4. Sur le serveur : le service tourne-t-il (systemctl status nginx), le port est-il en écoute (ss -tlnp), le pare-feu bloque-t-il (sudo nft list ruleset, sudo ufw status).
  5. Les journaux de l'application et journalctl -u du service.

Ce qui compte pour l'interlocuteur, c'est l'ordre méthodique, et non une liste précise d'outils.

23. Qu'est-ce que l'état TIME_WAIT ?

Après la fermeture d'une connexion TCP, le côté qui a fermé en premier garde le socket en état TIME_WAIT pendant un certain temps, afin que des paquets retardés de l'ancienne connexion n'arrivent pas dans une nouvelle connexion avec les mêmes adresses et ports. Un grand nombre de TIME_WAIT est normal pour un serveur très sollicité ou un client qui ouvre beaucoup de connexions courtes. On peut les compter avec ss -tan state time-wait | wc -l.

24. Quelle différence entre /etc/hosts et le DNS, et quand utiliser le premier ?

/etc/hosts est une table locale et statique « adresse — nom » sur une machine donnée. Elle est consultée avant le DNS (avec un nsswitch standard) et sert aux tests : par exemple, pour faire pointer un domaine vers un nouveau serveur avant de modifier les enregistrements DNS. Le DNS est un système distribué dont toutes les réponses sont vues par tous les clients. Une erreur dans /etc/hosts est une cause fréquente de la situation « chez moi le site s'ouvre, chez les autres non ».

Synthèse

Les questions Linux en entretien évaluent trois choses : votre compréhension du modèle du système (inodes, droits, processus, démarrage), votre connaissance des outils de diagnostic (ss, dig, journalctl, lsof) et votre capacité à chercher la cause pas à pas. Répondez avec des commandes et des exemples tirés de la pratique. Le système de fichiers, les droits et le réseau sont traités en détail et en pratique dans notre cours sur Linux.

Questions fréquentes

Que demande-t-on sur Linux en entretien pour un poste DevOps junior ?

En général les bases : navigation et droits, gestion des processus et systemctl, lecture des journaux, outils réseau ip, ss, dig et curl, notions de scripts bash. On donne souvent une tâche pratique du type « trouvez ce qui remplit le disque ».

Faut-il connaître par cœur les options des commandes ?

Non, il est acceptable de dire que vous vérifieriez l'option dans man. Ce qui compte davantage, c'est de comprendre quel outil résout la tâche et ce que signifie sa sortie.

Quelle distribution Linux apprendre pour un entretien ?

N'importe quelle distribution serveur répandue convient : Ubuntu ou Debian, ou une distribution compatible RHEL comme Rocky Linux. Les bases sont communes ; les différences portent surtout sur le gestionnaire de paquets et le nom de certains services.

Comment se préparer à la partie pratique d'un entretien sur Linux ?

Installez une machine virtuelle et résolvez de vraies tâches : configurer un serveur web comme service systemd, vous connecter par clé SSH, paramétrer un pare-feu, trouver le processus qui occupe un port. Expliquer à voix haute ce que vous faites fait aussi partie de la préparation.