Manipulations de base sur un système Linux
Toutes les manipulations suivantes constituent la "boîte à outils" indispensable sur Linux.
1. Changement du hostname
- Le nom d'hôte (hostname) identifie la machine sur un réseau.
- Pour changer le nom d'hôte temporairement :
sudo hostnamectl set-hostname nouveau_hostname
- Modifier également /etc/hostname et /etc/hosts pour une persistance après redémarrage.
- Vérifier avec :
hostname
hostnamectl status
2. Réseau
Faire une configuration IP :
Avec ip :
- Ajouter une IP statique temporaire (disparaît au redémarrage) :
sudo ip addr add 192.168.1.10/24 dev eth0
sudo ip route add default via 192.168.1.1
Les fichiers de configuration varient selon la distribution (ex. /etc/netplan/ sur Ubuntu, /etc/sysconfig/network-scripts/ sur RedHat, /etc/network/interfaces sur Debian).
Configuration via DHCP ou statique :
- DHCP : Assure une configuration automatique. Vérifier que le service NetworkManager ou dhclient est actif.
- Statique : Éditer la configuration réseau (par ex. fichiers netplan sur Ubuntu : /etc/netplan/*.yaml) et y définir l'adresse, le masque, la gateway et les DNS manuellement.
Choisir un DNS :
- Éditer /etc/resolv.conf (attention, sur certaines distros ce fichier est géré dynamiquement par NetworkManager ou systemd-resolved).
- Exemple :
nameserver 1.1.1.1 # Pour le DNS 1
nameserver 1.0.0.1 # Pour le DNS 2
- Via netplan, inclure nameservers: [8.8.8.8, 8.8.4.4] dans la config YAML.
Faire un enregistrement de nom dans le fichier hosts (/etc/hosts) :
- Éditer /etc/hosts et ajouter une ligne :
192.168.1.10 monhostnameserveur
- Ainsi, monhostnameserveur résoudra vers 192.168.1.10 localement, sans interroger un DNS.
Expliquer le fonctionnement de nftables :
- nftables est le successeur d'iptables. Il gère les règles de filtrage réseau du noyau Linux.
- Les règles sont organisées en tables, chaînes et règles (comme iptables), mais avec une syntaxe plus moderne et centralisée. nftables est plus complexe à gérer. Nous verrons son fonctionnement un peu plus tard. Si vous souhaitez voir comment le configurer sous Debian, cliquez ici.
Commandes de base :
sudo nft add rule ip filter input tcp dport 22 accept
- Sauvegarder/Restaurer la configuration via /etc/nftables.conf.
3. Faire les mises-à-jour
Mettre à jour le catalogue (base de paquets) :
(Met à jour à la fois le catalogue et les paquets)
Mettre à jour les paquets :
(Met à jour les paquets déjà installés)
Mettre à jour le système :
(Pour mettre à jour y compris en modifiant les dépendances)
- Surveiller les mises à jour de sécurité et appliquer les correctifs régulièrement.
4. Installer/désinstaller un programme
Debian/Ubuntu :
sudo apt install nom_du_paquet
sudo apt remove nom_du_paquet
sudo apt purge nom_du_paquet
(purge supprime aussi les fichiers de configuration)
Fedora/RHEL :
sudo dnf install nom_du_paquet
sudo dnf remove nom_du_paquet
5. Créer un lien symbolique d'une ressource
- Un lien symbolique est un "raccourci" vers un fichier ou un dossier.
ln -s /chemin/absolu/source /chemin/absolu/cible
ln -s /usr/local/bin/monscript.sh /usr/bin/monscript
Cela permet d'accéder rapidement à un fichier ou dossier à partir d'un autre emplacement.
6. Compresser/Décompresser (tar -cvzf/tar -xvzf)
Dans un répertoire local :
tar -cvzf archive.tar.gz dossier/
(c : créer, v : verbeux, z : compresser gzip, f : fichier)
(x : extraire)
Ailleurs sur le système :
- Utiliser -C pour spécifier le répertoire cible lors de l'extraction :
tar -xvzf archive.tar.gz -C /chemin/cible
- Utiliser sudo si vous devez extraire dans des répertoires système protégés.
7. systemd (gestion des services et du démarrage)
sudo systemctl start nom_du_service
sudo systemctl stop nom_du_service
sudo systemctl restart nom_du_service
- Voir le statut du service :
systemctl status nom_du_service
- Voir le journal (logs du service) :
journalctl -u nom_du_service -xe
(-xe pour avoir plus de détails et les derniers événements)
8. Faire une recherche dans l'historique de commandes
- history affiche les commandes saisies précédemment.
- Ctrl+R (en mode interactif) permet de rechercher dans l'historique. Taper quelques lettres pour retrouver une commande. Sinon, vous pouvez envoyer le résultat dans un pipe :
- Il est possible d'éditer le fichier ~/.bash_history manuellement et de configurer le nombre de commandes retenues.
9. Tuer un processus
- ps -ef ou top/htop pour lister les processus. De mon point de vue, btop est le meilleur de tous, mais il requiert un peu de patience pour l'installation sur Debian.
- kill PID envoie le signal TERM au processus PID pour lui demander de s'arrêter proprement.
- kill -9 PID (SIGKILL) force la fin immédiate du processus, à utiliser en dernier recours.
- pkill nom_du_processus ou killall nom_du_processus tue tous les processus correspondant au nom spécifié.
pkill nom_du_processus
killall nom_du_processus
10. Rôle des fichiers /etc/passwd, /etc/shadow, /etc/group
- /etc/passwd : Contient la liste des utilisateurs du système, avec leur UID, GID, répertoire personnel, shell, etc.
- /etc/shadow : Contient les mots de passe chiffrés des utilisateurs et d'autres informations sensibles (vieillissement des mots de passe). Protégé en lecture.
- /etc/group : Contient la liste des groupes, leur GID et les membres qui leur sont associés.
11. Créer/Supprimer un utilisateur
- sudo adduser nom_utilisateur (sur Debian/Ubuntu) ou sudo useradd nom_utilisateur (RHEL/Fedora) pour créer un utilisateur.
sudo adduser nom_utilisateur
sudo useradd nom_utilisateur
- sudo userdel nom_utilisateur pour supprimer un utilisateur.
sudo userdel nom_utilisateur
- Pour spécifier un répertoire de base différent :
sudo useradd -m -d /chemin/perso nom_utilisateur
Créer/Supprimer un groupe
sudo groupadd nom_groupe
sudo groupdel nom_groupe
Ajouter/ôter un utilisateur à un groupe
sudo usermod -aG nom_groupe nom_utilisateur
- Retirer un utilisateur d'un groupe (selon la distribution, par modification manuelle du fichier /etc/group ou via gpasswd).
Vérifier l'existence d'un groupe/utilisateur fantôme
getent passwd nom_utilisateur
getent group nom_groupe
(Si aucune sortie, l'utilisateur ou le groupe n'existe pas)
12. Les droits et propriétés sur les ressources
- Utiliser ls -l pour voir les permissions (rwx), le propriétaire et le groupe d'un fichier.
- chmod pour modifier les droits :
(donne rwx au propriétaire, r-x au groupe et r-x aux autres)
- chown pour changer le propriétaire :
sudo chown nouvel_proprio fichier
- chgrp pour changer le groupe propriétaire :
sudo chgrp nom_groupe fichier
13. Faire une redirection de commande (stdout et stderr)
- > redirige la sortie standard (stdout) vers un fichier, écrasant son contenu.
- >> ajoute à la fin du fichier au lieu d'écraser.
- 2> redirige la sortie d'erreur (stderr) vers un fichier.
- > /dev/null 2>&1 redirige à la fois stdout et stderr vers le "néant" (nulldev), permettant de ne rien afficher à l'écran.
14. Créer un alias de commande
- Dans ~/.bashrc ou ~/.zshrc :
- Rechargez le shell ou faites source ~/.bashrc pour prendre en compte l'alias.
15. Formater un disque en ext4, créer une/des partition(s), monter la/les partitions
(À l'intérieur de fdisk, utiliser n pour créer une nouvelle partition, w pour écrire les changements)
- Créer un point de montage :
sudo mount /dev/sdb1 /mnt/disque
- Éditer /etc/fstab pour un montage automatique au démarrage.
- Exemple de ligne dans /etc/fstab :
/dev/sdb1 /mnt/disque ext4 defaults 0 2
Manipulations supplémentaires potentiellement utiles :
- Surveiller l'utilisation du disque : df -h pour voir l'espace disponible. du -sh dossier pour voir la taille d'un dossier.
- Surveiller l'utilisation du CPU/RAM : top, htop (si installé).
- Analyser la connectivité réseau : curl -I http://site.com, traceroute host, netstat (ou ss) pour voir les ports ouverts.
- Sauvegarder et restaurer des configurations : Copier des fichiers de /etc vers un répertoire de sauvegarde.
- Gérer les permissions ACL (Access Control Lists) : getfacl, setfacl si besoin de droits plus granulaire que l'Unix classique. (pas à votre programme !)