Chapitre 5: Administration des systèmes Flashcards

1
Q

L’administrateur système est la personne responsable
* des serveurs et postes informatique
* au niveau logiciel
Tâches habituelles….

A
  • Installation et désinstallation des logiciels
  • Configuration des logiciels
  • Mise-à-jour des logiciels
  • Supervision des services logiciels
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Un programme en cours d’exécution =

A
  • 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

Un processus est un concept important du système d’exploitation

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

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

A
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Commande ps: instantané des processus

A

Par défaut ps affiche la liste des processus
* De l’utilisateur courant
* Dans le terminal en cours
* Avec peu d’information

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Arborescence des processus

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Options de ps
Trois familles, plein d’options

A
  • 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
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

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

A
  • 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
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Suivre en temps réel les processus
Commande top:

A

processus en temps réel (extra)
* Liste les processus par utilisation processeur
* Interface interactive
* Plein de commandes pour filtrer et trier

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Quelques commandes
* q (ou Ctrl+C)
* h
* P
* M
* N
* T
* k

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Services et démons (daemon)
En général / souvent…

A
  • 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)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q
  • init ou systemd:
  • crond:
  • dhcpd:
  • httpd:
  • sshd:
  • lpd ou cups:
  • gdm:
  • mpd:
A
  • 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
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

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

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Paquet (ou paquetage)
Archive incluant…

A
  • 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.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Contenu d’un paquet…

A
  • fichiers exécutables ou sources
  • fichiers de configuration
  • documentation
  • dépendances logicielles
  • scripts d’installation
  • scripts de désinstallation
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Gestionnaire de paquets

A
  • 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, pacman
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

De nombreux langages de programmation fournissent aussi des
gestionnaires de paquets spécifiques à leurs écosystèmes
Exemples:

A
  • pip: Python
  • gem: Ruby
  • cargo: Rust
  • npm: Node.js (Javascript)
  • cabal: Haskell
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

Démarrage du système
Au démarrage, plusieurs services sont lancés par init (le premier
programme)

Plusieurs gestionnaires de services existent:

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

Configuration globale et pour les services
/etc/ contient les fichiers de configuration des services

A
  • 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
19
Q

Pour les utilisateurs
Fichiers de configuration dans le répertoire maison ~

A
  • Directement dans ~ en tant que fichier caché (classique)
  • Dans ~/.config (moderne)
    Exemple: ~/.bashrc configuration locale du shell interactif
20
Q

Les fichiers de configurations du shell sont en fait des scripts shell.

A
  • 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 #)
21
Q

Noms associés à des valeurs qui affectent l’environnement du shell et
éventuellement celui des commandes exécutées

Quelques exemples:

  • HOME:
  • PATH:
  • PS1:
  • PWD:
A
  • HOME: Le répertoire d’accueil de l’utilisateur (utilisé par ~ et cd)
  • PATH: La liste des répertoires où chercher les commandes
  • PS1: L’invite de commande principale
  • PWD: Le répertoire de travail courant (mis à jour par cd)
    → Pour plus de détail, voir chapitre 7

Attention
Toujours protéger avec des guillemets doubles (“)
$ export FOO=”la vie”
$ echo “J’aime $FOO” > “$FOO”
$ cat “$FOO”

22
Q

Configuration d’Apache
Fichiers et dossiers de configuration

$ ls /etc/apache2

apache2.conf # Configuration globale
ports.conf # Ports sur lesquels écouter
sites -available/ # Hôtes virtuels disponibles
sites -enabled/ # Hôtes virtuels activés
mods-available/ # Modules disponibles
mods-enabled/ # Modules activés

  • apache2.conf appelé souvent httpd.conf peut aussi contenir les
    directives d’inclusion des autres fichiers et dossiers de
    configuration.
  • La directive Listen permet de spécifier le port et/ou l’addresse
    IP par défaut pour accéder au site.
23
Q

Hôte par défaut
$ cd /etc/apache2/sites -available
$ sudo vim 000-default.conf

A

Configuration hôte par défaut:

<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost >

24
Q

Redémarrage du serveur
Il faut recharger le serveur web pour que le site web soit accessible

A

$ sudo service apache2 reload
ou
$ sudo systemctl reload apache2.service

