30 min de lecture · 6 384 mots

Linux Serveur – Commandes système et administration

Guide de référence complet pour l’administration de serveurs Linux : commandes essentielles, gestion des fichiers, processus, réseau, systemd et sécurité.

Table des matières

# Afficher le répertoire courant
pwd

# Lister les fichiers
ls                    # Liste simple
ls -l                 # Liste détaillée (long format)
ls -la                # Inclure les fichiers cachés
ls -lh                # Tailles lisibles (human-readable)
ls -lt                # Trier par date de modification
ls -lS                # Trier par taille
ls -lR                # Récursif
ls -i                 # Afficher les inodes

# Changer de répertoire
cd /path/to/dir       # Aller vers un chemin absolu
cd ..                 # Remonter d'un niveau
cd ~                  # Aller au home directory
cd -                  # Retourner au répertoire précédent
cd                    # Aller au home (équivalent à cd ~)

# Créer des répertoires
mkdir dirname                    # Créer un répertoire
mkdir -p path/to/nested/dir     # Créer avec parents
mkdir -m 755 dirname            # Avec permissions spécifiques

# Supprimer
rm file.txt                     # Supprimer un fichier
rm -f file.txt                  # Force (sans confirmation)
rm -r directory/                # Récursif (répertoire)
rm -rf directory/               # Force récursif
rmdir emptydirectory/          # Supprimer répertoire vide

Copie et déplacement

# Copier
cp source.txt dest.txt          # Copier un fichier
cp -r sourcedir/ destdir/     # Copier récursivement
cp -p file.txt backup.txt       # Préserver attributs
cp -u source.txt dest.txt       # Copier si plus récent (update)
cp -v file.txt backup.txt       # Verbose
cp -a source/ dest/             # Archive (récursif + permissions)

# Déplacer/Renommer
mv old.txt new.txt              # Renommer
mv file.txt /path/to/dir/       # Déplacer
mv -n file.txt dest.txt         # Ne pas écraser (no-clobber)
mv -u source.txt dest.txt       # Déplacer si plus récent
mv -v file.txt new.txt          # Verbose

# Créer des liens
ln target.txt hardlink.txt      # Hard link
ln -s target.txt symlink.txt    # Symbolic link
ln -sf target.txt link.txt      # Force symbolic link

Affichage de contenu

# Lire des fichiers
cat file.txt                    # Afficher tout le contenu
cat file1.txt file2.txt         # Concaténer plusieurs fichiers
tac file.txt                    # Afficher à l'envers

# Pagination
less file.txt                   # Naviguer dans un fichier (q pour quitter)
more file.txt                   # Afficher page par page

# Début et fin de fichier
head file.txt                   # 10 premières lignes
head -n 20 file.txt             # 20 premières lignes
tail file.txt                   # 10 dernières lignes
tail -n 50 file.txt             # 50 dernières lignes
tail -f /var/log/syslog         # Suivre en temps réel (follow)
tail -F /var/log/app.log        # Follow avec retry si fichier recréé

# Compter
wc file.txt                     # Lignes, mots, caractères
wc -l file.txt                  # Nombre de lignes
wc -w file.txt                  # Nombre de mots
wc -c file.txt                  # Nombre de caractères

Recherche de fichiers

# Find : recherche de fichiers
find /path -name ".txt"                    # Par nom
find /path -iname ".TXT"                   # Insensible à la casse
find /path -type f                          # Fichiers seulement
find /path -type d                          # Répertoires seulement
find /path -type l                          # Liens symboliques
find /path -size +100M                      # Taille > 100MB
find /path -size -1M                        # Taille < 1MB
find /path -mtime -7                        # Modifié dans les 7 derniers jours
find /path -mtime +30                       # Modifié il y a plus de 30 jours
find /path -atime -1                        # Accédé dans les dernières 24h
find /path -user username                   # Par propriétaire
find /path -perm 644                        # Par permissions
find /path -empty                           # Fichiers/dossiers vides

# Actions sur les résultats
find /path -name ".log" -delete            # Supprimer
find /path -name ".txt" -exec chmod 644 {} ;  # Exécuter commande
find /path -type f -exec grep "pattern" {} +    # Grep sur résultats

# Locate (plus rapide, base de données)
updatedb                                     # Mettre à jour la base
locate filename                              # Rechercher
locate -i filename                           # Insensible à la casse
locate -c filename                           # Compter les résultats
locate -e filename                           # Vérifier existence

# Which : trouver l'emplacement d'une commande
which python                                 # Afficher le chemin
which -a python                              # Tous les chemins

# Whereis : localiser binaires, sources, man pages
whereis python

Permissions et propriété

Comprendre les permissions

Format: drwxrwxrwx
        ||||||||└── Other execute
        |||||||└─── Other write
        ||||||└──── Other read
        |||||└───── Group execute
        ||||└────── Group write
        |||└─────── Group read
        ||└──────── Owner execute
        |└───────── Owner write
        └────────── Owner read
        d = directory, - = file, l = link

Tableau des permissions numériques

Octal Binaire Permissions Description
0 000 Aucun
1 001 –x Execute
2 010 -w- Write
3 011 -wx Write + Execute
4 100 r– Read
5 101 r-x Read + Execute
6 110 rw- Read + Write
7 111 rwx All

Commandes chmod

# Mode symbolique
chmod u+x script.sh              # Ajouter exécution pour user
chmod g+w file.txt               # Ajouter écriture pour group
chmod o-r file.txt               # Retirer lecture pour others
chmod a+r file.txt               # Ajouter lecture pour all
chmod u=rwx,g=rx,o=r file.txt   # Définir explicitement

# Mode numérique (octal)
chmod 644 file.txt               # rw-r--r-- (fichier standard)
chmod 755 script.sh              # rwxr-xr-x (script exécutable)
chmod 700 private.txt            # rwx------ (privé)
chmod 777 file.txt               # rwxrwxrwx (tous accès - À ÉVITER)
chmod 600 ~/.ssh/idrsa          # rw------- (clé SSH privée)
chmod 644 ~/.ssh/idrsa.pub      # rw-r--r-- (clé SSH publique)

# Récursif
chmod -R 755 /var/www/html       # Récursif sur répertoire
chmod -R u+w directory/          # Ajouter write récursivement

# Permissions spéciales
chmod u+s file                   # SUID (Set User ID)
chmod g+s directory              # SGID (Set Group ID)
chmod +t directory               # Sticky bit
chmod 4755 file                  # SUID + 755
chmod 2755 directory             # SGID + 755
chmod 1777 /tmp                  # Sticky + 777

Commandes chown et chgrp

# Changer propriétaire
chown user file.txt              # Changer owner
chown user:group file.txt        # Changer owner et group
chown -R user:group directory/   # Récursif
chown --reference=ref.txt file.txt  # Copier ownership

