Ce que vous saurez faire
Ce tutoriel s’adresse aux administrateurs systeme des PME senegalaises qui gerent des serveurs Linux pour leur entreprise. Que vous administriez un serveur web pour une boutique en ligne a Dakar, un serveur de fichiers pour une fiduciaire a Thies, ou une machine de developpement pour une startup a Saint-Louis, la maitrise des commandes Linux essentielles est indispensable. Vous apprendrez a naviguer dans le systeme de fichiers, gerer les utilisateurs et permissions, surveiller les processus, configurer le reseau, installer des paquets, et diagnostiquer les problemes courants. A la fin de ce guide, vous disposerez d’une boite a outils complete de commandes pour administrer efficacement n’importe quel serveur Linux, que ce soit Ubuntu, Debian, CentOS ou Rocky Linux, qui sont les distributions les plus repandues dans l’hebergement africain.
Etape 1 : Se connecter et explorer l’environnement
Apres avoir accede au serveur via SSH, commencez par identifier l’environnement. La commande whoami retourne l’utilisateur courant, hostname le nom de la machine, et uname -a les informations du noyau. Ces commandes simples permettent de confirmer que vous etes connecte au bon serveur.
whoami hostname uname -a # Linux srv-ecom 5.15.0-88-generic #98-Ubuntu SMP x86_64 GNU/Linux cat /etc/os-release # PRETTY_NAME="Ubuntu 22.04.3 LTS" uptime # 14:23:01 up 45 days, 3:12, 2 users, load average: 0.15, 0.22, 0.18
La commande uptime affiche depuis combien de temps le serveur tourne et sa charge moyenne. Une charge superieure au nombre de CPU indique un serveur surcharge.
Etape 2 : Naviguer dans le systeme de fichiers
Les commandes de navigation sont pwd (repertoire courant), cd (changer de repertoire), et ls (lister). Utilisez toujours ls -lah pour voir les permissions, la taille lisible et les fichiers caches.
pwd # /home/admin cd /var/www/html ls -lah # drwxr-xr-x 5 www-data www-data 4.0K Apr 15 10:23 . # -rw-r--r-- 1 www-data www-data 12K Apr 15 10:20 index.php # -rw-r--r-- 1 www-data www-data 2.3K Apr 10 15:45 .htaccess cd ~ # Retour au home cd - # Retour au repertoire precedent tree -L 2 # Affiche l'arborescence sur 2 niveaux
Etape 3 : Rechercher des fichiers efficacement
Pour trouver des fichiers, utilisez find (recherche temps reel) ou locate (recherche par index). La commande find est plus puissante avec ses filtres.
# Trouver tous les fichiers .log modifies ces 7 derniers jours
find /var/log -name "*.log" -mtime -7
# Trouver les fichiers de plus de 100 Mo
find /var -type f -size +100M -exec ls -lh {} \;
# Trouver et supprimer les fichiers .tmp de plus de 30 jours
find /tmp -name "*.tmp" -mtime +30 -delete
# Recherche rapide par nom (necessite updatedb)
sudo updatedb
locate nginx.conf
Etape 4 : Rechercher du contenu avec grep
La commande grep recherche des motifs dans les fichiers. Combinee avec des pipes, elle devient un outil d’analyse puissant pour parcourir des logs ou du code.
# Rechercher "erreur" dans tous les logs grep -i "erreur" /var/log/syslog # Recherche recursive avec numeros de ligne grep -rn "TODO" /var/www/html/ # Afficher 3 lignes avant et apres chaque match grep -B 3 -A 3 "500 Internal" /var/log/nginx/access.log # Compter les requetes 404 du jour grep "$(date +%d/%b/%Y)" /var/log/nginx/access.log | grep -c " 404 " # Exclure certains motifs grep -v "healthcheck" /var/log/nginx/access.log
Etape 5 : Gerer les permissions et proprietes
Linux utilise un systeme de permissions base sur proprietaire/groupe/autres, avec lecture (r), ecriture (w), execution (x). Les commandes chmod et chown modifient ces attributs.
# Voir les permissions
ls -l script.sh
# -rw-r--r-- 1 admin admin 1.2K Apr 15 script.sh
# Rendre executable pour le proprietaire
chmod u+x script.sh
# Permissions standards pour un site web
sudo chown -R www-data:www-data /var/www/html
sudo find /var/www/html -type d -exec chmod 755 {} \;
sudo find /var/www/html -type f -exec chmod 644 {} \;
# Permission sensible pour cles SSH
chmod 600 ~/.ssh/id_rsa
chmod 700 ~/.ssh/
Les permissions 755 signifient rwxr-xr-x (proprietaire peut tout, autres peuvent lire et executer). Ne donnez jamais 777 en production.
Etape 6 : Gerer les utilisateurs et groupes
Pour creer un utilisateur employe sans acces root, utilisez adduser (interactif) ou useradd (scriptable). Ajoutez-le au groupe sudo uniquement si necessaire.
# Creer un nouvel utilisateur sudo adduser fatou # Set password, Full Name, etc. # Ajouter au groupe sudo (pouvoir admin) sudo usermod -aG sudo fatou # Verifier les groupes d'un utilisateur groups fatou # fatou : fatou sudo www-data # Lister tous les utilisateurs avec shell cat /etc/passwd | grep -v nologin # Changer le mot de passe sudo passwd fatou # Supprimer un utilisateur et son home sudo deluser --remove-home ancien_stagiaire
Etape 7 : Surveiller les processus
Les commandes ps, top, et htop listent les processus. htop est plus visuel mais doit etre installe. Utilisez kill pour terminer un processus.
# Installer htop sudo apt install htop -y htop # Interface interactive, q pour quitter # Lister tous les processus ps aux | head -20 # Chercher un processus specifique ps aux | grep nginx # Top 10 des processus consommant le plus de RAM ps aux --sort=-%mem | head -11 # Tuer un processus par PID kill 1234 kill -9 1234 # Force (SIGKILL) # Tuer par nom pkill -f "python mon_script"
Etape 8 : Surveiller disque et memoire
Sur un serveur de PME, le remplissage du disque est une cause frequente d’incident. Les commandes df et du permettent d’identifier les problemes avant qu’ils ne bloquent la production.
# Espace disque par partition df -h # /dev/sda1 50G 42G 5.5G 89% / # Taille des repertoires (tri decroissant) sudo du -h --max-depth=1 /var | sort -hr | head # 15G /var/log # 8.2G /var/lib/mysql # 3.1G /var/www # Memoire disponible free -h # total used free shared buff/cache available # Mem: 7.8Gi 2.1Gi 1.2Gi 0.3Gi 4.5Gi 5.2Gi # Activite en temps reel vmstat 2 5 # Stats toutes les 2s, 5 fois
Etape 9 : Gerer les paquets logiciels
Sur Debian/Ubuntu, utilisez apt. Sur CentOS/Rocky/RHEL, utilisez dnf ou yum. Mettez toujours l’index a jour avant d’installer.
# Debian/Ubuntu sudo apt update sudo apt upgrade -y sudo apt install nginx certbot python3-pip -y sudo apt remove --purge ancien_paquet apt list --installed | grep nginx # CentOS/Rocky/RHEL sudo dnf check-update sudo dnf update -y sudo dnf install nginx certbot sudo dnf remove ancien_paquet # Verifier les mises a jour de securite (Ubuntu) sudo unattended-upgrade --dry-run
Etape 10 : Configurer le reseau
Les commandes reseau essentielles incluent ip, ss, et ping. L’ancienne commande ifconfig est remplacee par ip sur les systemes modernes.
# Voir les interfaces
ip addr show
ip a # Forme courte
# Routes
ip route show
# Connexions ecoutees
sudo ss -tulpn
# tcp LISTEN 0 511 *:80 users:(("nginx",pid=1234))
# tcp LISTEN 0 128 *:22 users:(("sshd",pid=567))
# Tester la connectivite
ping -c 4 8.8.8.8
ping -c 4 google.com
# Tracer le chemin reseau
traceroute orange.sn
# DNS
dig itskillscenter.io
nslookup example.com
Etape 11 : Archiver et compresser
Les sauvegardes utilisent tar combine avec gzip. Pour une PME, la regle 3-2-1 s’applique : 3 copies, 2 supports, 1 hors-site.
# Creer une archive compressee tar -czvf backup_www_$(date +%F).tar.gz /var/www/html/ # Lister le contenu sans extraire tar -tzvf backup_www_2026-04-23.tar.gz | head # Extraire tar -xzvf backup_www_2026-04-23.tar.gz -C /tmp/restore/ # Compression individuelle gzip gros_fichier.log # devient gros_fichier.log.gz gunzip gros_fichier.log.gz # Format zip (compatible Windows) zip -r archive.zip dossier/ unzip archive.zip
Etape 12 : Consulter les logs
Les logs sont dans /var/log/. Sur les systemes modernes avec systemd, utilisez journalctl. Suivez un log en temps reel avec tail -f.
# Dernieres lignes d'un log tail -n 50 /var/log/syslog # Suivi en temps reel sudo tail -f /var/log/nginx/error.log # Logs d'un service via journalctl sudo journalctl -u nginx -f sudo journalctl -u mysql --since "1 hour ago" # Logs du boot courant sudo journalctl -b # Messages kernel dmesg | tail -30
Etape 13 : Gerer les services avec systemd
Systemd est le gestionnaire de services standard. Utilisez systemctl pour demarrer, arreter, et activer les services au boot.
# Statut d'un service sudo systemctl status nginx # Demarrer / arreter / redemarrer sudo systemctl start nginx sudo systemctl stop nginx sudo systemctl restart nginx sudo systemctl reload nginx # Sans interruption # Activer au demarrage sudo systemctl enable nginx sudo systemctl disable nginx # Lister tous les services actifs systemctl list-units --type=service --state=running # Services echoues systemctl --failed
Etape 14 : Raccourcis et productivite
Les alias et l’historique boostent votre efficacite. Ajoutez vos raccourcis dans ~/.bashrc.
# Editer le bashrc nano ~/.bashrc # Ajouter a la fin : alias ll='ls -lah' alias gs='git status' alias ports='sudo ss -tulpn' alias logs='sudo tail -f /var/log/syslog' # Recharger source ~/.bashrc # Historique des commandes history | tail -20 history | grep "apt install" # Retrouver une installation !123 # Rejouer la commande numero 123 de l'historique !! # Rejouer la derniere commande sudo !! # Rejouer avec sudo
Erreurs
Utiliser sudo sans comprendre : taper systematiquement sudo avant chaque commande cree des fichiers appartenant a root dans votre home, ce qui causera des problemes de permissions plus tard. Utilisez sudo uniquement pour les operations systeme.
rm -rf sans reflexion : la commande rm -rf /* ou pire rm -rf / detruit le systeme. Verifiez toujours votre chemin avant d’executer. En cas de doute, prefixez par ls pour voir ce qui sera supprime.
Ignorer les permissions : mettre 777 sur des fichiers web est une faille de securite majeure. Tout attaquant qui obtient une execution limitee peut alors modifier votre site. Respectez 644 pour les fichiers et 755 pour les dossiers.
Editer /etc/sudoers directement : n’utilisez jamais nano ou vim directement sur ce fichier. Une erreur de syntaxe peut vous bloquer l’acces sudo. Utilisez toujours sudo visudo qui valide la syntaxe avant de sauvegarder.
Ne pas verifier l’espace disque : un serveur dont le disque est plein refuse les connexions SSH, arrete MySQL, et bloque nginx. Surveillez avec df -h et mettez en place des alertes a 80% de remplissage.
Supprimer les logs manuellement : au lieu de rm /var/log/*.log, configurez logrotate. La suppression brutale peut laisser des descripteurs ouverts qui continuent a consommer de l’espace sans liberer.
Checklist
Commandes essentielles maitrisees : ls -lah, cd, pwd, find, grep.
Permissions comprises : 644 pour fichiers, 755 pour dossiers, 600 pour cles privees.
chown et chmod utilises correctement sur /var/www/html.
Utilisateur non-root cree avec sudo pour les operations quotidiennes.
Processus surveilles avec htop ou ps aux.
Espace disque verifie avec df -h, alerte configuree a 80%.
Memoire surveillee avec free -h.
Paquets mis a jour regulierement avec apt update && apt upgrade.
Services geres avec systemctl (start, enable, status).
Logs consultes via tail -f et journalctl -u service.
Ports ecoutes listes avec sudo ss -tulpn.
Sauvegardes creees avec tar -czvf et testees en restauration.
Alias productivite ajoutes dans ~/.bashrc.
sudo visudo utilise pour editer /etc/sudoers (jamais nano directement).
Historique exploite avec history | grep et !!.