Volume 2 : Linux, Terminal & Bash Scripting Avancé/Module 1 : Maîtrise du Terminal Linux & Gestion Système
Commandes Linux, Pipelines, Filtres (grep, awk, sed) & Permissions
Commandes Linux, Pipelines, Filtres & Permissions POSIX
Dans l'univers de la cybersécurité, le terminal Linux est votre interface principale de travail. La quasi-totalité des serveurs cibles, des pare-feux et des conteneurs s'administrent en ligne de commande.
---
1. La Philosophie des Flux Standard & Pipelines UNIX
Sous UNIX, « tout est fichier », et tout programme lancé dispose automatiquement de trois descripteurs de flux fondamentaux : * Descripteur 0 : Entrée standard (stdin) — flux entrant depuis le clavier ou un pipe. * Descripteur 1 : Sortie standard (stdout) — flux de sortie normale des résultats. * Descripteur 2 : Sortie d'erreur (stderr) — flux des messages d'erreur et alertes.
Redirections :
``bash
Rediriger stdout vers un fichier (écrase le fichier)
commande > resultat.txt
Rediriger stdout en mode ajout (append)
commande >> historique.log
Rediriger stdout ET stderr dans le même fichier
commande > sortie.txt 2>&1
Ignorer totalement les erreurs en les envoyant dans le trou noir /dev/null
find / -name "*.conf" 2>/dev/null
`
Le Pipe (
|) : La Chaîne de Traitement
Le tube (|) injecte directement la sortie standard du programme de gauche dans l'entrée standard du programme de droite.
Exemple d'extraction d'adresses IP uniques connectées à un serveur :
`bash
netstat -ant | grep ESTABLISHED | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr
`
---
2. Les Outils de Filtrage Essentiels :
grep, awk et sed
* grep (Global Regular Expression Print) : Recherche de motifs textuels ou d'expressions régulières.
`bash
# Trouver tous les échecs de connexion SSH dans le journal d'authentification
grep -i "failed password" /var/log/auth.log
`
* awk : Langage complet de traitement par colonnes. Par défaut, awk découpe chaque ligne selon les espaces.
`bash
# Afficher le nom d'utilisateur ($1) et son shell par défaut ($7) depuis /etc/passwd
awk -F: '{print $1, "utilise le shell :", $7}' /etc/passwd
`
* sed (Stream Editor) : Édition de flux à la volée (rechercher/remplacer).
`bash
# Remplacer toutes les occurrences de HTTP par HTTPS dans un fichier de configuration
sed -i 's/http:/https:/g' /etc/nginx/sites-available/default
`
---
3. Le Modèle de Permissions POSIX & Calcul Octal
Chaque fichier ou répertoire sous Linux possède des droits pour trois entités distinctes :
1. User (u) : Le propriétaire du fichier.
2. Group (g) : Le groupe propriétaire.
3. Others (o) : Tout autre utilisateur du système.
Les droits se décomposent en trois permissions binaires :
* Read (r) : Valeur octale 4 (binaire 100). Permet de lire le contenu.
* Write (w) : Valeur octale 2 (binaire 010). Permet de modifier ou supprimer.
* Execute (x) : Valeur octale 1 (binaire 001). Permet d'exécuter un script ou de traverser un répertoire (cd).
`
Droits : r w x r - x r - -
Binaire : 1 1 1 1 0 1 1 0 0
Octal : 7 5 4
Total : chmod 754 mon_script.sh
`
Les Permissions Spéciales Majeures pour le Pentesteur :
* SUID (Set User ID) — Octal 4000 : Lorsqu'un binaire possède le bit SUID (ex: -rwsr-xr-x), il s'exécute toujours avec les privilèges de son propriétaire, souvent root, quel que soit l'utilisateur qui le lance !
* SGID (Set Group ID) — Octal 2000 : Exécute avec les privilèges du groupe propriétaire.
* Sticky Bit — Octal 1000 : Présent sur /tmp (drwxrwxrwt), il empêche un utilisateur de supprimer le fichier d'un autre utilisateur même dans un dossier partagé en écriture.
Pour trouver tous les binaires SUID sur un serveur Linux lors d'une phase d'élévation de privilèges :
`bash
find / -perm -4000 -type f 2>/dev/null
``
Informations
Formatarticle
Durée40 min
StatutEn cours
Laboratoire Virtuel Pratique
Pratiquez cette le?on dans le Terminal Linux et l'ex?cuteur WebAssembly Python en direct.
Ouvrir dans le Labo >_