# Changer groupe
chgrp group file.txt             # Changer group
chgrp -R group directory/        # Récursif

# Exemples pratiques
chown www-data:www-data /var/www/html  # Web files
chown -R nginx:nginx /var/www          # Nginx
chown mysql:mysql /var/lib/mysql       # MySQL

Permissions par défaut (umask)

# Afficher umask actuel
umask                            # Format octal (ex: 0022)
umask -S                         # Format symbolique (ex: u=rwx,g=rx,o=rx)

# Définir umask
umask 022                        # Fichiers: 644, Directories: 755
umask 002                        # Fichiers: 664, Directories: 775
umask 077                        # Fichiers: 600, Directories: 700

# Permanent (dans ~/.bashrc ou /etc/profile)
echo "umask 022" >> ~/.bashrc

ACL (Access Control Lists)

# Installer ACL
apt install acl                  # Debian/Ubuntu
yum install acl                  # RHEL/CentOS

# Afficher ACL
getfacl file.txt

# Définir ACL
setfacl -m u:username:rwx file.txt       # User ACL
setfacl -m g:groupname:rx file.txt       # Group ACL
setfacl -m o::r file.txt                  # Other ACL
setfacl -m d:u:username:rwx directory/   # Default ACL (héritage)
setfacl -R -m u:username:rwx directory/  # Récursif

# Supprimer ACL
setfacl -x u:username file.txt           # Supprimer entrée
setfacl -b file.txt                       # Supprimer toutes ACL

Recherche et manipulation de texte

Grep : recherche de motifs

# Recherche basique
grep "pattern" file.txt                  # Rechercher pattern
grep -i "pattern" file.txt               # Insensible à la casse
grep -v "pattern" file.txt               # Inverser (exclure)
grep -n "pattern" file.txt               # Afficher numéros de ligne
grep -c "pattern" file.txt               # Compter occurrences
grep -l "pattern" .txt                  # Fichiers contenant pattern
grep -L "pattern" .txt                  # Fichiers ne contenant pas

# Options avancées
grep -r "pattern" /path                  # Récursif
grep -R "pattern" /path                  # Récursif + symlinks
grep -w "word" file.txt                  # Mot entier
grep -x "line" file.txt                  # Ligne entière
grep -A 3 "pattern" file.txt             # 3 lignes après
grep -B 3 "pattern" file.txt             # 3 lignes avant
grep -C 3 "pattern" file.txt             # 3 lignes contexte

# Regex
grep -E "pattern|other" file.txt         # Extended regex (OR)
grep -E "^pattern" file.txt              # Début de ligne
grep -E "pattern$" file.txt              # Fin de ligne
grep -E "[0-9]{3}" file.txt              # 3 chiffres
egrep "pattern|other" file.txt           # Équivalent à grep -E

# Exemples pratiques
grep -r "error" /var/log/                # Chercher erreurs dans logs
grep -i "failed" /var/log/auth.log       # Tentatives échouées
ps aux | grep nginx                      # Processus nginx
netstat -tulpn | grep :80                # Port 80

Sed : édition de flux

# Substitution
sed 's/old/new/' file.txt                # Remplacer 1ère occurrence par ligne
sed 's/old/new/g' file.txt               # Remplacer toutes occurrences
sed 's/old/new/gi' file.txt              # Insensible à la casse
sed 's/old/new/2' file.txt               # Remplacer 2ème occurrence
sed -i 's/old/new/g' file.txt            # Modifier fichier en place
sed -i.bak 's/old/new/g' file.txt        # Avec backup

# Suppression
sed '/pattern/d' file.txt                # Supprimer lignes contenant pattern
sed '1d' file.txt                        # Supprimer ligne 1
sed '1,5d' file.txt                      # Supprimer lignes 1-5
sed '/^$/d' file.txt                     # Supprimer lignes vides
sed '/^#/d' file.txt                     # Supprimer commentaires

# Affichage
sed -n '1,10p' file.txt                  # Afficher lignes 1-10
sed -n '/pattern/p' file.txt             # Afficher lignes avec pattern

# Insertion/Ajout
sed '1iNew first line' file.txt         # Insérer avant ligne 1
sed '1aNew second line' file.txt        # Ajouter après ligne 1

# Exemples pratiques
sed 's/127.0.0.1/localhost/g' /etc/hosts
sed -i 's/#Port 22/Port 2222/g' /etc/ssh/sshdconfig
sed 's/^/  /' file.txt                   # Indenter chaque ligne

Awk : traitement de texte avancé

# Basiques
awk '{print}' file.txt                   # Afficher tout
awk '{print $1}' file.txt                # 1ère colonne
awk '{print $1, $3}' file.txt            # Colonnes 1 et 3
awk '{print $NF}' file.txt               # Dernière colonne
awk 'NR==1' file.txt                     # Ligne 1
awk 'NR>=1 && NR<=5' file.txt            # Lignes 1-5

# Avec conditions
awk '$3 > 100' file.txt                  # 3ème colonne > 100
awk '$1 == "root"' /etc/passwd           # 1ère colonne = root
awk 'length($0) > 80' file.txt           # Lignes > 80 caractères

# Séparateurs
awk -F: '{print $1}' /etc/passwd         # Séparateur :
awk -F, '{print $1, $2}' file.csv        # CSV

# Calculs
awk '{sum += $1} END {print sum}' file.txt       # Somme colonne 1
awk '{sum += $1} END {print sum/NR}' file.txt    # Moyenne
awk '{if ($1 > max) max = $1} END {print max}'   # Maximum

# Exemples pratiques
ps aux | awk '{print $1, $2, $11}'       # User, PID, command
df -h | awk '$5 > 80 {print $0}'         # Disques > 80%
awk -F: '$3 >= 1000 {print $1}' /etc/passwd  # Users normaux
netstat -an | awk '/ESTABLISHED/ {count++} END {print count}'

Cut : découper colonnes

cut -d: -f1 /etc/passwd                  # 1ère colonne, séparateur :
cut -d: -f1,3 /etc/passwd                # Colonnes 1 et 3
cut -c1-10 file.txt                      # Caractères 1-10
cut -f1,3 --output-delimiter=',' file.txt  # Changer délimiteur sortie

Sort et uniq

# Sort
sort file.txt                            # Trier alphabétiquement
sort -n file.txt                         # Trier numériquement
sort -r file.txt                         # Ordre inverse
sort -k2 file.txt                        # Trier par colonne 2
sort -u file.txt                         # Trier et supprimer doublons
sort -t: -k3 -n /etc/passwd              # Trier par UID

