← Retour
linux

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
OctalDroitsUsage typique
755rwxr-xr-xScripts, dossiers
644rw-r—r—Fichiers normaux
600rw-------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/

rsync est préféré à scp pour 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

x dans 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 sudo ou 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 :

OptionRôle
-mCréer le répertoire home (/home/johndoe)
-sShell par défaut (/bin/bash)
-gGroupe primaire
-GGroupes supplémentaires
-uUID précis
-cCommentaire / 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)
sudosu
Mot de passe demandémdp de l’utilisateurmdp du compte cible
Traces dans les logs/var/log/auth.log/var/log/auth.log
Recommandé en entrepriseOuiNon
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