25
Plusieurs domaines  * Un VirtualHost par nom de domaine différent. ServerName www.example.com # Ajouter dans VirtualHost * La directive DocumentRoot spécifie le dossier accessible sur le web.
26
Proxys inverse (reverse proxy ou gateway) Intermédiaire entre client et serveur, mais côté serveur
* Reçoit les requêtes de l’utilisateur et les envoie au serveur * Reçoit la réponse du serveur et la retourne au client * Le client peut ne pas avoir accès direct au serveur * Proxy: mod_proxy * Load balancing: ajouter mod_proxy_balancer Reverse Proxy dans la configuration Apache ProxyPass "/foo" "http://foo.example.com/bar" ProxyPassReverse "/foo" "http://foo.example.com/bar"
27
Contenu accessible Contenu web
* Dans le répertoire indiqué par la directive DocumentRoot. → /var/www/html par défaut * Dossier utilisateur: spécifié par la directive UserDir → UserDir public_html permet aux utilisateurs de créer un sous dossier public_html et d’y mettre le contenu accessible sur le web
28
Accéder au site web Ouvrir un navigateur à l’adresse suivante.
* Par défaut http://localhost ou http://nom.domaine.ext. Exemple: http://labunix.uqam.ca * Utilisateur http://nom.domaine.ext/~nomutilisateur Exemple http://labunix.uqam.ca/~ab123456
29
Naviguer sur le web Navigateur (ou client web)
* Logiciel qui simplifie la navigation * Aussi appelé fureteur (ou browser) * Saisit les requêtes des clients * Communique avec le serveur * Affiche le contenu demandé Exemples * Graphiques: Firefox, Chromium, Safari, IE, … * Console: lynx, elinks, w3m * Ligne de commande: wget, curl
30
Localisation des ressources ⋆ URL (uniform resource locator) schéma:[//autorité]chemin[?requête][#fragment]
* schéma: http, https, ftp, mailto, file, etc. * autorité: de la forme [utilisateur@]hôte[:port] * chemin: chemin vers la ressource * requête: suite de paires attribut-valeur (souvent) * fragment: identifie une partie spécifique de la ressource → détails au chapitre 8, au INF3190 et au INF3271 Exemples * http://www.wikipedia.org/ * https://alice@abc.com:99/forum/?tag=bash&order=newest#top
31
Télécharger des ressources
* wget (GNU) * curl (Extra) $ wget "https://fr.wikipedia.org/wiki/Shell_Unix" $ curl "https://fr.wikipedia.org/wiki/Shell_Unix"
32
Wget ou cURL?
cURL * Plus portable * Basé sur une bibliothèque libcurl * Supporte plus de protocoles * Licence MIT Wget * Souvent déjà installé * Commande autonome * Récursif (miroir) * Licence GPL
33
Cybersécurité Exposer un service c’est prendre un risque. Il faut respecter les bonnes pratiques
* Limiter les services exposés * Contrôler les données exposées OWASP 2017 A3-Sensitive Data Exposure * Configurer correctement (et éviter les modes debug) OWASP 2017 A6-Security Misconfiguration * Utiliser des logiciels fiables et à jour OWASP 2017 A9-Using Components with Known Vulnerabilities * Surveiller les journaux et les alertes OWASP 2017 A10-Insufficient Logging & Monitoring → OWASP: Open Web Application Security Project, organisme qui promeut la sécurité du web.
34
Journaux (log)
* Un programme interactif communique constamment et directement à l’utilisateur qui l’a configuré et l’exécute. * Un service ne communique pas directement avec l’administrateur → Il écrit un journal des événements et des problèmes
35
Traditionnellement, les journaux des services sont dans /var/log/
* Fichiers textes simples * Ayant souvent l’extension .log (exemple /var/log/auth.log) * Parfois archivés automatiquement (exemple /var/log/auth.log.2.gz) * Lisibles avec un système minimal * grepable et compatibles avec les outils Unix habituels
36
Journaux Apache Dans /var/log/apache2/ $ ls /var/log/apache2 access.log # Enregistrement des requêtes error.log # Enregistrement des erreurs $ grep " 404 " /var/log/apache2/access.log $ tail -f /var/log/apache2/*.log
Note L’emplacement et le contenu des logs sont configurables
37
SSH = secure shell
* Permet de se connecter à un serveur * Avec une connexion sécurisée * Anciennement, on utilisait telnet, qui n’est pas sécurisé * Requiert de s’authentifier * Utilise une clé publique pour identifier le serveur * Implémenté dans OpenSSH: ssh (BSD) $ ssh ab123456@java.labunix.uqam.ca #connexion $ exit # deconnexion
38
Transférer des fichiers scp — copie des fichiers par connexion sécurisée * -r copie récursivement (suit les liens symboliques) * -p préserve les dates et les droits * -P spécifie un port
39
SSH avec les clés
* On génère une paire de clés (publique, privée) → ssh-keygen → Dans ~/.ssh/id_rsa et ~/.ssh/id_rsa.pub par défaut * On entre une phrase de passe (optionnelle) → Permet de déchiffrer la clé privée → Utilisée par le client * On copie la clé publique sur la machine distante → ssh-copy-id → Elles vont dans ~/.ssh/authorized_keys * On se connecte sans mot de passe Autres utilisations * Automatiser les connexion SSH * Identités multiples (une par paire de clés) * Protocole git via SSH (on enregistre ses clés publiques)
40
Manipulation de sessions * tmux démarre une nouvelle session * tmux new -s démarre une session nommée * tmux a, tmux at, tmux attach charge la dernière session * tmux a -t charge une session nommée * tmux ls liste les sessions existantes * tmux kill-session -t termine une session nommée
41
Manipulation de l’interface
Panneaux * % séparation horizontale * " séparation verticale * o inverse les panneaux * q affiche la numérotation des panneaux * x tue le panneau * Espace change la disposition des panneaux Fenêtres * c nouvelle fenêtre * , nommer une fenêtre * w lister les fenêtres * f trouver une fenêtre * & tuer une fenêtre * . déplacer une fenêtre
42
C’est quoi « Docker est une technologie de conteneurisation qui permet la création et l’utilisation de conteneurs Linux »
* Un conteneur est un ensemble de processus isolés d’un système * Il partage le même noyau de système d’exploitation que son hôte → Il doit être compatible avec le système d’exploitation sous-jacent * Il contient tous les fichiers nécessaires à son exécution
43
Terminologie * Image * Conteneur * Registry * Docker HUB * Dockerfile
* Image une archive en lecture seule contenant un ensemble de fichiers (exécutables, librairies, etc.) * Conteneur est une instance active (started) ou inactive (stopped) d’une image * Registry est un annuaire de stockage des images Docker → autrement dit, c’est un dépôt d’images Docker * Docker HUB dépôt public d’images mises à disposition par Docker * Dockerfile fichier texte de description d’une image