# Uniq (nécessite un sort avant)
sort file.txt | uniq                     # Supprimer doublons consécutifs
sort file.txt | uniq -c                  # Compter occurrences
sort file.txt | uniq -d                  # Afficher seulement doublons
sort file.txt | uniq -u                  # Afficher seulement uniques

Autres outils texte

# Tr : transformer caractères
tr 'a-z' 'A-Z' < file.txt                # Minuscules vers majuscules
tr -d '0-9' < file.txt                   # Supprimer chiffres
tr -s ' ' < file.txt                     # Squeeze espaces multiples

# Paste : fusionner lignes
paste file1.txt file2.txt                # Côte à côte
paste -d, file1.txt file2.txt            # Avec séparateur

# Join : jointure comme SQL
join file1.txt file2.txt

# Diff : comparer fichiers
diff file1.txt file2.txt                 # Différences
diff -u file1.txt file2.txt              # Unified format
diff -y file1.txt file2.txt              # Side by side
diff -r dir1/ dir2/                      # Récursif

Gestion des processus

Afficher les processus

# PS : liste statique
ps                                       # Processus du shell courant
ps aux                                   # Tous processus (BSD style)
ps -ef                                   # Tous processus (Unix style)
ps -u username                           # Processus d'un user
ps -C nginx                              # Processus par nom
ps --forest                              # Arborescence
ps -eo pid,ppid,cmd,%mem,%cpu            # Colonnes personnalisées

# Top : liste dynamique
top                                      # Vue interactive
top -u username                          # Filtrer par user
top -p 1234                              # Filtrer par PID

# Htop : version améliorée de top
htop                                     # Interface interactive (installer: apt install htop)

# Pstree : arborescence des processus
pstree                                   # Tous processus
pstree username                          # Par user
pstree -p                                # Avec PIDs

Commandes de gestion

# Kill : terminer processus
kill PID                                 # SIGTERM (15) - graceful
kill -9 PID                              # SIGKILL (9) - force
kill -15 PID                             # SIGTERM explicite
kill -HUP PID                            # SIGHUP (1) - reload config
killall nginx                            # Par nom de processus
killall -u username                      # Tous processus d'un user
pkill -f "pattern"                       # Par pattern de commande

# Nice et renice : priorité
nice -n 10 command                       # Lancer avec priorité basse
nice -n -10 command                      # Lancer avec priorité haute (root)
renice -n 5 -p PID                       # Changer priorité existant
renice -n 5 -u username                  # Pour un user

# Background et foreground
command &                                # Lancer en background
jobs                                     # Lister jobs background
fg %1                                    # Ramener job 1 en foreground
bg %1                                    # Continuer job 1 en background
Ctrl+Z                                   # Suspendre processus courant
disown                                   # Détacher du shell

# Nohup : continuer après déconnexion
nohup command &                          # Ignorer SIGHUP
nohup command > output.log 2>&1 &        # Avec redirection

Monitoring avancé

# Pidof : trouver PID par nom
pidof nginx

# Pgrep : trouver processus par pattern
pgrep nginx
pgrep -u username
pgrep -f "python script.py"

# Watch : exécuter périodiquement
watch -n 2 "ps aux | grep nginx"         # Toutes les 2 secondes
watch -d "netstat -an | grep ESTABLISHED"  # Highlighter différences

# Lsof : fichiers ouverts
lsof                                     # Tous fichiers ouverts
lsof /path/to/file                       # Qui utilise ce fichier
lsof -u username                         # Par user
lsof -p PID                              # Par PID
lsof -i :80                              # Port 80
lsof -i TCP:1-1024                       # Ports 1-1024
lsof -t -i :80                           # Juste les PIDs

# Fuser : identifier processus utilisant fichiers
fuser /path/to/file                      # PIDs utilisant fichier
fuser -k /path/to/file                   # Kill processus
fuser -v /var/log/syslog                 # Verbose
fuser 80/tcp                             # Port 80

Exemples pratiques

# Trouver et tuer processus
ps aux | grep nginx | grep -v grep | awk '{print $2}' | xargs kill

# Plus simple avec pkill
pkill -f nginx

# Redémarrer service zombie
systemctl restart servicename

# Processus consommant le plus de CPU
ps aux --sort=-%cpu | head -10

# Processus consommant le plus de mémoire
ps aux --sort=-%mem | head -10

# Compter processus par user
ps aux | awk '{print $1}' | sort | uniq -c | sort -rn

Gestion des utilisateurs

Utilisateurs

# Créer utilisateur
useradd username                         # Créer user minimal
useradd -m username                      # Avec home directory
useradd -m -s /bin/bash username         # Avec shell bash
useradd -m -G sudo,www-data username     # Avec groupes
useradd -m -d /custom/home username      # Home personnalisé
useradd -m -e 2025-12-31 username        # Avec expiration

# Modifier utilisateur
usermod -l newname oldname               # Renommer
usermod -d /new/home -m username         # Changer home
usermod -s /bin/zsh username             # Changer shell
usermod -aG sudo username                # Ajouter à groupe (append)
usermod -G group1,group2 username        # Définir groupes
usermod -L username                      # Verrouiller (lock)
usermod -U username                      # Déverrouiller (unlock)

# Supprimer utilisateur
userdel username                         # Supprimer (garde home)
userdel -r username                      # Supprimer avec home
userdel -f username                      # Force (même si connecté)

# Mot de passe
passwd username                          # Changer mot de passe
passwd -l username                       # Verrouiller
passwd -u username                       # Déverrouiller
passwd -d username                       # Supprimer mot de passe
passwd -e username                       # Forcer changement
chage -l username                        # Voir infos expiration
chage -M 90 username                     # Expiration 90 jours
chage -E 2025-12-31 username             # Date expiration compte

Groupes

# Créer groupe
groupadd groupname
groupadd -g 1500 groupname               # Avec GID spécifique

# Modifier groupe
groupmod -n newname oldname              # Renommer
groupmod -g 2000 groupname               # Changer GID

# Supprimer groupe
groupdel groupname

# Gérer membres
gpasswd -a username groupname            # Ajouter user
gpasswd -d username groupname            # Retirer user
gpasswd -M user1,user2 groupname         # Définir membres

# Lister groupes
groups username                          # Groupes d'un user
id username                              # Infos complètes (UID, GID, groupes)
getent group groupname                   # Détails d'un groupe
cat /etc/group                           # Tous les groupes

Informations utilisateurs

# Who et w
who                                      # Utilisateurs connectés
who -b                                   # Dernier boot
w                                        # Users + activité
users                                    # Liste simple

# Last
last                                     # Historique connexions
last username                            # Connexions d'un user
last -n 10                               # 10 dernières
lastb                                    # Tentatives échouées
lastlog                                  # Dernière connexion de chaque user

