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.
A
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
Q

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.
A
26
Q

Proxys inverse (reverse proxy ou gateway)
Intermédiaire entre client et serveur, mais côté serveur

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

Contenu accessible
Contenu web

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

Accéder au site web
Ouvrir un navigateur à l’adresse suivante.

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

Naviguer sur le web
Navigateur (ou client web)

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

Localisation des ressources ⋆
URL (uniform resource locator)

schéma:[//autorité]chemin[?requête][#fragment]

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

Télécharger des ressources

A
  • wget (GNU)
  • curl (Extra)
    $ wget “https://fr.wikipedia.org/wiki/Shell_Unix”
    $ curl “https://fr.wikipedia.org/wiki/Shell_Unix”
32
Q

Wget ou cURL?

A

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
Q

Cybersécurité
Exposer un service c’est prendre un risque.
Il faut respecter les bonnes pratiques

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

Journaux (log)

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

Traditionnellement, les journaux des services sont dans /var/log/

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

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

A

Note
L’emplacement et le contenu des logs sont configurables

37
Q

SSH = secure shell

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

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

A
39
Q

SSH avec les clés

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

Manipulation de sessions
* tmux démarre une nouvelle session
* tmux new -s <nom> démarre une session nommée
* tmux a, tmux at, tmux attach charge la dernière session
* tmux a -t <nom> charge une session nommée
* tmux ls liste les sessions existantes
* tmux kill-session -t <nom> termine une session nommée</nom></nom></nom>

A
41
Q

Manipulation de l’interface

A

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
Q

C’est quoi
« Docker est une technologie de conteneurisation qui permet la
création et l’utilisation de conteneurs Linux »

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

Terminologie
* Image
* Conteneur
* Registry
* Docker HUB
* Dockerfile

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