đ§ 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