# Fichiers système
cat /etc/passwd                          # Base utilisateurs
cat /etc/shadow                          # Mots de passe (root only)
cat /etc/group                           # Groupes
cat /etc/gshadow                         # Passwords groupes (root only)

Su et sudo

# Su : changer d'utilisateur
su                                       # Devenir root
su -                                     # Devenir root + env
su username                              # Devenir user
su - username                            # Devenir user + env

# Sudo : exécuter en tant que root
sudo command                             # Exécuter commande
sudo -u username command                 # En tant qu'autre user
sudo -i                                  # Shell root interactif
sudo -s                                  # Shell avec env user
sudo -l                                  # Lister permissions sudo
sudo -k                                  # Invalider cache sudo
sudo !!                                  # Réexécuter dernière commande

# Configurer sudo
visudo                                   # Éditer /etc/sudoers (safe)
# Ajouter user au groupe sudo
usermod -aG sudo username                # Debian/Ubuntu
usermod -aG wheel username               # RHEL/CentOS

# Exemples /etc/sudoers
# username ALL=(ALL:ALL) ALL             # Tous privilèges
# username ALL=(ALL) NOPASSWD: ALL       # Sans password
# %sudo ALL=(ALL:ALL) ALL                # Groupe sudo

Réseau et connectivité

Informations réseau

# IP et interfaces
ip addr                                  # Adresses IP
ip addr show eth0                        # Interface spécifique
ip link                                  # Interfaces réseau
ip link set eth0 up                      # Activer interface
ip link set eth0 down                    # Désactiver interface
ip route                                 # Table de routage
ip route add default via 192.168.1.1     # Ajouter route par défaut
ip neigh                                 # Table ARP

# Ifconfig (ancien, mais encore utilisé)
ifconfig                                 # Toutes interfaces
ifconfig eth0                            # Interface spécifique
ifconfig eth0 192.168.1.100              # Définir IP
ifconfig eth0 up                         # Activer
ifconfig eth0 down                       # Désactiver

# Hostname
hostname                                 # Afficher hostname
hostname newname                         # Changer (temporaire)
hostnamectl set-hostname newname         # Changer (permanent)
hostnamectl                              # Infos système

Tests de connectivité

# Ping
ping google.com                          # Test connectivité
ping -c 4 google.com                     # 4 paquets seulement
ping -i 0.2 google.com                   # Interval 0.2s
ping -s 1000 google.com                  # Taille paquet 1000 bytes

# Traceroute
traceroute google.com                    # Route vers destination
traceroute -n google.com                 # Sans résolution DNS
tracepath google.com                     # Alternative (pas besoin root)

# MTR : combinaison ping + traceroute
mtr google.com                           # Interactif
mtr -r -c 10 google.com                  # Report mode, 10 cycles

Ports et connexions

# Netstat (ancien)
netstat -tulpn                           # Écoute TCP/UDP + programmes
netstat -an                              # Toutes connexions
netstat -r                               # Table routage
netstat -i                               # Statistiques interfaces
netstat -s                               # Statistiques par protocole

# SS (moderne, remplace netstat)
ss -tulpn                                # Écoute TCP/UDP + programmes
ss -an                                   # Toutes connexions
ss -t                                    # TCP seulement
ss -u                                    # UDP seulement
ss -l                                    # Listening seulement
ss -p                                    # Afficher processus
ss -s                                    # Statistiques
ss state established                     # Connexions établies
ss dst 192.168.1.100                     # Destination spécifique
ss sport :80                             # Port source 80

# Nmap : scanner de ports
nmap localhost                           # Scanner local
nmap 192.168.1.0/24                      # Scanner réseau
nmap -p 80,443 target.com                # Ports spécifiques
nmap -p- target.com                      # Tous les ports
nmap -sV target.com                      # Détecter versions
nmap -O target.com                       # Détecter OS
nmap -A target.com                       # Scan agressif

# Lsof pour réseau
lsof -i                                  # Toutes connexions
lsof -i :80                              # Port 80
lsof -i TCP                              # TCP seulement
lsof -i @192.168.1.100                   # Vers IP spécifique

DNS

# Nslookup
nslookup google.com                      # Requête DNS
nslookup google.com 8.8.8.8              # Serveur DNS spécifique

# Dig (plus détaillé)
dig google.com                           # Requête A
dig google.com MX                        # Requête MX
dig google.com ANY                       # Tous enregistrements
dig @8.8.8.8 google.com                  # Serveur DNS spécifique
dig +short google.com                    # Résultat court
dig -x 8.8.8.8                           # Reverse DNS

# Host
host google.com                          # Requête simple
host -t MX google.com                    # Type spécifique
host 8.8.8.8                             # Reverse lookup

Transfert de fichiers

# Wget
wget https://example.com/file.zip        # Télécharger
wget -O custom.zip https://url           # Nom personnalisé
wget -c https://url                      # Continuer téléchargement
wget -r https://site.com                 # Récursif (site entier)
wget --limit-rate=200k https://url       # Limiter vitesse
wget -b https://url                      # Background

# Curl
curl https://example.com                 # Afficher contenu
curl -O https://example.com/file.zip     # Télécharger (nom original)
curl -o custom.zip https://url           # Nom personnalisé
curl -I https://example.com              # Headers seulement
curl -L https://example.com              # Suivre redirections
curl -u user:pass https://url            # Avec authentification
curl -X POST -d "data" https://api.com   # POST request

# Rsync
rsync -av source/ dest/                  # Archive verbose
rsync -avz source/ dest/                 # Avec compression
rsync -avz --delete source/ dest/        # Supprimer fichiers extra
rsync -avz -e ssh source/ user@host:/path/  # Via SSH
rsync --progress source/ dest/           # Avec progression

# SCP
scp file.txt user@host:/path/            # Copier vers serveur
scp user@host:/path/file.txt .           # Copier depuis serveur
scp -r directory/ user@host:/path/       # Récursif
scp -P 2222 file.txt user@host:/path/    # Port personnalisé

Configuration réseau

# NetworkManager (Ubuntu/Fedora)
nmcli device status                      # État interfaces
nmcli connection show                    # Connexions
nmcli connection up connectionname      # Activer connexion
nmcli connection down connectionname    # Désactiver
nmcli device wifi list                   # Réseaux WiFi
nmcli device wifi connect SSID password PASSWORD

# Netplan (Ubuntu 18.04+)
# Éditer /etc/netplan/.yaml
sudo netplan apply                       # Appliquer config

# Fichiers de configuration
/etc/network/interfaces                  # Debian/Ubuntu (ancien)
/etc/sysconfig/network-scripts/          # RHEL/CentOS
/etc/netplan/                            # Ubuntu moderne
/etc/resolv.conf                         # Serveurs DNS
/etc/hosts                               # Résolution locale

Systemd et services

Gestion des services

