🐧 Linux
Commandes essentielles pour gérer les permissions, processus et le système.
Maîtriser ces commandes Linux permet de gérer efficacement les droits d’accès, surveiller les processus et administrer son système.
Permissions
Comprendre les permissions
# Format : rwxrwxrwx
# r = read (4), w = write (2), x = execute (1)
# 3 groupes : propriétaire, groupe, autres
# Exemple de sortie ls -l
-rw-r--r-- 1 user group 1234 Dec 01 10:00 fichier.txt
drwxr-xr-x 2 user group 4096 Dec 01 10:00 dossier
# Premier caractère :
# - = fichier, d = dossier, l = lien symbolique
# Valeurs octales courantes :
# 644 = rw-r--r-- (fichiers)
# 755 = rwxr-xr-x (exécutables, dossiers)
# 700 = rwx------ (privé)
# 600 = rw------- (fichiers privés)Modifier les permissions (chmod)
# Mode symbolique
chmod u+x script.sh # ajouter exécution au propriétaire
chmod g-w fichier.txt # retirer écriture au groupe
chmod o+r fichier.txt # ajouter lecture aux autres
chmod a+x script.sh # ajouter exécution à tous (a = all)
# Mode octal
chmod 644 fichier.txt # rw-r--r--
chmod 755 script.sh # rwxr-xr-x
chmod 700 secret.txt # rwx------
chmod 600 config.ini # rw-------
# Récursif
chmod -R 755 dossier/ # applique à tous les fichiers/sous-dossiers
# Copier les permissions d'un fichier
chmod --reference=ref.txt fichier.txtModifier le propriétaire (chown)
# Changer le propriétaire
chown user fichier.txt
# Changer propriétaire et groupe
chown user:group fichier.txt
# Récursif
chown -R user:group dossier/
# Changer uniquement le groupe
chgrp group fichier.txt
chgrp -R group dossier/
# Voir les propriétaires
ls -l fichier.txt
stat fichier.txtPermissions spéciales
SUID/SGID
SUID, SGID
# SUID (Set User ID) - le fichier s'exécute avec les droits du propriétaire
chmod u+s /usr/bin/passwd # 4755
chmod 4755 fichier
# SGID (Set Group ID) - le fichier s'exécute avec les droits du groupe
chmod g+s dossier/ # 2755
chmod 2755 dossier
# Les deux
chmod ug+s fichier # 6755
# Vérifier
ls -l fichier
# -rwsr-xr-x (SUID activé - 's' à la place de 'x')
# -rwxr-sr-x (SGID activé)Umask
# Voir l'umask actuel
umask
umask -S # format symbolique
# Définir un umask
umask 022 # fichiers créés avec 644, dossiers avec 755
umask 077 # fichiers créés avec 600, dossiers avec 700
# Umask permanent (ajouter dans .bashrc ou .zshrc)
echo "umask 022" >> ~/.bashrcProcessus
Lister les processus
# Tous les processus
ps aux
ps -ef
# Processus en arbre
ps auxf
pstree
# Processus d'un utilisateur
ps -u username
# Processus en temps réel
top
htop # plus visuel (si installé)
# Rechercher un processus
ps aux | grep nginx
pgrep nginx # retourne uniquement les PIDs
pgrep -u user # processus d'un utilisateurGérer les processus
# Tuer un processus
kill PID # SIGTERM (arrêt propre)
kill -9 PID # SIGKILL (arrêt forcé)
kill -15 PID # SIGTERM (explicite)
# Tuer par nom
killall nginx
pkill nginx
pkill -u username # tous les process d'un user
# Tuer interactivement
top # puis 'k' et entrer le PID
# Voir tous les signaux disponibles
kill -lPriorité des processus
# Nice (lancer avec priorité)
# -20 (plus haute priorité) à 19 (plus basse priorité)
nice -n 10 command # lancer avec priorité basse
# Renice (changer la priorité d'un process en cours)
renice -n 5 -p PID
renice -n 10 -u username
# Voir la priorité
ps -l
top # colonne NIBackground et foreground
# Lancer en background
command &
nohup command & # continue après déconnexion
# Mettre en pause (Ctrl+Z)
# Puis reprendre en background
bg
# Reprendre en foreground
fg
# Lister les jobs
jobs
jobs -l # avec PIDs
# Reprendre un job spécifique
fg %1
bg %2
# Tuer un job
kill %1Monitoring avancé
# Voir les ressources d'un processus
top -p PID
htop -p PID
# Infos détaillées
ps aux | grep PID
cat /proc/PID/status
cat /proc/PID/cmdline
# Tracer les appels système
strace -p PID
strace command
# Voir les fichiers ouverts
lsof -p PID
lsof -u username # fichiers ouverts par user
# Voir les connexions réseau
netstat -tulpn
ss -tulpn # plus moderne
lsof -i :80 # qui utilise le port 80Système
Informations système
# Infos générales
uname -a # toutes les infos
uname -r # version du kernel
uname -m # architecture
# Distribution
cat /etc/os-release
lsb_release -a
# Hostname
hostname
hostnamectl # détaillé
# Uptime
uptime
uptime -p # format lisible
# Date et heure
date
timedatectl # détailléUtilisation des ressources
CPU & RAM
CPU et RAM
# Vue d'ensemble
top
htop
uptime # load average
# RAM
free -h # format lisible
free -m # en MB
free -g # en GB
# Détails RAM
cat /proc/meminfo
vmstat # statistiques mémoire virtuelle
vmstat 1 10 # rafraîchir chaque seconde, 10 fois
# CPU
lscpu # infos CPU
cat /proc/cpuinfo
mpstat # stats par CPUServices et systemd
# Lister les services
systemctl list-units --type=service
systemctl list-units --state=running
# Statut d'un service
systemctl status nginx
systemctl is-active nginx
systemctl is-enabled nginx
# Démarrer/arrêter un service
systemctl start nginx
systemctl stop nginx
systemctl restart nginx
systemctl reload nginx # recharger la config
# Activer/désactiver au boot
systemctl enable nginx
systemctl disable nginx
# Voir les logs d'un service
journalctl -u nginx
journalctl -u nginx -f # suivre en temps réel
journalctl -u nginx --since today
journalctl -u nginx --since "2025-12-01 10:00"
# Recharger systemd
systemctl daemon-reloadLogs système
# Logs avec journalctl (systemd)
journalctl # tous les logs
journalctl -f # suivre en temps réel
journalctl -n 50 # 50 dernières lignes
journalctl -p err # erreurs uniquement
journalctl --since today
journalctl --since "1 hour ago"
journalctl -u service-name
journalctl -b # depuis le dernier boot
journalctl --disk-usage # espace utilisé
# Logs traditionnels (/var/log)
tail -f /var/log/syslog
tail -f /var/log/auth.log # authentifications
tail -f /var/log/nginx/access.log
less /var/log/syslog
# Rechercher dans les logs
grep -i error /var/log/syslog
grep "Failed password" /var/log/auth.logGestion des utilisateurs
# Créer un utilisateur
useradd username
useradd -m username # avec home
useradd -m -s /bin/bash username
# Définir/changer le mot de passe
passwd username
# Modifier un utilisateur
usermod -aG sudo username # ajouter au groupe sudo
usermod -s /bin/zsh username # changer le shell
usermod -l newname oldname # renommer
# Supprimer un utilisateur
userdel username
userdel -r username # avec home et mails
# Créer un groupe
groupadd groupname
# Ajouter un user à un groupe
usermod -aG groupname username
gpasswd -a username groupname
# Retirer un user d'un groupe
gpasswd -d username groupname
# Voir les groupes d'un user
groups username
id usernameVariables d’environnement
# Voir toutes les variables
env
printenv
# Voir une variable spécifique
echo $PATH
echo $HOME
printenv PATH
# Définir temporairement
export MY_VAR="value"
MY_VAR="value" command # pour une commande uniquement
# Définir de façon permanente
# Dans ~/.bashrc ou ~/.zshrc
echo 'export MY_VAR="value"' >> ~/.bashrc
source ~/.bashrc
# PATH
export PATH=$PATH:/new/path
echo 'export PATH=$PATH:/new/path' >> ~/.bashrcTâches planifiées (cron)
# Éditer le crontab
crontab -e
# Lister les crontabs
crontab -l
crontab -l -u username # pour un autre user
# Supprimer le crontab
crontab -r
# Syntaxe : minute heure jour mois jour_semaine commande
# * * * * * command
# | | | | |
# | | | | +-- Jour de la semaine (0-7, 0 et 7 = dimanche)
# | | | +---- Mois (1-12)
# | | +------ Jour du mois (1-31)
# | +-------- Heure (0-23)
# +---------- Minute (0-59)
# Exemples
# Tous les jours à 2h30
30 2 * * * /path/to/script.sh
# Toutes les heures
0 * * * * /path/to/script.sh
# Tous les lundis à 9h
0 9 * * 1 /path/to/script.sh
# Toutes les 15 minutes
*/15 * * * * /path/to/script.sh
# Raccourcis spéciaux
@reboot /path/to/script.sh
@daily /path/to/script.sh
@hourly /path/to/script.sh
@weekly /path/to/script.sh
@monthly /path/to/script.shAstuces
Alias utiles
# À ajouter dans .bashrc ou .zshrc
alias ll='ls -lah'
alias la='ls -A'
alias l='ls -CF'
alias ..='cd ..'
alias ...='cd ../..'
alias h='history'
alias df='df -h'
alias free='free -h'
alias ports='netstat -tulpn'
alias psg='ps aux | grep -v grep | grep -i -e VSZ -e'
alias mkdir='mkdir -pv'
alias wget='wget -c'One-liners pratiques
# Trouver les 10 plus gros fichiers
find / -type f -exec du -h {} + | sort -rh | head -10
# Trouver les fichiers modifiés dans les 24h
find /path -type f -mtime -1
# Compter le nombre de fichiers dans un dossier
find /path -type f | wc -l
# Remplacer du texte dans plusieurs fichiers
find . -type f -name "*.txt" -exec sed -i 's/old/new/g' {} +
# Voir les connexions par IP
netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n
# Voir l'utilisation CPU par processus
ps aux | sort -nrk 3,3 | head -10
# Voir l'utilisation RAM par processus
ps aux | sort -nrk 4,4 | head -10
# Archive avec date
tar -czf backup-$(date +%Y%m%d-%H%M%S).tar.gz /path/to/dir
# Créer un fichier de taille spécifique (pour tests)
dd if=/dev/zero of=testfile bs=1M count=100 # 100MB
# Vider un fichier sans le supprimer
> fichier.log
truncate -s 0 fichier.logRaccourcis clavier
Ces raccourcis fonctionnent dans la plupart des shells (bash, zsh).
# Navigation
Ctrl+A # début de ligne
Ctrl+E # fin de ligne
Ctrl+U # effacer jusqu'au début
Ctrl+K # effacer jusqu'à la fin
Ctrl+W # effacer le mot précédent
Alt+B # reculer d'un mot
Alt+F # avancer d'un mot
# Historique
Ctrl+R # rechercher dans l'historique
Ctrl+P / ↑ # commande précédente
Ctrl+N / ↓ # commande suivante
!! # répéter la dernière commande
!$ # dernier argument de la commande précédente
!* # tous les arguments de la commande précédente
# Contrôle
Ctrl+C # interrompre
Ctrl+Z # suspendre
Ctrl+D # EOF / déconnexion
Ctrl+L # clear screen