🐧 Linux

linux-linux-admin-guide

Administration Linux complète — gestion des utilisateurs, permissions, services, logs, cron et packages.

⚡ Installation & lancement en 1 commande

Copiez-collez dans votre terminal : le skill s'installe dans ~/.claude/skills et Claude Code se lance directement dessus.

macOS / Linux
curl -fsSL https://raw.githubusercontent.com/khalilbenaz/claude-skills-collection/main/install.sh | sh -s -- linux-linux-admin-guide --launch
Windows (PowerShell)
iex "& { $(iwr -useb https://raw.githubusercontent.com/khalilbenaz/claude-skills-collection/main/install.ps1) } linux-linux-admin-guide -Launch"

🚀 Déjà installé ?

claude "/linux-linux-admin-guide"

Ou tapez /linux-linux-admin-guide dans une session Claude Code, ou décrivez simplement votre besoin — le skill se déclenche automatiquement via le skill-router.

🔑 Déclencheurs automatiques

Le skill s'active automatiquement quand votre demande contient :

Linuxadministration Linuxchmodchownsystemctlaptyum

📦 Installation manuelle

git clone https://github.com/khalilbenaz/claude-skills-collection.git cp -r claude-skills-collection/skills/linux-linux-admin-guide ~/.claude/skills/

Payload du plugin : skills/linux-linux-admin-guide · source éditable : linux-skills/linux-admin-guide

📖 Manuel

Linux Admin Guide

1. Identifier le contexte système

uname -r                      # version noyau
cat /etc/os-release           # distro + version
lscpu | grep -E 'Arch|CPU'    # architecture et nb de coeurs
hostnamectl                   # résumé complet (distro, kernel, arch)

Critère de décision — gestionnaire de paquets à utiliser :

DistroPackage managerDépôts config
Debian / Ubuntuapt/etc/apt/sources.list.d/
RHEL / CentOS / Rockydnf (ou yum)/etc/yum.repos.d/*.repo
Arch / Manjaropacman/etc/pacman.conf
Alpineapk/etc/apk/repositories

2. Gestion des utilisateurs et groupes

# Créer un utilisateur avec home + shell + groupe primaire
useradd -m -s /bin/bash -G sudo khalil
passwd khalil

# Modifier un utilisateur existant (ajouter un groupe secondaire)
usermod -aG docker khalil          # -a crucial : append, pas remplace

# Supprimer sans effacer le home (safer)
userdel khalil
# Supprimer avec home
userdel -r khalil

# Inspecter
id khalil                          # uid, gid, groupes
getent passwd khalil               # entrée dans /etc/passwd
chage -l khalil                    # expiration du mot de passe

Piège : usermod -G docker khalil SANS -a remplace tous les groupes secondaires — préférer toujours -aG.


3. Permissions et ACL

# Notation octale — mnémonique : owner/group/others
chmod 750 script.sh    # rwxr-x---
chmod 644 config.cfg   # rw-r--r--

# Notation symbolique
chmod u+x,g-w fichier
chmod o= fichier       # retire tout accès aux autres

# Changement de propriétaire
chown khalil:devteam fichier
chown -R www-data:www-data /var/www/   # récursif

# Bits spéciaux
chmod u+s /usr/bin/monprog   # SUID  → s'exécute comme owner
chmod g+s /srv/shared/       # SGID  → fichiers héritent du groupe
chmod +t /tmp/shared/        # Sticky → seul owner peut supprimer

# ACL fine (quand chmod ne suffit pas)
setfacl -m u:jenkins:rwx /deploy/
setfacl -m g:ci:rx /deploy/
getfacl /deploy/

Anti-pattern : chmod -R 777 — n'est jamais la bonne réponse. Diagnostiquer d'abord avec namei -l /chemin/complet.


4. Gestion des services (systemd)

systemctl status nginx
systemctl start | stop | restart | reload nginx

# Activer au démarrage
systemctl enable nginx
systemctl enable --now nginx   # enable + start en une commande

# Lire les logs du service
journalctl -u nginx -n 100 --no-pager
journalctl -u nginx -f          # follow (temps réel)
journalctl -u nginx --since "1 hour ago"

# Créer ou modifier un service
systemctl edit nginx            # override sans écraser /lib/systemd/
systemctl daemon-reload         # après tout changement de unit file

Critère de décision : reload vs restartreload fait un SIGHUP (rechargement de config sans coupure) ; restart tue et relance le processus. Préférer reload en production pour nginx/apache.


5. Planification des tâches (cron + systemd timers)

# Éditer la crontab de l'utilisateur courant
crontab -e
# Syntaxe : min heure jour_mois mois jour_semaine commande
0 2 * * *  /opt/scripts/backup.sh >> /var/log/backup.log 2>&1
*/5 * * * * /usr/bin/check-health.sh   # toutes les 5 min