# Systemctl : contrôle des services
systemctl start servicename             # Démarrer
systemctl stop servicename              # Arrêter
systemctl restart servicename           # Redémarrer
systemctl reload servicename            # Recharger config
systemctl status servicename            # État
systemctl enable servicename            # Activer au boot
systemctl disable servicename           # Désactiver au boot
systemctl is-active servicename         # Vérifier si actif
systemctl is-enabled servicename        # Vérifier si enabled

# Lister services
systemctl list-units --type=service      # Tous services actifs
systemctl list-units --type=service --all  # Tous services
systemctl list-unit-files --type=service # Tous avec état enabled/disabled
systemctl list-dependencies servicename # Dépendances

# Services courants
systemctl status nginx                   # Nginx
systemctl status apache2                 # Apache
systemctl status mysql                   # MySQL
systemctl status postgresql              # PostgreSQL
systemctl status ssh                     # SSH server
systemctl status cron                    # Cron daemon

Journalctl : logs systemd

# Afficher logs
journalctl                               # Tous logs
journalctl -u nginx                      # Service spécifique
journalctl -u nginx -f                   # Follow (temps réel)
journalctl -b                            # Boot actuel
journalctl -b -1                         # Boot précédent
journalctl --since "2024-12-01"          # Depuis date
journalctl --since "1 hour ago"          # Depuis 1 heure
journalctl --until "2024-12-31"          # Jusqu'à date
journalctl -p err                        # Priorité error
journalctl -p err -b                     # Errors du boot actuel
journalctl -k                            # Kernel messages
journalctl PID=1234                     # Par PID
journalctl UID=1000                     # Par UID

# Options d'affichage
journalctl -n 50                         # 50 dernières lignes
journalctl -r                            # Ordre inverse
journalctl -o json                       # Format JSON
journalctl -o json-pretty                # JSON indenté
journalctl --disk-usage                  # Utilisation disque
journalctl --vacuum-time=7d              # Nettoyer > 7 jours
journalctl --vacuum-size=500M            # Limiter à 500M

Créer un service systemd

# Créer fichier /etc/systemd/system/myapp.service
sudo nano /etc/systemd/system/myapp.service
[Unit]
Description=My Application
After=network.target

[Service]
Type=simple
User=www-data
Group=www-data
WorkingDirectory=/var/www/myapp
ExecStart=/usr/bin/node /var/www/myapp/server.js
Restart=always
RestartSec=10
StandardOutput=journal
StandardError=journal
SyslogIdentifier=myapp

[Install]
WantedBy=multi-user.target
# Activer le service
sudo systemctl daemon-reload             # Recharger configuration
sudo systemctl enable myapp              # Activer au boot
sudo systemctl start myapp               # Démarrer
sudo systemctl status myapp              # Vérifier état

Timers systemd (remplace cron)

# Créer timer /etc/systemd/system/backup.timer
[Unit]
Description=Backup Timer

[Timer]
OnCalendar=daily
OnCalendar=-- 02:00:00
Persistent=true

[Install]
WantedBy=timers.target

# Créer service /etc/systemd/system/backup.service
[Unit]
Description=Backup Service

[Service]
Type=oneshot
ExecStart=/usr/local/bin/backup.sh

# Activer
systemctl enable backup.timer
systemctl start backup.timer
systemctl list-timers                    # Lister timers

Targets (runlevels)

systemctl get-default                    # Target par défaut
systemctl set-default multi-user.target  # Définir target
systemctl isolate multi-user.target      # Changer immédiatement

# Targets communs
# poweroff.target (runlevel 0)
# rescue.target (runlevel 1)
# multi-user.target (runlevel 3)
# graphical.target (runlevel 5)
# reboot.target (runlevel 6)

Logs et monitoring

Fichiers de logs standards

# Logs système principaux
/var/log/syslog                          # Messages système (Debian/Ubuntu)
/var/log/messages                        # Messages système (RHEL/CentOS)
/var/log/auth.log                        # Authentification (Debian/Ubuntu)
/var/log/secure                          # Authentification (RHEL/CentOS)
/var/log/kern.log                        # Messages kernel
/var/log/dmesg                           # Messages boot kernel
/var/log/boot.log                        # Boot

# Services
/var/log/apache2/                        # Apache (Debian/Ubuntu)
/var/log/httpd/                          # Apache (RHEL/CentOS)
/var/log/nginx/                          # Nginx
/var/log/mysql/                          # MySQL
/var/log/postgresql/                     # PostgreSQL

# Applications
/var/log/cron                            # Cron jobs
/var/log/mail.log                        # Mail
/var/log/daemon.log                      # Daemons

Commandes de lecture de logs

# Tail : suivre en temps réel
tail -f /var/log/syslog                  # Suivre logs système
tail -n 100 /var/log/auth.log            # 100 dernières lignes
tail -f /var/log/nginx/access.log        # Access log nginx

# Grep dans logs
grep "error" /var/log/syslog             # Rechercher erreurs
grep -i "failed" /var/log/auth.log       # Tentatives échouées
grep "$(date '+%b %e')" /var/log/syslog  # Logs du jour

# Zgrep : grep dans fichiers compressés
zgrep "error" /var/log/syslog.1.gz

# Exemples pratiques
tail -f /var/log/syslog | grep --line-buffered "error"  # Filter en temps réel
grep "Failed password" /var/log/auth.log | awk '{print $11}' | sort | uniq -c | sort -rn  # IPs tentatives échouées

Logrotate : rotation de logs

# Configuration globale
cat /etc/logrotate.conf

# Configurations spécifiques
ls /etc/logrotate.d/

# Exemple de configuration
sudo nano /etc/logrotate.d/myapp
/var/log/myapp/.log {
    daily
    rotate 14
    compress
    delaycompress
    missingok
    notifempty
    create 0640 www-data www-data
    sharedscripts
    postrotate
        systemctl reload myapp > /dev/null
    endscript
}
# Tester configuration
logrotate -d /etc/logrotate.conf         # Dry run
logrotate -f /etc/logrotate.conf         # Forcer rotation

Monitoring système

# Uptime : temps de fonctionnement
uptime                                   # Uptime + load average
uptime -p                                # Pretty format
uptime -s                                # Date de démarrage

# Load average
cat /proc/loadavg                        # Load 1min, 5min, 15min

# Free : mémoire
free                                     # Mémoire disponible
free -h                                  # Human-readable
free -m                                  # En MB
free -g                                  # En GB
free -s 2                                # Refresh toutes les 2s

# Vmstat : statistiques virtuelles
vmstat                                   # Vue d'ensemble
vmstat 2                                 # Refresh toutes les 2s
vmstat -s                                # Statistiques détaillées
vmstat -d                                # Statistiques disques

