Skip to Content
CLI🐧 Linux

🐧 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.txt

Modifier 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.txt

Permissions spéciales

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" >> ~/.bashrc

Processus

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 utilisateur

Gé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 -l

Priorité 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 NI

Background 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 %1

Monitoring 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 80

Systè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 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 CPU

Services 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-reload

Logs 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.log

Gestion 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 username

Variables 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' >> ~/.bashrc

Tâ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.sh

Astuces

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.log

Raccourcis 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