Commandes Linux
Commandes essentielles Linux pour technicien TSSR — réseau, services, sécurité, gestion système
- Linux
- Bash
- Réseau
- SystemD
- Administration
ip a — Interfaces réseau
Affiche toutes les interfaces réseau et leurs adresses IP (remplace ifconfig).
ip a
ip addr show eth0
ip a | grep "inet "
Sortie typique :
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP>
inet 192.168.1.20/24 brd 192.168.1.255 scope global eth0
inet6 fe80::20c:29ff:feab:cdef/64 scope link
ip r — Table de routage
Affiche la table de routage et la passerelle par défaut.
ip r
ip route show
ip route add default via 192.168.1.1
ip route add 10.0.0.0/24 via 192.168.1.254
ping
Teste la connectivité ICMP vers un hôte.
ping 192.168.1.1
ping -c 4 8.8.8.8
ping -I eth0 192.168.1.1
-c 4: 4 paquets seulement —-I: forcer l’interface source.
traceroute
Affiche le chemin réseau hop par hop jusqu’à la destination.
traceroute 8.8.8.8
traceroute -n 8.8.8.8
mtr 8.8.8.8
-n: pas de résolution DNS —mtr: traceroute interactif en temps réel.
ss -tulnp — Ports et connexions
Affiche tous les ports en écoute et les connexions actives (remplace netstat).
ss -tulnp
ss -tlnp
ss -antp | grep :22
-t: TCP —-u: UDP —-l: en écoute —-n: numérique —-p: processus.
Sortie typique :
Netid State Local Address:Port Process
tcp LISTEN 0.0.0.0:22 sshd
tcp LISTEN 0.0.0.0:80 nginx
nmap — Scan réseau
Scanne les ports ouverts et détecte les services sur un hôte ou un réseau.
nmap 192.168.1.1
nmap -sV -p 22,80,443 192.168.1.0/24
nmap -A 192.168.1.10
nmap -sP 192.168.1.0/24
-sV: version des services —-A: détection OS + scripts —-sP: ping scan (hôtes actifs).
systemctl — Gestion des services
Démarre, arrête, active et inspecte les services avec SystemD.
systemctl status ssh
systemctl start nginx
systemctl stop nginx
systemctl restart apache2
systemctl enable ssh
systemctl disable firewalld
systemctl list-units --type=service --state=running
journalctl — Journaux système
Consulte les journaux SystemD (remplace /var/log/syslog pour les services SystemD).
journalctl -xe
journalctl -u nginx
journalctl -u ssh -n 50 --no-pager
journalctl --since "2024-01-01" --until "2024-01-02"
journalctl -f
-xe: erreurs récentes avec contexte —-u: service précis —-f: suivi en temps réel.
ufw — Pare-feu (Ubuntu/Debian)
Interface simplifiée pour iptables sur Ubuntu/Debian.
ufw status
ufw enable
ufw allow 22/tcp
ufw allow 80/tcp
ufw deny 23/tcp
ufw allow from 192.168.1.0/24 to any port 3306
ufw delete allow 80/tcp
iptables -L — Règles pare-feu (avancé)
Affiche et gère les règles de filtrage réseau bas niveau.
iptables -L -n -v
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -s 192.168.1.0/24 -j ACCEPT
iptables -P INPUT DROP
iptables-save > /etc/iptables/rules.v4
chmod / chown — Permissions
Modifie les droits d’accès et le propriétaire d’un fichier ou dossier.
chmod 755 script.sh
chmod -R 644 /var/www/html
chmod u+x deploy.sh
chown www-data:www-data /var/www/html
chown -R herve:herve /home/herve/projets
| Octal | Droits | Usage typique |
|---|---|---|
| 755 | rwxr-xr-x | Scripts, dossiers |
| 644 | rw-r—r— | Fichiers normaux |
| 600 | rw------- | Clés SSH, fichiers sensibles |
ps aux / kill — Processus
Liste les processus en cours et permet de les terminer.
ps aux
ps aux | grep nginx
kill 1234
kill -9 1234
pkill nginx
killall apache2
-9(SIGKILL) : force la fermeture immédiate sans nettoyage.
df -h / du -sh — Espace disque
Vérifie l’utilisation des disques et la taille des répertoires.
df -h
df -h /var
du -sh /var/log
du -sh /home/*
grep -r / find — Recherche
Recherche dans des fichiers ou dans l’arborescence.
grep -r "error" /var/log/
grep -i "failed password" /var/log/auth.log
find /etc -name "*.conf" -type f
find /home -name "*.sh" -mtime -7
find / -perm -4000 -type f 2>/dev/null
find / -perm -4000: fichiers SUID — important pour l’audit de sécurité.
ssh — Accès distant sécurisé
Ouvre une session chiffrée sur un hôte distant. Port par défaut : 22.
ssh herve@192.168.1.20
ssh -p 2222 herve@serveur.domaine.local
ssh -i ~/.ssh/id_rsa herve@192.168.1.20
ssh-keygen -t ed25519
ssh-copy-id herve@192.168.1.20
graph LR
Admin -->|1. TCP SYN port 22| Serveur
Admin -->|2. Echange cles DH| Serveur
Admin -->|3. Authentification| Serveur
Admin -->|4. Session AES etablie| Serveur
scp / rsync — Transfert de fichiers
Copie sécurisée de fichiers entre machines locales et distantes.
scp fichier.txt herve@192.168.1.20:/home/herve/
scp -r /local/dossier herve@serveur:/distant/
rsync -avz /source/ herve@192.168.1.20:/destination/
rsync -avz --delete /backup/ /mnt/nas/backup/
rsyncest préféré àscppour les gros volumes — il ne transfère que les différences.
crontab -e — Tâches planifiées
Planifie l’exécution automatique de scripts à intervalles réguliers.
crontab -e
crontab -l
crontab -l -u herve
Syntaxe d’une ligne cron :
# m h dom mois dow commande
0 3 * * * /usr/bin/rsync -a /data/ /backup/
*/5 * * * * /usr/local/bin/check-services.sh
0 0 1 * * certbot renew
Gestion des utilisateurs
Commandes pour créer, modifier, supprimer des comptes et gérer les droits d’accès sur Debian/Ubuntu.
whoami / id / who / w — Informations utilisateur
Identifie l’utilisateur courant et ses appartenances aux groupes.
whoami # nom de l'utilisateur courant
id # UID, GID et liste des groupes
id johndoe # infos d'un autre utilisateur
who # utilisateurs connectés en ce moment
w # connectés + commande en cours
Sortie typique de id :
uid=1000(herve) gid=1000(herve) groups=1000(herve),27(sudo),33(www-data)
id est le premier réflexe après usermod -aG sudo pour vérifier que l’utilisateur est bien dans le groupe. Si sudo n’apparaît pas, se déconnecter et se reconnecter.
getent passwd — Structure de /etc/passwd
Interroge la base des comptes — fonctionne aussi avec LDAP/AD si configuré, contrairement à cat /etc/passwd.
getent passwd johndoe # infos d'un utilisateur précis
getent passwd # tous les comptes
cat /etc/passwd # lecture directe (local uniquement)
Structure d’une ligne /etc/passwd :
herve:x:1000:1000:Herve Tssr:/home/herve:/bin/bash
^ ^ ^ ^ ^ ^ ^
nom pw uid gid description home shell
xdans le champ mot de passe signifie que le hash est stocké dans/etc/shadow.
last / lastlog — Historique des connexions
Consulte qui s’est connecté, quand et depuis où.
last # toutes les connexions récentes
last johndoe # connexions d'un utilisateur précis
last -n 10 # les 10 dernières
lastlog # dernière connexion de chaque compte
lastlog -u johndoe
last lit /var/log/wtmp, lastlog lit /var/log/lastlog. Le jury peut demander comment vérifier si un compte a été utilisé récemment ou détecter une intrusion.
groups / getent group — Consulter les groupes
Affiche les groupes et leur composition.
groups # groupes de l'utilisateur courant
groups johndoe # groupes d'un autre utilisateur
getent group sudo # membres du groupe sudo
getent group # tous les groupes
Structure d’une ligne /etc/group :
sudo:x:27:herve,johndoe
^ ^ ^ ^
nom pw gid membres
groupadd / groupmod / groupdel
Crée, renomme et supprime des groupes.
groupadd webadmins # créer un groupe
groupadd -g 1050 webadmins # avec GID précis
groupmod -n newname webadmins # renommer
groupdel webadmins # supprimer
Impossible de supprimer un groupe s’il est le groupe primaire d’un utilisateur. Changer d’abord avec usermod -g autregroupe johndoe.
usermod -aG — Ajouter un utilisateur à un groupe
usermod -aG sudo johndoe # ajouter au groupe sudo
usermod -aG sudo,www-data johndoe # plusieurs groupes à la fois
Le -a (append) est obligatoire avec -G. Sans -a, la commande retire johndoe de tous ses groupes existants sauf ceux listés. Erreur classique en examen.
Le changement prend effet à la prochaine connexion. Pour tester immédiatement :
newgrp sudoou ouvrir un nouveau terminal.
gpasswd — Gérer les membres d’un groupe
Alternative à usermod -aG pour ajouter ou retirer des membres.
gpasswd -a johndoe webadmins # ajouter un membre
gpasswd -d johndoe webadmins # retirer un membre
gpasswd -M herve,johndoe webadmins # définir la liste complète
useradd vs adduser — Créer un utilisateur
useradd est la commande bas niveau disponible sur toutes les distributions. adduser est un script interactif propre à Debian/Ubuntu qui appelle useradd avec des valeurs par défaut.
# useradd — bas niveau, non interactif, toutes distros
useradd -m -s /bin/bash -g users -G sudo johndoe
# adduser — interactif, crée home + groupe, demande le mdp
adduser johndoe
Options clés de useradd :
| Option | Rôle |
|---|---|
-m | Créer le répertoire home (/home/johndoe) |
-s | Shell par défaut (/bin/bash) |
-g | Groupe primaire |
-G | Groupes supplémentaires |
-u | UID précis |
-c | Commentaire / nom complet |
graph LR
A[useradd -m] --> B[passwd johndoe]
B --> C[usermod -aG sudo]
C --> D[Compte pret]
Le jury demande souvent la différence useradd / adduser. Réponse : useradd est universel et non interactif, adduser est Debian/Ubuntu uniquement, crée le home, le groupe primaire, et demande le mot de passe en mode interactif.
usermod — Modifier un compte existant
usermod -aG sudo johndoe # ajouter au groupe sudo
usermod -d /home/newdir -m johndoe # changer le home (et déplacer les fichiers)
usermod -s /bin/zsh johndoe # changer le shell
usermod -l newname johndoe # renommer le login
usermod -L johndoe # verrouiller le compte
usermod -U johndoe # déverrouiller
usermod -e 2025-12-31 johndoe # date d'expiration du compte
userdel — Supprimer un utilisateur
userdel johndoe # supprime le compte, laisse /home/johndoe intact
userdel -r johndoe # supprime le compte ET le répertoire home
userdel sans -r laisse les fichiers orphelins dans /home. Toujours utiliser -r en production, sauf si les données doivent être archivées avant suppression.
passwd / chage — Mots de passe et expiration
passwd change un mot de passe, chage gère la politique d’expiration.
passwd johndoe # changer le mdp (en tant que root)
passwd -l johndoe # verrouiller le compte
passwd -u johndoe # déverrouiller
passwd -e johndoe # forcer le changement au prochain login
chage -l johndoe # afficher la politique d'expiration
chage -M 90 johndoe # mdp expire tous les 90 jours
chage -W 7 johndoe # avertissement 7 jours avant expiration
chage -E 2025-12-31 johndoe # date d'expiration du compte
Structure d’une ligne /etc/shadow :
herve:$6$hash...:19800:0:90:7:::
^ ^ ^ ^ ^
hash sha512 modif min max warn
Le jury peut demander où sont stockés les hashs de mots de passe et quel algorithme. Réponse : /etc/shadow, SHA-512 (préfixe $6$) sur Debian/Ubuntu moderne. /etc/shadow est lisible uniquement par root.
visudo / sudoers — Élévation de privilèges
visudo édite /etc/sudoers avec validation syntaxique. Ne jamais modifier /etc/sudoers directement avec nano ou vim.
visudo # éditer /etc/sudoers
visudo -f /etc/sudoers.d/johndoe # fichier séparé (recommandé)
Format d’une règle sudoers :
# utilisateur hôte=(exécuté_en_tant_que) commandes
johndoe ALL=(ALL:ALL) ALL
johndoe ALL=(ALL) NOPASSWD: /bin/systemctl restart nginx
%webadmins ALL=(ALL) /usr/bin/apt
Préférer les fichiers dans /etc/sudoers.d/ plutôt que de modifier /etc/sudoers directement. Un fichier cassé dans sudoers.d/ ne bloque pas tout le système sudo.
su vs sudo — Changer d’identité
sudo commande # exécuter une commande en root
sudo -i # ouvrir un shell root (environnement root complet)
sudo -u johndoe commande # exécuter en tant qu'un autre utilisateur
su - # devenir root (nécessite le mdp root)
su - johndoe # devenir johndoe (nécessite son mdp)
sudo | su | |
|---|---|---|
| Mot de passe demandé | mdp de l’utilisateur | mdp du compte cible |
| Traces dans les logs | /var/log/auth.log | /var/log/auth.log |
| Recommandé en entreprise | Oui | Non |
graph LR
A[User] -->|sudo commande| B[Execution root]
A -->|su -| C[Shell root]
B --> D[Retour auto]
C -->|exit| D
En entreprise, sudo est toujours préféré à su car chaque commande est tracée individuellement dans les logs avec le nom de l’utilisateur réel. su ouvre un shell root persistant sans traçabilité fine des actions.
nmcli — NetworkManager CLI
Gère les connexions réseau sur les systèmes avec NetworkManager (CentOS, RHEL, Ubuntu Desktop).
nmcli device status
nmcli connection show
nmcli connection up "Connexion filaire 1"
nmcli con mod eth0 ipv4.addresses 192.168.1.20/24
nmcli con mod eth0 ipv4.gateway 192.168.1.1
nmcli con mod eth0 ipv4.dns "192.168.1.5 8.8.8.8"
nmcli con mod eth0 ipv4.method manual
nmcli con reload && nmcli con up eth0