# Iostat : I/O statistiques
iostat                                   # Vue d'ensemble
iostat -x                                # Extended
iostat -x 2                              # Refresh 2s
iostat -c                                # CPU seulement
iostat -d                                # Disques seulement

# Mpstat : statistiques CPU
mpstat                                   # Vue d'ensemble
mpstat -P ALL                            # Tous CPUs
mpstat 2                                 # Refresh 2s

# Sar : System Activity Reporter
sar                                      # Activité CPU
sar -r                                   # Mémoire
sar -d                                   # Disques
sar -n DEV                               # Réseau
sar -q                                   # Load average
sar -f /var/log/sysstat/sa01             # Fichier spécifique

Disques et stockage

Informations disques

# Df : espace disque
df                                       # Tous systèmes de fichiers
df -h                                    # Human-readable
df -T                                    # Avec types FS
df -i                                    # Inodes
df -h /var                               # Partition spécifique

# Du : utilisation disque
du -sh /path                             # Taille totale
du -h /path                              # Tailles détaillées
du -h --max-depth=1 /path                # 1 niveau
du -ah /path | sort -rh | head -20       # 20 plus gros
ncdu /path                               # Navigateur interactif (installer: apt install ncdu)

# Lsblk : périphériques blocs
lsblk                                    # Vue arborescence
lsblk -f                                 # Avec filesystems
lsblk -o NAME,SIZE,TYPE,MOUNTPOINT       # Colonnes personnalisées

# Fdisk : partitions
sudo fdisk -l                            # Lister toutes partitions
sudo fdisk /dev/sda                      # Mode interactif

# Blkid : UUID et types
sudo blkid                               # Tous périphériques
sudo blkid /dev/sda1                     # Partition spécifique

Montage et démontage

# Mount : monter filesystem
mount                                    # Lister montages
sudo mount /dev/sdb1 /mnt                # Monter partition
sudo mount -t ext4 /dev/sdb1 /mnt        # Avec type
sudo mount -o ro /dev/sdb1 /mnt          # Read-only
sudo mount -a                            # Monter tout (/etc/fstab)

# Umount : démonter
sudo umount /mnt                         # Démonter
sudo umount /dev/sdb1                    # Par device
sudo umount -l /mnt                      # Lazy unmount
sudo umount -f /mnt                      # Force

# Fstab : montages automatiques
cat /etc/fstab
sudo nano /etc/fstab

# Exemple ligne fstab
# UUID=xxx  /mnt/data  ext4  defaults  0  2
# device    mountpoint type  options   dump pass

Partitionnement

# Fdisk : MBR (< 2TB)
sudo fdisk /dev/sdb
# Commandes: n (nouvelle), d (supprimer), w (écrire), q (quitter)

# Parted : GPT (> 2TB)
sudo parted /dev/sdb
# mklabel gpt
# mkpart primary ext4 0% 100%
# quit

# Créer filesystem
sudo mkfs.ext4 /dev/sdb1                 # ext4
sudo mkfs.xfs /dev/sdb1                  # XFS
sudo mkfs.btrfs /dev/sdb1                # Btrfs
sudo mkfs.ntfs /dev/sdb1                 # NTFS
sudo mkfs.vfat -F 32 /dev/sdb1           # FAT32

# Vérifier filesystem
sudo fsck /dev/sdb1                      # Generic
sudo e2fsck -f /dev/sdb1                 # ext2/3/4
sudo xfsrepair /dev/sdb1                # XFS

LVM (Logical Volume Manager)

# Physical Volumes
sudo pvcreate /dev/sdb                   # Créer PV
sudo pvdisplay                           # Afficher PVs
sudo pvs                                 # Liste courte

# Volume Groups
sudo vgcreate vgdata /dev/sdb           # Créer VG
sudo vgdisplay                           # Afficher VGs
sudo vgextend vgdata /dev/sdc           # Étendre VG
sudo vgs                                 # Liste courte

# Logical Volumes
sudo lvcreate -L 10G -n lvdata vgdata  # Créer LV 10GB
sudo lvcreate -l 100%FREE -n lvdata vgdata  # Utiliser tout l'espace
sudo lvdisplay                           # Afficher LVs
sudo lvextend -L +5G /dev/vgdata/lvdata  # Étendre +5GB
sudo lvextend -l +100%FREE /dev/vgdata/lvdata  # Utiliser espace libre
sudo lvs                                 # Liste courte

# Resize filesystem après lvextend
sudo resize2fs /dev/vgdata/lvdata      # ext2/3/4
sudo xfsgrowfs /mount/point             # XFS

# Supprimer
sudo lvremove /dev/vgdata/lvdata       # Supprimer LV
sudo vgremove vgdata                    # Supprimer VG
sudo pvremove /dev/sdb                   # Supprimer PV

RAID logiciel

# Créer RAID
sudo mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sdb /dev/sdc  # RAID 1

# Informations
sudo mdadm --detail /dev/md0
cat /proc/mdstat

# Ajouter/retirer disque
sudo mdadm --add /dev/md0 /dev/sdd
sudo mdadm --fail /dev/md0 /dev/sdb
sudo mdadm --remove /dev/md0 /dev/sdb

# Sauvegarder configuration
sudo mdadm --detail --scan >> /etc/mdadm/mdadm.conf

Sauvegardes et archives

Tar : archives

# Créer archive
tar -cvf archive.tar directory/          # Créer
tar -czvf archive.tar.gz directory/      # Créer + gzip
tar -cjvf archive.tar.bz2 directory/     # Créer + bzip2
tar -cJvf archive.tar.xz directory/      # Créer + xz

# Extraire
tar -xvf archive.tar                     # Extraire
tar -xzvf archive.tar.gz                 # Extraire gzip
tar -xjvf archive.tar.bz2                # Extraire bzip2
tar -xJvf archive.tar.xz                 # Extraire xz
tar -xvf archive.tar -C /path            # Extraire vers path

# Lister contenu
tar -tvf archive.tar                     # Lister
tar -tzvf archive.tar.gz                 # Lister gzip

# Ajouter à archive existante
tar -rvf archive.tar newfile.txt

# Extraire fichier spécifique
tar -xvf archive.tar file.txt
tar -xvf archive.tar --wildcards ".txt"

# Options:
# c = create, x = extract, t = list
# v = verbose, f = file
# z = gzip, j = bzip2, J = xz

Compression

# Gzip
gzip file.txt                            # Compresser (supprime original)
gzip -k file.txt                         # Keep original
gzip -9 file.txt                         # Compression maximale
gunzip file.txt.gz                       # Décompresser
gzip -d file.txt.gz                      # Décompresser (alt)
zcat file.txt.gz                         # Lire sans décompresser

