Permissions, utilisateurs et processus
Permissions, utilisateurs et processus
Le système de permissions Linux
Linux est un système multi-utilisateurs. Chaque fichier et répertoire possède des permissions qui contrôlent qui peut lire, écrire ou exécuter.
Comprendre les permissions
$ ls -la
-rw-r--r-- 1 sacha dev 4096 mars 28 10:00 config.json
drwxr-xr-x 3 sacha dev 4096 mars 28 10:00 src/
-rwxr-x--- 1 root admin 8192 mars 28 10:00 deploy.sh
Décomposition : -rw-r--r--
- rw- r-- r--
│ │ │ └── Autres (other) : lecture seule
│ │ └── Groupe (group) : lecture seule
│ └── Propriétaire (user) : lecture + écriture
└── Type (- = fichier, d = répertoire, l = lien symbolique)
| Lettre | Signification | Sur un fichier | Sur un répertoire |
|---|---|---|---|
r |
Read (lecture) | Lire le contenu | Lister le contenu |
w |
Write (écriture) | Modifier le contenu | Créer/supprimer des fichiers |
x |
Execute (exécution) | Exécuter comme programme | Entrer dans le répertoire |
Notation numérique (octale)
Chaque permission a une valeur : r=4, w=2, x=1
rwx = 4+2+1 = 7
rw- = 4+2+0 = 6
r-x = 4+0+1 = 5
r-- = 4+0+0 = 4
Exemples courants :
755→rwxr-xr-x— scripts exécutables, répertoires644→rw-r--r--— fichiers de configuration600→rw-------— clés SSH, fichiers sensibles700→rwx------— répertoire.ssh
Modifier les permissions
# Avec la notation symbolique
chmod u+x script.sh # Ajouter exécution au propriétaire
chmod g-w fichier.txt # Retirer écriture au groupe
chmod o-rwx secret.key # Retirer tout aux autres
chmod a+r document.pdf # Ajouter lecture à tous
# Avec la notation numérique
chmod 755 script.sh
chmod 644 config.json
chmod 600 ~/.ssh/id_rsa
# Récursivement
chmod -R 755 /var/www/html/
Changer le propriétaire
# Changer le propriétaire
chown sacha fichier.txt
chown sacha:dev fichier.txt # Propriétaire ET groupe
# Récursivement
chown -R www-data:www-data /var/www/
# Changer uniquement le groupe
chgrp dev projet/
Gestion des utilisateurs et groupes
Utilisateurs
# Voir l'utilisateur courant
whoami
id # Détails complets (uid, gid, groupes)
# Créer un utilisateur
sudo useradd -m -s /bin/bash jean # -m crée le home, -s définit le shell
sudo passwd jean # Définir le mot de passe
# Modifier un utilisateur
sudo usermod -aG docker jean # Ajouter au groupe docker
sudo usermod -s /bin/zsh jean # Changer le shell
# Supprimer un utilisateur
sudo userdel -r jean # -r supprime aussi le home
# Lister les utilisateurs
cat /etc/passwd
Groupes
# Créer un groupe
sudo groupadd developpeurs
# Ajouter un utilisateur à un groupe
sudo usermod -aG developpeurs jean
# Voir les groupes d'un utilisateur
groups jean
# Lister tous les groupes
cat /etc/group
sudo — exécuter en tant qu'administrateur
# Exécuter une commande en root
sudo apt update
sudo systemctl restart nginx
# Ouvrir un shell root (⚠️ à utiliser avec précaution)
sudo -i
# Exécuter en tant qu'un autre utilisateur
sudo -u postgres psql
Gestion des processus
Un processus est un programme en cours d'exécution. Chaque processus a un identifiant unique : le PID.
Visualiser les processus
# Liste des processus de l'utilisateur
ps
# Tous les processus du système
ps aux
ps aux | grep nginx
# Arborescence des processus
pstree
# Moniteur en temps réel
top
htop # Version améliorée (à installer)
Comprendre la sortie de ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.1 169436 13296 ? Ss mars27 0:02 /sbin/init
sacha 1234 2.5 1.2 456780 98456 ? Sl 10:00 0:45 node server.js
www-data 567 0.1 0.3 123456 24680 ? S 09:30 0:12 nginx: worker
| Colonne | Description |
|---|---|
| USER | Propriétaire du processus |
| PID | Identifiant unique |
| %CPU / %MEM | Utilisation des ressources |
| STAT | État (S=sleeping, R=running, Z=zombie) |
| COMMAND | Commande qui a lancé le processus |
Gérer les processus
# Lancer un processus en arrière-plan
node server.js &
# Voir les jobs en arrière-plan
jobs
# Ramener un job au premier plan
fg %1
# Envoyer au second plan
bg %1
# Arrêter un processus
kill 1234 # Signal TERM (arrêt propre)
kill -9 1234 # Signal KILL (arrêt forcé)
killall nginx # Arrêter tous les processus nginx
# Trouver le PID d'un processus
pgrep nginx
pidof nginx
Services avec systemd
Sur les distributions modernes, systemd gère les services :
# Gérer un service
sudo systemctl start nginx
sudo systemctl stop nginx
sudo systemctl restart nginx
sudo systemctl reload nginx # Recharger la config sans couper
# Activer/désactiver au démarrage
sudo systemctl enable nginx
sudo systemctl disable nginx
# Vérifier le statut
sudo systemctl status nginx
# Voir les logs d'un service
sudo journalctl -u nginx
sudo journalctl -u nginx -f # Suivre en temps réel
sudo journalctl -u nginx --since "1 hour ago"
Gestion des paquets
Sur Debian/Ubuntu (apt)
# Mettre à jour la liste des paquets
sudo apt update
# Mettre à jour les paquets installés
sudo apt upgrade
# Installer un paquet
sudo apt install nginx curl git
# Supprimer un paquet
sudo apt remove nginx
sudo apt purge nginx # Supprimer aussi la configuration
# Rechercher un paquet
apt search nodejs
Sur CentOS/Rocky (dnf)
sudo dnf update
sudo dnf install nginx
sudo dnf remove nginx
dnf search nodejs
Bonnes pratiques
- Principe du moindre privilège : n'accordez que les permissions nécessaires
- N'utilisez pas root au quotidien — préférez
sudocommande par commande - Protégez les clés SSH avec
chmod 600 - Vérifiez les processus régulièrement avec
htop - Utilisez systemd pour gérer vos services en production
- Gardez le système à jour avec des mises à jour régulières