# Cron système
ls /etc/cron.{d,daily,weekly,monthly}/

# Vérifier les logs cron
grep CRON /var/log/syslog | tail -20
journalctl -t CRON -n 50

Alternative moderne — systemd timer (plus flexible, logs dans journald) :

# /etc/systemd/system/backup.timer
[Timer]
OnCalendar=*-*-* 02:00:00
Persistent=true

[Install]
WantedBy=timers.target
systemctl enable --now backup.timer
systemctl list-timers --all

6. Gestion des paquets

# Debian/Ubuntu
apt update && apt upgrade -y
apt install -y curl git htop
apt remove --purge nginx             # supprime + config
apt autoremove                       # orphelins
apt-cache show nginx                 # infos paquet
apt list --installed | grep nginx

# RHEL/Rocky/CentOS (dnf)
dnf update -y
dnf install -y curl git htop
dnf remove nginx
dnf autoremove
dnf info nginx

# Simuler avant d'agir
apt-get --simulate remove nginx
dnf --assumeno remove nginx

7. Analyse des logs

# Logs systemd
journalctl -p err -n 50             # erreurs uniquement
journalctl --since "2026-06-24 08:00"
journalctl -k                        # messages kernel (dmesg via journald)

# Logs fichiers classiques
tail -f /var/log/syslog
tail -f /var/log/auth.log            # tentatives SSH, sudo
grep "Failed password" /var/log/auth.log | awk '{print $11}' | sort | uniq -c | sort -rn

# Rotation des logs — forcer un cycle
logrotate -f /etc/logrotate.d/nginx

8. Stockage et systèmes de fichiers

df -hT                              # espace + type FS
du -sh /var/log/* | sort -rh | head -10   # top gros répertoires
lsblk -f                            # disques, partitions, FS, UUID

# Monter un disque
blkid /dev/sdb1                     # obtenir UUID
echo "UUID=xxxx /data ext4 defaults,nofail 0 2" >> /etc/fstab
mount -a                            # tester le fstab

# Créer un FS et monter
mkfs.ext4 /dev/sdb1
mkdir /data && mount /dev/sdb1 /data

# Santé disque
smartctl -a /dev/sda                # SMART complet
smartctl -t short /dev/sda          # lancer un test rapide

Garde-fous et anti-patterns

RisqueCe qu'il ne faut PAS faireBonne pratique
Destruction de permissionschmod -R 777 /Tester sur un sous-dossier, vérifier avec namei
Perte de groupes secondairesusermod -G groupe userToujours usermod -aG groupe user
Coupure SSHModifier /etc/ssh/sshd_config sans sshd -tsshd -t && systemctl reload sshd
Fstab cassé au rebootAjouter une entrée sans testermount -a avant de rebooter
Suppression paquet systèmeapt remove --purge systemdapt-get --simulate remove paquet d'abord
Root directsu - en routinesudo -i ou sudo commande — auditabilité
Cron silencieuxPas de redirection de sortiecmd >> /var/log/job.log 2>&1

Bonnes pratiques 2026