# Bzip2
bzip2 file.txt                           # Compresser
bunzip2 file.txt.bz2                     # Décompresser
bzcat file.txt.bz2                       # Lire sans décompresser

# Xz (meilleure compression)
xz file.txt                              # Compresser
unxz file.txt.xz                         # Décompresser
xzcat file.txt.xz                        # Lire sans décompresser

# Zip
zip archive.zip file1.txt file2.txt      # Créer zip
zip -r archive.zip directory/            # Récursif
unzip archive.zip                        # Extraire
unzip -l archive.zip                     # Lister contenu
unzip archive.zip -d /path               # Extraire vers path

Rsync : synchronisation

# Local
rsync -av source/ dest/                  # Archive mode, verbose
rsync -avz source/ dest/                 # Avec compression
rsync -av --delete source/ dest/         # Supprimer fichiers en extra
rsync -av --dry-run source/ dest/        # Simulation
rsync -av --exclude=".tmp" source/ dest/  # Exclure pattern
rsync -av --exclude-from=exclude.txt source/ dest/  # Fichier d'exclusion

# Remote (SSH)
rsync -avz source/ user@host:/path/      # Upload
rsync -avz user@host:/path/ dest/        # Download
rsync -avz -e "ssh -p 2222" source/ user@host:/path/  # Port custom

# Options utiles
rsync -av --progress source/ dest/       # Avec progression
rsync -av --partial source/ dest/        # Reprendre transferts interrompus
rsync -av --bwlimit=1000 source/ dest/   # Limiter bande passante (KB/s)
rsync -av --backup --backup-dir=../backup source/ dest/  # Backup avant écrasement

# Backup incrémental
rsync -av --link-dest=/backup/latest source/ /backup/$(date +%Y%m%d)/

Scripts de backup

#!/bin/bash
# backup.sh - Script de backup simple

BACKUPDIR="/backup"
SOURCEDIR="/var/www"
DATE=$(date +%Y%m%d%H%M%S)
BACKUPFILE="backup$DATE.tar.gz"
RETENTIONDAYS=7

# Créer backup
tar -czf $BACKUPDIR/$BACKUPFILE $SOURCEDIR

# Supprimer anciens backups
find $BACKUPDIR -name "backup.tar.gz" -mtime +$RETENTIONDAYS -delete

# Log
echo "Backup created: $BACKUPFILE" >> /var/log/backup.log

Sécurité et firewall

SSH sécurisé

# Configuration SSH (/etc/ssh/sshdconfig)
sudo nano /etc/ssh/sshdconfig

# Recommandations:
# Port 2222                              # Changer port
# PermitRootLogin no                     # Désactiver root login
# PasswordAuthentication no              # Désactiver password auth
# PubkeyAuthentication yes               # Activer key auth
# AllowUsers user1 user2                 # Whitelist users
# MaxAuthTries 3                         # Limiter tentatives

# Redémarrer SSH
sudo systemctl restart sshd

# Générer clé SSH
ssh-keygen -t ed25519 -C "email@example.com"  # Ed25519 (recommandé)
ssh-keygen -t rsa -b 4096 -C "email@example.com"  # RSA 4096

# Copier clé publique vers serveur
ssh-copy-id user@host
ssh-copy-id -i ~/.ssh/ided25519.pub user@host

# Se connecter
ssh user@host
ssh -p 2222 user@host                    # Port custom
ssh -i ~/.ssh/customkey user@host       # Clé spécifique

UFW (Uncomplicated Firewall)

# Activer/Désactiver
sudo ufw enable                          # Activer
sudo ufw disable                         # Désactiver
sudo ufw status                          # État
sudo ufw status verbose                  # Détaillé
sudo ufw status numbered                 # Avec numéros

# Règles basiques
sudo ufw allow 22                        # Autoriser port 22
sudo ufw allow 80/tcp                    # Autoriser port 80 TCP
sudo ufw allow ssh                       # Par nom de service
sudo ufw allow http                      # HTTP
sudo ufw allow https                     # HTTPS
sudo ufw deny 23                         # Bloquer port 23

# Plages de ports
sudo ufw allow 6000:6007/tcp             # Plage de ports

# Par IP
sudo ufw allow from 192.168.1.100        # IP spécifique
sudo ufw allow from 192.168.1.0/24       # Subnet
sudo ufw allow from 192.168.1.100 to any port 22  # IP vers port

# Supprimer règles
sudo ufw delete allow 80                 # Par règle
sudo ufw delete 3                        # Par numéro
sudo ufw reset                           # Reset tout

# Default policies
sudo ufw default deny incoming           # Bloquer entrant par défaut
sudo ufw default allow outgoing          # Autoriser sortant par défaut

# Exemples pratiques
sudo ufw allow 22/tcp                    # SSH
sudo ufw allow 80/tcp                    # HTTP
sudo ufw allow 443/tcp                   # HTTPS
sudo ufw allow 3306/tcp                  # MySQL (depuis localhost only recommandé)
sudo ufw allow from 192.168.1.0/24 to any port 3306  # MySQL depuis LAN

Iptables (avancé)

# Lister règles
sudo iptables -L                         # Lister
sudo iptables -L -v                      # Verbose
sudo iptables -L -n                      # Pas de résolution DNS
sudo iptables -L INPUT --line-numbers    # Avec numéros

# Autoriser trafic
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT   # Port 22
sudo iptables -A INPUT -s 192.168.1.0/24 -j ACCEPT   # Depuis subnet
sudo iptables -A INPUT -i lo -j ACCEPT               # Loopback

# Bloquer trafic
sudo iptables -A INPUT -s 192.168.1.100 -j DROP      # Bloquer IP
sudo iptables -A INPUT -p tcp --dport 23 -j DROP     # Bloquer port

# Supprimer règle
sudo iptables -D INPUT 3                 # Par numéro
sudo iptables -D INPUT -p tcp --dport 22 -j ACCEPT  # Par spécification

# Policies par défaut
sudo iptables -P INPUT DROP              # Bloquer entrant
sudo iptables -P FORWARD DROP            # Bloquer forward
sudo iptables -P OUTPUT ACCEPT           # Autoriser sortant

# Sauvegarder/Restaurer
sudo iptables-save > /etc/iptables/rules.v4
sudo iptables-restore < /etc/iptables/rules.v4

# Flush (tout supprimer)
sudo iptables -F                         # Flush toutes chaînes
sudo iptables -X                         # Supprimer chaînes custom

Fail2ban : protection brute force

# Installer
sudo apt install fail2ban                # Debian/Ubuntu
sudo yum install fail2ban                # RHEL/CentOS

# Configuration
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo nano /etc/fail2ban/jail.local

# Exemple configuration SSH
[sshd]
enabled = true
port = ssh
logpath = /var/log/auth.log
maxretry = 3
bantime = 3600
findtime = 600

