CHAP 5 Administration des systèmes Flashcards
Administration système
L’administrateur système est
la personne responsable
* des serveurs et postes informatique
* au niveau logiciel
Tâches habituelles de l’administrateur?
- Installation et désinstallation des logiciels
- Configuration des logiciels
- Mise-à-jour des logiciels
- Supervision des services logiciels
Autres tâches habituelles
* Configuration des disques, organisation des partions, etc.
* Gestion des sauvegardes et des restaurations (backups)
* Configuration des périphériques (écrans, claviers, souris, etc.)
* Ajout et suppression des utilisateurs
* Configuration des comptes utilisateurs
* Configuration du réseau
* Responsable de la sécurité des services administrés
Programmation?
* Pas nécessairement expert en programmation
* Capable de programmer et de comprendre les scripts shell
* Sait compiler et installer des programmes
Processus UNIX =
Un programme en cours d’exécution =
Un processus est un concept important du système d’exploitation
- Le programme exécuté (fichier exécutable)
- De l’état et des ressources (mémoire, CPU, etc)
- Un utilisateur (et un groupe)
- Un identifiant = numéro de processus (pid)
- Un processus parent dont il hérite ses caractéristiques
- Un début… et une fin
- D’autres informations utiles à sa bonne gestion
Isolation des processus ⋆
Les processus sont isolés les uns des autres
- Un processus est autonome et cohérent
- Plein de processus existent en même temps (multitâche)
- Un processus ne peut pas corrompre un autre processus
(du moins sans respecter les règles) - Un processus peut collaborer avec d’autres processus
Exemple de collaboration: tubes
$ grep lol /usr/share/dict/french | lolcat
2 processus: grep et lolcat
Lister les processus ⋆
Commande ps: instantané des processus
$ ps
PID TTY TIME CMD
4517 pts/3 00:00:00 bash
24535 pts/3 00:00:00 ps
Par défaut ps affiche la liste des processus
* De l’utilisateur courant
* Dans le terminal en cours
* Avec peu d’information
$ ps | head -n 50 | sort -n | grep ‘ ‘
Arborescence des processus
Un nouveau processus est créé par un autre processus
- Un créateur est appelé processus parent
- Le premier processus (dit racine) n’a pas de parent
C’est init (ou systemd) de PID=1 - Sous UNIX la relation de parenté est préservée
→ On a une arborescence de processus
Commande pstree vue arborescente des processus (extra)
$ pstree -phT
Options de ps
Trois familles, plein d’options
- Traditionelle (POSIX), avec un tiret « - »
- BSD, sans tiret
- Extensions extra, avec un ou deux tirets « – »
→ Beaucoup de confusion
$ ps -eF
$ ps aux - -e, -A afficher tous les processus
- -f afficher plus de colonnes
- -F afficher encore plus de colonnes (extra)
- a tous les processus (avec un terminal)
- ax tous les processus (même sans terminal)
- u afficher des colonnes orientées utilisateur
Information des processus
$ ps -F
UID PID PPID C SZ RSS PSR STIME TTY TIME CMD
jean 1435 356 0 3832 2960 7 15:24 pts/0 0:00 ps -F
$ ps u
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
jean 252 0.0 0.0 384 353 tty1 R+ 10:08 0:00 ps u
- UID (et USER): utilisateur du processus
- PID: identifiant du processus
- PPID: identifiant du processus parent
- STIME (et START): date et heure de démarrage
- CMD (et COMMAND): ligne de commande
→ Les autres colonnes une autre fois
Autres options pratiques de ps
Filtrer
* -p par PIDs
* -C par noms de commande (extra)
* -u par utilisateurs
* -x par l’utilisateur courant (extra)
Afficher
* -o indiquer les colonnes voulues
* L lister les colonnes possibles (BSD)
* –forest affiche l’arborescence (extra)
* –sort trie les lignes (extra)
Suivre en temps réel les processus
Commande top: processus en temps réel (extra)
- Liste les processus par utilisation processeur
- Interface interactive
- Plein de commandes pour filtrer et trier
Quelques commandes
* q (ou Ctrl+C) quitter
* h affiche l’aide
* P trier par consommation CPU (défaut)
* M trier par consommation mémoire
* N trier par PID
* T trier par temps CPU total
* k terminer un processus
Services et démons (daemon)
En général / souvent
- Application qui attend et répond à un événement
- Répond à des requêtes réseau et/ou locales
- Pas invoqué explicitement, ne dépend pas d’un terminal
- Processus démarré automatiquement par init ou systemd
- Isolé dans des utilisateurs dédiés (dit système)
- Nom terminé par d (pour daemon)
Exemples
* init ou systemd: premier processus du système
* crond: planifie des tâches
* dhcpd: configuration TCP/IP automatique des clients
* httpd: sert les ressources HTTP
* sshd: accepte les connexions SSH entrantes
* lpd ou cups: gère les impressions
* gdm: gestionnaire de connexion graphique (Gnome display
manager)
* mpd: démon pour jouer de la musique
Exemple: serveur web
- Logiciel qui répond aux requêtes du World Wide Web
- Utilise principalement le protocole HTTP
- Voir chapitre 8 pour les détails
Apache
* Serveur web (HTTP) le plus utilisé 43% en octobre 2019
* Première version en 1995
* Site officiel: https://httpd.apache.org/
* Licence Apache 2.0
Nginx
* Une alternative à Apache, 2e plus utilisé, en croissance (30%)
* Première version en 2004
* Site officiel: https://nginx.org/
* Licence BSD
Installation d’Apache
Sur Debian et ses dérivées (Ubuntu, Mint, etc.)
$ sudo apt update
$ sudo apt install apache2
apt est une interface du système de gestion de paquets (extra)
- update télécharger les informations sur les paquets à partir des
sources configurées. - install pour installer un paquet
- upgrade (et full-upgrade) pour mettre à jour les paquets
- remove (et purge) supprime un paquet
- search, show, list cherche et affiche des paquets
Paquet (ou paquetage) ⋆
Archive incluant
- des fichiers binaires et textes
- des informations et
- des procédures
nécessaires à l’installation et à la désinstallation d’un logiciel sur un
système d’exploitation.
Contenu d’un paquet
- fichiers exécutables ou sources
- fichiers de configuration
- documentation
- dépendances logicielles
- scripts d’installation
- scripts de désinstallation
Gestionnaire de paquets
- L’approche recommandée pour installer un logiciel sous Unix
- Installe et gère les programmes et fichiers accessoires
- Gère les versions et les dépendances entre paquets
- Permet de mettre à jour et de désinstaller proprement
- Exemples: apt, dnf, pacma
De nombreux langages de programmation fournissent aussi des
gestionnaires de paquets spécifiques à leurs écosystèmes
Exemples:
* pip: Python
* gem: Ruby
* cargo: Rust
* npm: Node.js (Javascript)
* cabal: Haskell
Installer à partir des sources
1 Télécharger le code source de l’application
2 Compiler l’application
→ Nécessite d’avoir déjà les compilateurs et bibliothèques
3 Installer l’application pour permettre son exécution
→ Par les gens (utilisateurs) ou automatiquement (services)
Pour experts
* Lisez la documentation
* Pas de mises-à-jour automatiques
* La désinstallation n’est pas toujours simple
* Pour les conflits, débrouillez-vous!
Démarrage du système
Au démarrage, plusieurs services sont lancés par init (le premier
programme)
Plusieurs gestionnaires de services existent:
init Système V (1983)
* Les services sont gérés par les scripts dans /etc/init.d
* Doivent supporter minimalement les commandes start et stop
* Exemple: /etc/init.d/apache2 pour Apache
Systemd (2010)
* Sur la majorité des distributions Linux modernes
* Centralise la gestion de nombreux comportements
* Les services sont gérés via des fichiers de configuration
* Exemple: /lib/systemd/system/apache2.service
* Plus ou moins rétro-compatible avec init système V
Gestion des services
* service exécute une commande d’un service système V (extra)
* systemctl gère les services Systemd (extra)
Liste les services
$ sudo service –status -all
$ systemctl list -units
# État d’un service
$ sudo service apache2 status
$ systemctl status apache2.service
Autres actions possibles sur les services
* status — informations sur l’état du service
* start — démarrer le service
* stop — arrêter le service
* reload — mettre à jour l’état du service et recharger la
configuration
* restart — redémarrer le service
Configuration des programmes et services
Configuration globale et pour les services
/etc/ contient les fichiers de configuration des services
- Fichiers textes simples facilement éditables
→ permet de configurer/réparer un système minimal - Formats spécifiques aux applications
→ Lisez la documentation
Exemple: /etc/bash.bashrc configuration générale du shell interactif
Pour les utilisateurs
Fichiers de configuration dans le répertoire maison ~
* Directement dans ~ en tant que fichier caché (classique)
* Dans ~/.config (moderne)
Exemple: ~/.bashrc configuration locale du shell interactif
Configuration du shell
Les fichiers de configurations du shell sont en fait des scripts shell.
- Chaque ligne est une commande shell
- Les commandes sont exécutées dans l’ordre
- Les lignes vides sont ignorées
- Les commentaires sont ignorés (commencent par #)