# Commandes
sudo systemctl start fail2ban
sudo systemctl enable fail2ban
sudo fail2ban-client status              # État global
sudo fail2ban-client status sshd         # État jail SSH
sudo fail2ban-client set sshd unbanip 192.168.1.100  # Débannir IP

Mises à jour de sécurité

# Debian/Ubuntu
sudo apt update                          # Mettre à jour liste
sudo apt upgrade                         # Installer updates
sudo apt dist-upgrade                    # Upgrade distribution
sudo apt autoremove                      # Supprimer paquets inutiles
sudo apt autoclean                       # Nettoyer cache

# Unattended upgrades (auto-updates)
sudo apt install unattended-upgrades
sudo dpkg-reconfigure unattended-upgrades

# RHEL/CentOS
sudo yum update                          # Mettre à jour
sudo yum upgrade                         # Upgrade
sudo yum clean all                       # Nettoyer cache

# Vérifier si reboot nécessaire
cat /var/run/reboot-required             # Ubuntu
sudo needs-restarting -r                 # RHEL/CentOS 7+

Audit de sécurité

# Lynis : audit de sécurité
sudo apt install lynis
sudo lynis audit system                  # Audit complet

# Vérifier ports ouverts
sudo ss -tulpn                           # Ports en écoute
sudo netstat -tulpn                      # Alternative

# Vérifier utilisateurs sans mot de passe
sudo awk -F: '($2 == "") {print $1}' /etc/shadow

# Vérifier fichiers SUID
find / -perm -4000 -type f 2>/dev/null

# Vérifier fichiers world-writable
find / -type f -perm -002 2>/dev/null

# Dernières connexions
last | head -20
lastb | head -20                         # Tentatives échouées

Performance et optimisation

CPU et load

# Load average
uptime                                   # Load 1, 5, 15 min
cat /proc/loadavg

# Nombre de CPU
nproc                                    # Nombre de CPU
lscpu                                    # Infos CPU détaillées
cat /proc/cpuinfo                        # Toutes infos CPU

# Top processus CPU
ps aux --sort=-%cpu | head -10
top -b -n 1 | head -20

Mémoire

# Usage mémoire
free -h                                  # Vue d'ensemble
cat /proc/meminfo                        # Détails

# Top processus mémoire
ps aux --sort=-%mem | head -10

# Cache
sync                                     # Flush filesystem buffers
echo 3 > /proc/sys/vm/dropcaches        # Clear cache (root)
# 1 = pagecache, 2 = dentries/inodes, 3 = both

Disque I/O

# Iostat
iostat -x 2                              # Extended, refresh 2s
iostat -xz 2                             # Exclure devices inactifs

# Iotop : top pour I/O (installer: apt install iotop)
sudo iotop                               # Interactif
sudo iotop -o                            # Seulement processus actifs

# Identifier processus I/O intensifs
sudo iotop -b -n 1 | head -20

Réseau

# Bande passante
ifconfig eth0                            # RX/TX bytes
ip -s link show eth0                     # Statistiques

# Iftop : bandwidth monitoring (installer: apt install iftop)
sudo iftop                               # Interactif
sudo iftop -i eth0                       # Interface spécifique

# Nethogs : par processus (installer: apt install nethogs)
sudo nethogs                             # Usage réseau par processus

Optimisation système

# Swappiness (tendance à swapper)
cat /proc/sys/vm/swappiness              # Valeur actuelle (défaut 60)
sudo sysctl vm.swappiness=10             # Temporaire
echo "vm.swappiness=10" | sudo tee -a /etc/sysctl.conf  # Permanent

# File descriptors
ulimit -n                                # Limite actuelle
sudo nano /etc/security/limits.conf
#  soft nofile 65536
#  hard nofile 65536

# Kernel parameters
sudo sysctl -a                           # Tous paramètres
sudo sysctl net.ipv4.ipforward          # Paramètre spécifique
sudo sysctl -w net.ipv4.ipforward=1     # Modifier temporaire
sudo nano /etc/sysctl.conf               # Permanent
sudo sysctl -p                           # Recharger config

Bonnes pratiques

Sécurité

  • Toujours utiliser SSH avec clés (pas de passwords)
  • Changer le port SSH par défaut
  • Configurer firewall (UFW/iptables)
  • Installer fail2ban
  • Mises à jour régulières
  • Sauvegardes régulières
  • Monitoring actif
  • Permissions appropriées (principe du moindre privilège)
  • Désactiver services inutiles
  • Audits de sécurité réguliers
  • Performance

  • Monitorer régulièrement (CPU, RAM, disque, réseau)
  • Optimiser swappiness
  • Nettoyer logs régulièrement
  • Utiliser logrotate
  • Optimiser services (désactiver inutiles)
  • Utiliser caching approprié
  • Partitionnement approprié
  • Choisir filesystem adapté (ext4, xfs, btrfs)
  • Maintenance

  • Sauvegardes régulières testées
  • Documentation des changements
  • Monitoring et alertes
  • Rotation de logs
  • Nettoyage régulier (/tmp, caches, logs)
  • Vérifier espace disque
  • Tester restauration backups
  • Planifier maintenance préventive

  • Pièges courants à éviter

  • Ne jamais faire rm -rf / ou rm -rf /*
  • Toujours vérifier avant dd (peut effacer disque)
  • Ne pas chmod 777 (insécure)
  • Ne pas désactiver SELinux/AppArmor sans raison
  • Ne pas modifier /etc/fstab sans backup (peut rendre système non bootable)
  • Toujours tester commandes destructives avec --dry-run quand disponible
  • Ne jamais stocker credentials en clair
  • Ne pas exposer services inutiles sur Internet
  • Toujours avoir une stratégie de backup
  • Ne pas ignorer les mises à jour de sécurité

  • Ressources essentielles

    Man pages

    man command                              # Manuel d'une commande
    man -k keyword                           # Rechercher dans man pages
    info command                             # Info pages (alternative)
    command --help                           # Aide rapide
    

    Chemins importants

    /etc/                                    # Configuration système
    /var/log/                                # Logs
    /var/www/                                # Web files (défaut)
    /home/                                   # Home directories
    /root/                                   # Home de root
    /tmp/                                    # Fichiers temporaires
    /opt/                                    # Applications optionnelles
    /usr/local/                              # Programmes installés localement
    

    Version : Compatible Linux Kernel 5.x/6.x, systemd, distributions modernes
    Dernière mise à jour : Décembre 2024

    Ce guide couvre les commandes essentielles et avancées pour l'administration de serveurs Linux en production.

    Une remarque, un retour ?

    Cet article est vivant — corrections, contre-arguments et retours de production sont les bienvenus. Trois canaux, choisissez celui qui vous convient.

    Laisser un commentaire