Administration UNIX




                      Johan Moreau

                 Johan.Moreau@ircad.fr




          Formation...
Johan Moreau




    Johan.Moreau@ircad.fr

 RSSI et Ingénieur R&D, IRCAD

  Membre du bureau Clusir-Est

Enseignement en ...
Administration UNIX

1. Introduction : Unix, une grande famille

2. Les bases : architecture des systèmes UNIX

3. Nos ami...
Bibliographie

– La programation sous UNIX. Ediscience, J.-M. Rifflet, Ediscience, ISBN
  2-84074-013-3
– Systèmes d’exploi...
1. Introduction

1. Pourquoi ce cours ?

2. Pourquoi UNIX ?

3. Introduction à l’administration

4. Quels besoins pour l’e...
Pourquoi ce cours ?

L’administration de service informatique est un vecteur d’emploi important.

Les systèmes basés sur U...
Pourquoi UNIX ?

Objectif d’un système d’exploitation :

– Interface entre le matériel et l’utilisateur (disque, CPU, ...)...
Qu’est que GNU Linux ?

GNU/Linux est le terme que promeut le projet GNU et ses supporters, en particulier
Richard M. Stal...
Introduction à l’administration

– Les "Systèmes d’Informations" ont une forte croissance ces dernières années.
– La compl...
Les besoins de l’entreprise

– L’entreprise a toujours de nouveaux besoins.
– Une entreprise sans mouvement est destinée à...
Introduction à la sécurité

– la sécurité coûte cher :
  Étude du Computer Security Institute (rapport 2005) :

     En 20...
Introduction à la sécurité

Objectifs de la sécurité :


– Confidentialité : les données ne doivent pas                    ...
Unix, un monde à part

– 1969 UNICS : Ken Thompson, Dennis Ritchie
– 1971 + Brian Kernighan
– 1973 C
– 1978 Création de 1B...
2. Les bases

1. Démarrage du système

2. Structure de fichiers

3. Processus

4. Noyau




                               ...
Démarrage du système

Lancement d’un système Linux : boot et chargement du noyau
– Au boot le BIOS (ou EFI) exécute le MBR...
/etc/lilo.conf

boot = /dev/sda2
delay = 50

image = /vmlinuz
  root = /dev/sda2
  label = debian
  read-only

image = /vm...
Démarrage du système

– initialisation de la machine (CPU, mémoire, registres)
– initialisation de la structure des donnée...
inittab

– id :runlevel :action :process
– action possible
  – sysinit
  – once
  – wait
  – respawn
  – ctrlaltdel
  – in...
Périphérique UNIX

accès par des fichiers spéciaux : /dev/... :
– disques durs : hda, hdb, sda, sdb
– disquettes : fda, fdb...
Système de fichiers UNIX

– ext2, ext3, ext4, reiserfs4, zfs, ...
– NTFS, FAT, vfat
– iso9660
– nfs, smbfs
– ...




      ...
Structure de fichiers

Sous Unix un fichier :

– est désigné par un nom
– possède un unique inode
– peut être dans les états...
Structure de fichiers

Un inode stocke les informations suivantes :

– le type de fichier (-,d,l,c,p,b)
– le mode (permissio...
Structure de fichiers

Représentation graphique




                                    23
Structure de fichiers

Représentation logique du système de fichiers. C’est une arborescence, plus
généralement un graphe or...
Structure de fichiers

– / Répertoire racine
– /bin Executables nécessaires pour le démarrage et le fontionnement en mode
 ...
– /sbin comme bin, mais pour les commandes d’administration.
– /tmp Fichiers temporaires. Peuvent être effacés sans préavi...
– /var/lock Fichiers verrous
– /var/log Journaux divers
– /var/run Fichiers contenant les numéros des processus des servic...
Noyau

Un noyau est un fichier exécutable qui se trouve sur le disque de boot Le nom de ce
fichier n’est pas standard et peu...
Noyau

Il y a 2 types de noyaux,

Micro-Noyau :
– petit noyau avec une fonctionnalité minimale : Initialisation, communica...
Noyau

Avantages du micro-noyau :

– Séparation des pilotes du noyau (sécurité,stabilité,gestion)
– Taille du noyau (lance...
Noyau

Combinaison des avantages du micro-noyau avec les avantages du noyau
monolithique :

– Noyau monolithique qui peut ...
Noyau

Les commandes en charge des modules :

– lister des modules chargés (lsmod)
– charger un module (insmod)
– décharge...
3. Nos amis

1. Compte Unix

2. Commande passwd

3. Droits sur les fichiers

4. Commande chown, chmod

5. Environnement d’é...
Compte UNIX

– un nom d’utilisateur (login) défini par un identifiant (uid)
– un mot de passe
– un groupe principal auquel a...
Le shell

– Plusieurs familles : sh (sh, ksh, bash, zsh) vs csh (csh, tcsh)
– Fichier de configuration par utilisateur : .p...
Login

Le login :

– Identification de l’utilisateur par le nom de login
– Base de l’autorisation
– Unique par le système d...
passwd

Le mot de passe :

– Vérification de l’utilisateur
– N’est pas stocké en clair sur le disque
– Vérifié par un algori...
passwd

La commande passwd va mettre à jours les fichiers :

– /etc/passwd
– /etc/shadow
– /etc/groups
– /etc/gshadow

Le fi...
Les mots de passe

C’est pourtant facile d’avoir un bon mot de passe :

– élargir l’alphabet : minuscules, majuscules, chi...
Droits d’accès

Types des droits :

– Lecture (r)
– Écriture (w)
– Exécution (x)

Notation :
– rw-r—–
– 640
Exemple :
– $ ...
Principe du confinement, ou du moindre privilège

Problème : comment changer son mot de passe (nécessite le privilège d’écr...
Droits d’accès - Les cas particuliers

SUID, SGID (set user/group ID) :

– Droit s (avec x) ou S (sans x), 4000 (user) ou ...
Principe du confinement, ou du moindre privilège

Utilisations de cette élévation de privilège :
– changement de mot de pas...
Droits d’accès

Modifications des droits :

– chmod u+rw file
– chmod 640 file

Modification du propriétaire :
– chown jmoreau...
Environnement

– Trouver une commande : which commande
– Cherche dans la variable PATH
– Pour connaitre les chemins : echo...
4. Les commandes

1. La documentation sous Unix

2. Les variables shell

3. Les commandes de base

4. Les commandes "avanc...
Documentation

Le système le plus important : man

– man ls
– man man
– man passwd
– man 5 passwd

Les niveaux de man :

 ...
5. Formats des fichiers et conventions.

6. Jeux

7. Divers

8. Commandes de gestion du système (généralement réservées à r...
Documentation

Un système récent : info
– info est plus puissant que man mais moins standard
– plus difficile à manipuler q...
Variable

Le shell peut utiliser des variables :
– les variables sont non typées
– une simple déclaration A=monFichier
– a...
Variable

Chaîne de caractères, 3 possibilités :

– Pas de modifications avec ” (simples quotes) :
  – echo ’Ceci est un $A...
Variable

Variable tradionnellement définie :
– HOME
– LOGIN
– PATH
– PWD
– USER
– ...
On peut obtenir l’ensemble des varia...
Commande de base

ls - LiSt - liste le contenu d’un répertoire

– ls
– ls rep
– ls -l /tmp
– ls ../etc
– ls -altr




    ...
Commande de base

cd - Change Dir - modifie le répertoire courant

– cd
– cd /tmp
– cd ..
– cd /usr/local
– cd -




      ...
Commande de base

cp - CoPy - copie un fichier (au sens général)

– cp file1 file2
– cp -r dir1 /tmp
– cp * /tmp




        ...
Commande de base

mv - MoVe - déplace (ou renomme) un fichier (au sens général)

– mv file1 file2
– mv file1 /tmp/
– mv -f file...
Commande de base

ln - LiNk - crée un lien

– ln -s file1 file2
– ln file1 file2




                                  57
Commande de base

mkdir - MaKe DIRectory - crée un répertoire

– mkdir /home/user/jmoreau
– mkdir -p /tmp/titi/toto




  ...
Commande de base

rm - ReMove - supprime le fichier ou le répertoire

– rm file1
– rm -f file1
– rm -rf /tmp/toto/
– rm -i fil...
Commande de base

pwd - Path on Working Directory - retourne le répertoire de travail

– pwd




                         ...
Commande de base

id/whoami - IDentity - retourne l’identité de l’utilisateur

– id
– whoami




                         ...
Commande de base

cat - conCATenate - affiche des fichiers

– cat file1
– cat file1 file2
– cat -n file1




                   ...
Commande de base

more/less - affiche des fichiers page par page

– more file1
– less file1




                              ...
Commande avancée

find - Recherche un fichier (au sens large)

– find .
– find . -name "file1"
– find . -name "file1 -exec {}  ;
...
Commande avancée

gzip/gunzip - applique l’algorithme Lempel-Ziv sur le fichier

– gzip file
– gunzip file.gz




           ...
Commande avancée

tar - Tape ARchiver - crée une archive

– tar cf file.tar dir1
– tar xf file.tar
– tar zxvf file.tar.gz dir...
Commande avancée

du - Disk Usage - Affiche des statistiques sur les systèmes de fichiers montés

– du
– du -k
– du -h
– du ...
Commande avancée

df - Display Free - Affiche l’espace disponible

– df




                                         68
Commande avancée

grep - affiche des lignes qui contiennent ou pas l’expression

– grep XYZ file1
– grep -v XYZ file1
– grep ...
Commande avancée

head/tail - affiche les premières/dernières lignes

– head -5 file1
– head -c 20 file1
– tail -5 file1
– tai...
Commande avancée

sort - Tri les données

– sort
– sort -n
– sort -r




                                71
Commande avancée

uniq - Applique un filtre sur les ligne répétées

– uniq
– uniq -c




                                  ...
Commande avancée

tr - TRanslate - convertit les caractères de la première liste dans les caractères de
la deuxième liste ...
Commande avancée

bg/fg - BackGround - Envoi le processus en arrière/avant plan

– bg monDemon
– fg




                  ...
Commande avancée

ps - Process Status - Donne des informations sur les processus en cours

– ps -e
– ps -a
– ps -ea




  ...
5. Les services

1. Le démarrage des services (ou "démons")

2. Les exemples de base

3. Les exemples "avancées"




     ...
initd

– cf Chapitre 1, le noyau donne la main à init à la fin du chargement
– init a le PID n 1
– init est le " père " de ...
runlevel

Pour rappel (cf Chapitre 1). 0. Arrêt du système effectué par la commande init 0
(shutdown -h sous Linux)
 1. Mo...
scripts de démarrage

2 cas : BSD ou SYSTEM V

– BSD : utilisation d’un ou deux scripts qui gèrent l’ensemble des tâches à...
scripts de démarrage

– inittab exécute en fonction du runlevel (exemple level 3) : /etc/rc.d/rc3
– /etc/rc.d/init.d : scr...
Script de démarrage des services

Exemple /etc/rc2.d/S* :
/etc/rc2.d/S10sysklogd         /etc/rc2.d/S20lpd
/etc/rc2.d/S11p...
Script de démarrage des services

Les services ont généralement une syntaxe simple permettant de les lancer ou de
les stop...
Script de démarrage des services
#!/bin/sh

PATH=/bin:/usr/bin:/sbin:/usr/sbin
DAEMON=/usr/sbin/lpd
PIDFILE=/var/spool/lpd...
if start-stop-daemon --quiet --stop --signal 0 
                 --pidfile $PIDFILE --name lpd
        then
              ...
Script de démarrage des services

Sous Linux, le répertoire /var/lock/subsys contient la liste des services lancés, un
fich...
ouverture de session

– init lance le processus getty(gestionnaire de terminal).
– getty lance un prompt attendant la sais...
Arrêt du système

Arrêt :
– shutdown -h now
– halt
Redémarrage :
– shutdown -r now
– reboot




                          ...
Exemples de services de base

– /etc/init.d/network : script de gestion du réseau
– /etc/init.d/sshd : script de gestion d...
Exemples de services "avancés"

– /etc/init.d/apache : script de gestion du serveur web Apache
– /etc/init.d/nfsd : script...
syslog

Le démon syslog(processus appelé syslogd) permet de recevoir, traiter et stocker
des messages d’erreurs(ou d’infor...
syslog

L’origine définit un ensemble de systèmes et de sous-systèmes(noyau, services). La
liste, extensible, est composée ...
syslog

Le niveau définit la "criticité" :

– emerg : Le système est inutilisable
– alert : Une intervention immédiate est ...
syslog

On peut envoyer les messages de syslog vers différentes destinations

– fichiers (arborescence /var/log)
– mail à u...
6. Matériels et logiciels

1. RAID

2. Partionnement

3. Logiciels

4. Planification de tâches




                        ...
RAID

De part l’impact d’une indisponibilité d’un service tournant sur une machine
« serveur », les choix matériels pour c...
RAID

On distingue deux types de supports RAID :

– un support matériel : Le contrôleur de disque gère lui-même le RAID et...
RAID

Disques en miroir :

Les écritures de données sont dupliquées sur plusieurs disques, généralement
deux, pour se prém...
RAID

– RAID 0 : Un disque sans redondance avec bandes : agrégat de plusieurs
  partitions en une seule.
– RAID 1 : Des di...
Partionnement

Une fois la technologie « disque » choisie, il est important de décider comment
répartir les données sur le...
Partionnement

On peut également subdiviser le système en plusieurs partitions. Les raisons d’un
tel partitionnement plus ...
Partionnement

La performance est souvent un problème négligé, mais il est essentiel. Un bon
partitionnement peut contribu...
Partionnement

Exemple de partionnement pour un serveur de développement :




                                     102
Partionnement

Exemple de partionnement pour un serveur de bases de données :




                                     103
Partionnement

Exemple de partionnement pour un serveur web :




                                     104
Les logiciels sous UNIX

– à partir des sources
– sous Debian
– sous RedHat




                                   105
Les logiciels sous UNIX

A partir des sources :
– télécharger, vérifier, extraire, configurer, compiler, installer
– utilisa...
Les logiciels sous UNIX

Sous Debian :
– /etc/dpkg/dpkg.cfg, /etc/apt/apt.conf, /etc/apt/sources.list
– /var/lib/dpkg/*
– ...
Les logiciels sous UNIX

Sous RedHat :
– rpm
– /etc/rpmrc, /usr/lib/rpm/*
– urpmi/yum
Système précédement moins performant...
Planification de tâches

Le démon cron exécute des commandes pour un utilisateur, selon des critères
temporels : date et he...
Planification de tâches

Il peut y avoir des contraintes d’utilisation.

– L’utilisateur doit avoir l’autorisation de soume...
Planification de tâches

Le démon cron fonctionne à l’aide d’une table, appelée une « crontable ». C’est un
fichier texte si...
Planification de tâches

On utilise le format suivant pour les valeurs périodiques :
– Une valeur pour indiquer quand il fa...
Planification de tâches

Exemples : Exécution de df tous les jours, toute l’année, tous les quarts d’heure :

0,15,30,45 * ...
Planification de tâches

La commande « at » exécute une commande à une date et une heure données. La
commande est lue depui...
7. Réseau

1. Rappel sur IP

2. La configuration réseau

3. Le client DHCP et le client DNS

4. Le filtrage IP par iptables
...
Rappel sur IP

– Créé par la DARPA : Defense Advanced Research Project Agency dans les
  années 70 pour le projet ARPANET
...
IP sous UNIX

– Présence d’une carte réseau ! ou en tout cas d’une carte fournissant de la
  modulation/démodulation de fr...
Interface réseau

– Présence d’une « pseudo-interface » pour faire la correspondace entre les
  couches réseau et les couc...
Interface réseau

– eth0 : pseudo-interface ethernet 0
– adresse IP : 192.168.0.10
– masque sous-réseau : 0xffffff00, 255....
Interface réseau

– Possibilité de créer des alias (IP-Aliasing) : eth0 :0
– Possibilité de créer des pseudo-interfaces à ...
Le routage IP

– A chaque émission de paquet IP, un aiguillage est opéré : « le routage »
– Par où dois-je envoyer ce mess...
Le routage IP

– Pour configurer les route, utilisation de la commande : route
[jmo@jmoreau]# route -n
Kernel IP routing ta...
Le routage IP

– route add default gw ...
– route add -net 192.168.1.0 netmask 255.255.255.0 eth0
– route add -host 192.16...
fichier de configuration du réseau

– RedHat/Fedora : /etc/sysconfig/network-scripts
– Debian/Ubuntu : /etc/network/interface...
Le client DHCP

– Allocation dynamique de paramêtres réseaux
– Dynamic Host Configuration Protocol (DHCP)
– Le but : s’adre...
Le client DHCP
apt-get install dhcp3-client

Dans le fichier /etc/network/interfaces

# The loopback interface
auto lo
ifac...
Le client DNS

– La configuration peut être fournie de différentes manières :
   – via le fichier /etc/network/interfaces ( ...
Le filtrage IP

– Un filtre à paquets est un programme qui examine l’en-tête des paquets qui
  passent, et décide du sort du...
Le filtrage IP
                    Applications
                   ..............
                     .^.     |
          ...
Le filtrage IP
La commande iptables sert à administrer ces fonctionnalités de filtrage. Cette
commande accepte de nombreuses...
Le filtrage IP
La règle suivante autorise les paquets en provenance de l’adresse ip IpSrc, port
PortSrc et à destination de...
Le filtrage IP
La règle suivante bloque les paquets en provenance de IpSrc et à destination de
IpDst, de protocole Proto (q...
Le filtrage IP

– Lorsqu’une règle est ajoutée avec la commande iptables, elle est immédiatement
  active.
– Les ports et l...
Le filtrage IP
# Insérer les modules de suivi de connexion (non nécessaire si
# compilé dans le noyau).
insmod ip_conntrack...
Le filtrage IP
# ping -c 1 127.0.0.1
PING 127.0.0.1 (127.0.0.1): 56 data bytes
64 bytes from 127.0.0.1: icmp_seq=0 ttl=64 t...
8. Le monde des serveurs

1. HTTP

2. SSH

3. NFS/SMBFS

4. NIS/LDAP/Kerberos




                                 136
HTTP, HTML, Apache

– HTML : Hypertext Markup Language, HTML permet en particulier d’insérer des
  hyperliens dans du text...
Principe d’un serveur Web




           138
Principe d’un serveur Web




           139
Principe d’un serveur Web




           140
HTTP
telnet www.google.fr 80

GET / HTTP/1.0
Host: example.com
Referer: http://example.com/

<html>
<head>
<meta http-equi...
Les serveurs Web

– Mode statique, le serveur dispose de pages HTML totalement écrites et ne
  nécessitant aucune autre in...
Apache

– successeur de NCSA HTTPd 1.3
– support de multiples platformes
– support multithread
– support d’IPv6
– modules ...
Apache : .htaccess

– les .htaccess sont des fichiers de configuration d’Apache
– ils peuvent être placés dans n’importe que...
Apache : virtualhost
 # cd /etc/apache2/sites-enabled
 # vi www.mondomaine.fr

 # Ne mettre cette ligne que dans UN seul f...
Apache sur Debian

– apt-get install apache2
– apt-get remove apache
– /var/log/apache2/access.log : contient les logs de ...
SSH : définition

– SSH (Secure SHELL) permet de se connecter à un ordinateur distant et de
  disposer d’un shell sécurisé....
SSH : principes

– ssh <login>@<nom ou adresse IP du serveur>
– ssh jmo@mamachine ou ssh mamachine -l jmo
– ssh mamachine ...
SSH : fonctionnalités

– scp, sftp, ...
– existe sous windows via Putty, Winscp ou cygwin
– clé automatique via la créatio...
SSH : tunnel




ssh -L 2012 :serveur.exemple.org :80 toto@serveur.exemple.org




                                      1...
Système de fichiers réseau

– afin de fournir un espace de stockage commun
– pour fournir un espace de sauvegarde
– pour cen...
NFS

– Le protocole NFS (Network File System) permet de partager des fichiers dans les
  réseaux Unix.
– Le principe de mon...
NFS : configuration

– apt-get install nfs-kernel-server
– man exports : /etc/exports
 $ cat /etc/exports

 # fichier exemp...
NFS et les RPC

– De manière sous-jacente NFS utilise les RPC
– RPC : Remote Procedure Call
– RPC : Ensemble d’apels de pr...
NFS côté client

– Les services (portmap et nfs) doivent être lancés
– Puis le montage doit être réalisé
 mount -t nfs <no...
smbfs/CIFS

– Samba est l’implémentation du protocole SMB (Server Message Block) sous Unix
  / Linux. Il sert à partager d...
smbfs/CIFS

– apt-get install samba smbclient smbfs winbind
– /etc/samba/smb.conf
– testparm analyse le fichier smb.conf et...
smbfs/CIFS : Samba

– Projet libre et gratuit : Samba
– 4 modes configurations
  – Partage par ressource
  – Partage par ut...
SAMBA
# Section GLOBAL
# Configuration globale de Samba
[global]
      # Nom du groupe de travail
      workgroup = WORKGR...
SAMBA : partage par ressource sur un réseau Workgroup
Dans le cas du mode share, pour pouvoir positionner un mot de passe
...
SAMBA : partage utilisateur sur un réseau Workgroup

Dans le cas du mode user, pour ne partager une ressource partagée qu’...
SAMBA : partage utilisateur sur un réseau Workgroup

Coté Linux, les utilisateurs doivent avoir le droit d’écriture sur le...
SAMBA : partage sur un domaine Microsoft

Remarque : Pour que le serveur Linux puisse rejoindre le domaine existant, il fa...
SAMBA : partage sur un domaine Microsoft

Dans le cas du mode server, les utilisateurs (login et mot de passe) sont définit...
NIS

– Network Information System
– Système client-serveur
– Développement de SUN
– Base de donnée avec des informations c...
NIS

– Serveur Maitre/Esclave afin d’augmenter la robustesse
– Serveurs secondaires mis a jour régulièrement, mais pas inst...
NIS : côté serveur

– apt-get install nis
– /etc/defaultdomain
– /etc/ypserv.securenets avec 255.255.255.0 192.168.30.0
– ...
NIS : côté client

– /etc/defaultdomain
– /etc/yp.conf avec l’adresse du serveur ypserver 192.168.30.230
– /etc/init.d/nis...
LDAP

– Lightweight Directory Access Protocol
– à l’origine une surcouche à X500 (système lourd et non adpaté à TCP/IP)
– ...
LDAP : les caractéristiques

– Base de donne multi-utilisation avec un schéma standardisé et extensif
– Conception optimis...
LDAP : les modèles

– modèle d’information, qui donne les données de l’annuaire
– modèle de désignation, qui organise l’ar...
LDAP : LDIF

– Représentation des données LDAP sous forme de texte
dn: cn=host1,ou=hosts,dc=testing,dc=ldap
changetype: ad...
LDAP : OpenLDAP : côté serveur
server # domainname testing.ldap
server # domainname > /etc/defaultdomain

server # vi /etc...
LDAP : OpenLDAP : côté client
server # ldapmodify -c 
> -D "cn=directory manager" 
> -w nssecret 
> -f /tmp/host1.ldif

cl...
LDAP

– getent passwd
– ldapadd
– ldapsearch
– ldapdelete
– ...




                   175
Kerberos

– Problème du LDAP, le mot de passe en clair lors des communication
– Kerberos est un protocole d’authentificatio...
Kerberos




  177
Kerberos




  178
Kerberos




  179
Kerberos




  180
Prochain SlideShare
Chargement dans…5
×

2009 2010 Fip3 A Unix

2 570 vues

Publié le

Publié dans : Formation, Technologie
0 commentaire
1 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

Aucun téléchargement
Vues
Nombre de vues
2 570
Sur SlideShare
0
Issues des intégrations
0
Intégrations
29
Actions
Partages
0
Téléchargements
57
Commentaires
0
J’aime
1
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

2009 2010 Fip3 A Unix

  1. 1. Administration UNIX Johan Moreau Johan.Moreau@ircad.fr Formation d’Ingénieurs en Partenariat Spécialité « informatique industrielle » École Nationale Supérieure de Physique de Strasbourg Centre de Formation d’Apprentis de l’Industrie du Haut-Rhin 2009–2010 1
  2. 2. Johan Moreau Johan.Moreau@ircad.fr RSSI et Ingénieur R&D, IRCAD Membre du bureau Clusir-Est Enseignement en Master ULP, FIP 2
  3. 3. Administration UNIX 1. Introduction : Unix, une grande famille 2. Les bases : architecture des systèmes UNIX 3. Nos amis : utilisateurs, groupes, et sécurité 4. Les commandes : basiques et avancées 5. Les services : bases et démarrage 6. Matériels et logiciels : installation et choix 7. Réseau : configuration et filtrage 8. Le monde des serveurs : HTTP,NFS,SMBFS, ... 3
  4. 4. Bibliographie – La programation sous UNIX. Ediscience, J.-M. Rifflet, Ediscience, ISBN 2-84074-013-3 – Systèmes d’exploitation, sysytèmes centralisés, systèmes distribués, A. Tanenbaum, Inter-Editions, ISBN 978-2-7440-7299-4 – Les cahiers de l’admin : BSD, E. Dreyfus, Eyrolles, ISBN 978-2-212-11463-8 – Advanced Programming in the UNIX Environnement W.R. Stevens, Addison-Wesley, ISBN 0-201-56317-7 4
  5. 5. 1. Introduction 1. Pourquoi ce cours ? 2. Pourquoi UNIX ? 3. Introduction à l’administration 4. Quels besoins pour l’entreprise ? 5. Introduction à la sécurité 6. Unix, un monde à part 5
  6. 6. Pourquoi ce cours ? L’administration de service informatique est un vecteur d’emploi important. Les systèmes basés sur UNIX sont de plus en plus nombreux. L’administration UNIX et Windows est basée sur des concepts différents. But de ce cours : donner un aperçu général du fonctionnement des systèmes UNIX afin d’en maîtriser l’administration de base. Le système qui sera utilisé pour présenter UNIX est GNU/Linux. 6
  7. 7. Pourquoi UNIX ? Objectif d’un système d’exploitation : – Interface entre le matériel et l’utilisateur (disque, CPU, ...) – Séparation des ressources d’un utilisateur des autres (données, processus, ...) Pourquoi le choix d’UNIX ? – Le prix (surtout pour Linux, FreeBSD, OpenBSD, ...). – La disponibilité des sources. – Apprentissage : concepts fondamentaux dans un système, simple et ouvert. – Réellement multi-utilisateurs et multi-tâches depuis l’origine. 7
  8. 8. Qu’est que GNU Linux ? GNU/Linux est le terme que promeut le projet GNU et ses supporters, en particulier Richard M. Stallman, son fondateur et principal activiste, pour se référer au système d’exploitation libre GNU basé sur un noyau Linux, les composantes GNU pouvant fonctionner sur d’autres noyaux : Les principaux arguments de cette position sont les suivants : – argument d’antériorité : GNU existait avant Linux ; – argument de la confusion : le public risque d’attribuer à Linux ce qui vient du projet GNU ; – argument philosophique : le public risque de ne pas connaître ou d’oublier les principes GNU qui s’appliquent pour Linux et qui sont à l’origine des logiciels libres ; Pour toute l’histoire : http://fr.wikipedia.org/wiki/Linux_ou_GNU/Linux 8
  9. 9. Introduction à l’administration – Les "Systèmes d’Informations" ont une forte croissance ces dernières années. – La complexité des SI impose des personnes qualifiées pour en assurer leur bon fonctionnement. – Une grande partie du temps est accordée aux serveurs. – Etude IDC de 2004 : Plus de 60% des serveurs fonctionnaient sous UNIX (propriétaires ou ouverts). 9
  10. 10. Les besoins de l’entreprise – L’entreprise a toujours de nouveaux besoins. – Une entreprise sans mouvement est destinée à disparaître. – Beaucoup de nouveaux besoins s’orientent vers le SI. – Mobilité (accès aux SI à tout moment) – Téléphonie IP (réduction des coûts, nouveaux concepts) – Internet et publication Web (marketing direct) – Services à valeurs ajoutées (mashup, ...) – Disponbilité du SI extrêmement importante. 10
  11. 11. Introduction à la sécurité – la sécurité coûte cher : Étude du Computer Security Institute (rapport 2005) : En 2004, les dépenses de sécurité ont représenté entre 100 et 300 $ par employé (dans les entreprises de CA supérieur à 10 M$) – l’absence de sécurité coûte cher : Étude du Computer Security Institute (rapport 2005) : En 2004, les incidents de sécurité ont coûté en moyenne 355 552 $ par entreprise (sur 639 réponses) 11
  12. 12. Introduction à la sécurité Objectifs de la sécurité : – Confidentialité : les données ne doivent pas Confidentialité être connues par des tiers non autorisés – Intégrité : les données ne doivent pas être altérées – Disponibilité : le système informatique doit é lit In bi té ni rester opérationnel gr po ité is D Confidentiality + Integrity + Availability = CIA 12
  13. 13. Unix, un monde à part – 1969 UNICS : Ken Thompson, Dennis Ritchie – 1971 + Brian Kernighan – 1973 C – 1978 Création de 1BSD – 1984 100000 cpu sous UNIX – 1984 Début de projet GNU – 1985 Création de FSF – 1991 Linux v0.02 annoncée sur comp.os.minix – 1993 UNIX est le système de référence pour les serveurs – 1996 Lancement de KDE – 1997 Lancement de GNOME – 2008 Linux v2.6.27 PDF sur l’histoire d’UNIX : http ://www.levenez.com/unix/ 13
  14. 14. 2. Les bases 1. Démarrage du système 2. Structure de fichiers 3. Processus 4. Noyau 14
  15. 15. Démarrage du système Lancement d’un système Linux : boot et chargement du noyau – Au boot le BIOS (ou EFI) exécute le MBR (Master Boot Record) situé sur le premier secteur (512 octets) du support bootable choisi (disque, CD, clef USB, ...) Le MBR : – scanne le disque pour trouver LA partition bootable (flag) – lance le boot loader (chargeur de démarrage) du secteur de boot (premier secteur) de la partition bootable Le bootloader – charge le noyau en mémoire et l’exécute – charge le ramdisk initrd.img en mémoire Bootloader traditionnel : Lilo (Linux Loader) Grub (Grand Unified Bootlader) 15
  16. 16. /etc/lilo.conf boot = /dev/sda2 delay = 50 image = /vmlinuz root = /dev/sda2 label = debian read-only image = /vmlinuz-2.6.27 root = /dev/sda3 label = unbuntu read-only other = /dev/sda1 label = dos table = /dev/sda 16
  17. 17. Démarrage du système – initialisation de la machine (CPU, mémoire, registres) – initialisation de la structure des données – reconnaissance du matériel – accès au système de fichier racine – Une fois le noyau chargé en mémoire, il lance le premier processus : /bin/init – init est le père de tous les autres processus qui seront créés par l’appel système fork() – init lit le fichier /etc/inittab pour savoir : – quel est le fichier à exécuter pour continuer le chargement du système ? – quel est le runlevel (niveau d’exécution) par défaut ? – comment lancer les services pour un runlevel donné ? – ... – Les noyaux Linux 2.6.32 ont des possibilités de démarage différentes 17
  18. 18. inittab – id :runlevel :action :process – action possible – sysinit – once – wait – respawn – ctrlaltdel – initdefault 18
  19. 19. Périphérique UNIX accès par des fichiers spéciaux : /dev/... : – disques durs : hda, hdb, sda, sdb – disquettes : fda, fdb – terminaux : tty0, tty1, tty2 – ... 19
  20. 20. Système de fichiers UNIX – ext2, ext3, ext4, reiserfs4, zfs, ... – NTFS, FAT, vfat – iso9660 – nfs, smbfs – ... 20
  21. 21. Structure de fichiers Sous Unix un fichier : – est désigné par un nom – possède un unique inode – peut être dans les états : ouvert, fermé, lu, écrit – peut être : – un fichier ordinaire/normal – un répertoire – un lien symbolique – un pseudo-fichier représentant : – un accès caractère par caractère – un accès par bloc – un dispositif de communication 21
  22. 22. Structure de fichiers Un inode stocke les informations suivantes : – le type de fichier (-,d,l,c,p,b) – le mode (permissions d’accès) du fichier (rwxr-x—) – le nombre de liens – l’identification du propriétaire (UID) – l’identification du groupe (GID) – la taille du fichier en nombre d’octets – la date de création (atime), de dernière modification (mtime) et de dernier accès(ctime) – adresse du fichier (13 adresses) 22
  23. 23. Structure de fichiers Représentation graphique 23
  24. 24. Structure de fichiers Représentation logique du système de fichiers. C’est une arborescence, plus généralement un graphe orienté sans cycle. 24
  25. 25. Structure de fichiers – / Répertoire racine – /bin Executables nécessaires pour le démarrage et le fontionnement en mode “single user” – /boot Contains static files for the boot loader. – /dev Périphériques et fichiers spéciaux – /etc Fichiers de configuration de la machine. contient des sous-répertoires pour les “gros” logiciels (X11, mail, ...) – /etc/skel Fichiers initiaux pour la création d’un compte – /home Emplacement habituel des répertoires des utilisateurs. – /lib Bibliothèques nécessaires au démarrage du système et aux commandes de base – /mnt répertoire pour les montages temporaires – /proc Point de montage pour proc qui fournit des infos sur les processus qui tournent et le noyau 25
  26. 26. – /sbin comme bin, mais pour les commandes d’administration. – /tmp Fichiers temporaires. Peuvent être effacés sans préavis. – /usr Habituellement sur une partition séparée, partagable, en lecture seulement. – /usr/X11R6 The X-Window system, version 11 release 6. – /usr/doc Documentation. – /usr/etc Fichiers de configuration. – /usr/include Pour le compilateur C – /usr/lib Bibliothèques, fichiers de configuration – /usr/local Fichiers locaux du site. Contient bin lib doc etc info man sbin src sbin – /usr/sbin Commandes d’administration pas indispensables pour le fonctionnement de base. – /usr/share Répertoires partagés – /usr/src Fichiers sources. – /usr/src/linux Sources du noyau – /var fichiers qui peuvent changer de taille – /var/cache/man/cat[1-9] Pages de manuel préformattées 26
  27. 27. – /var/lock Fichiers verrous – /var/log Journaux divers – /var/run Fichiers contenant les numéros des processus des services démarrés. – /var/spool Fichiers en file d’attente – /var/spool/at commandes différées – /var/spool/cron commandes programmées – /var/spool/lpd Files d’attente des imprimantes – /var/spool/mail Boites aux lettres 27
  28. 28. Noyau Un noyau est un fichier exécutable qui se trouve sur le disque de boot Le nom de ce fichier n’est pas standard et peut être UNIX, unix, vmunix, ... Le noyau assure la gestion des ressources physiques et logiques du système : – gestion des périphériques par les pilotes intégrés au noyau – gestion des fichiers associée à la gestion des périphériques – gestion des processus à l’aide de l’ordonnanceur (« process scheduler ») Les processus accèdent aux services du noyau via un ensemble de fonctions systèmes (principalement en langage C). Les primitives d’UNIX sont basées sur le standard POSIX, définie par l’IEEE et normalisée par l’ISO. 28
  29. 29. Noyau Il y a 2 types de noyaux, Micro-Noyau : – petit noyau avec une fonctionnalité minimale : Initialisation, communication, contrôle de l’accès au matériel – les autres fonctions sont mises dans des processus externes qui sont lancés dans l’espace utilisateur Noyau monolithique : – un seul noyau avec la fonctionnalité complète, souvent avec des parties sous-utilisées 29
  30. 30. Noyau Avantages du micro-noyau : – Séparation des pilotes du noyau (sécurité,stabilité,gestion) – Taille du noyau (lancement des parties utilisés) – Flexibilité (échange ou test des pilotes) Avantages du noyau monolithique : – Contrôle du noyau (sécurité) – Vitesse (communication interne au noyau) – Flexibilité (utilisation du matériel) 30
  31. 31. Noyau Combinaison des avantages du micro-noyau avec les avantages du noyau monolithique : – Noyau monolithique qui peut être étendu par des modules – Communication interne au noyau – Flexibilité du système micro-noyau avec le chargement et déchargement des modules Principe d’un Linux actuel. 31
  32. 32. Noyau Les commandes en charge des modules : – lister des modules chargés (lsmod) – charger un module (insmod) – décharger un module (rmmod) – charger un module avec des dépendances (modprobe) – /etc/modules.conf ou via udevd 32
  33. 33. 3. Nos amis 1. Compte Unix 2. Commande passwd 3. Droits sur les fichiers 4. Commande chown, chmod 5. Environnement d’éxecution 33
  34. 34. Compte UNIX – un nom d’utilisateur (login) défini par un identifiant (uid) – un mot de passe – un groupe principal auquel appartient cet utilisateur (gid) – un répertoire de travail (homedir) – un langage de commandes (shell) 34
  35. 35. Le shell – Plusieurs familles : sh (sh, ksh, bash, zsh) vs csh (csh, tcsh) – Fichier de configuration par utilisateur : .profile dans $HOME (ou .bash_profile dans certain cas pour bash sous Linux par exemple) La plupart des exemples donnés dans le cours sont pour la famille sh. 35
  36. 36. Login Le login : – Identification de l’utilisateur par le nom de login – Base de l’autorisation – Unique par le système d’exploitation – Numéro d’identification (User ID = UID) 36
  37. 37. passwd Le mot de passe : – Vérification de l’utilisateur – N’est pas stocké en clair sur le disque – Vérifié par un algorithme "Trap Door" : – Correspondance entre le mot crypté et le mot stocké – Risque d’attaque par "force brute" 37
  38. 38. passwd La commande passwd va mettre à jours les fichiers : – /etc/passwd – /etc/shadow – /etc/groups – /etc/gshadow Le fichier /etc/passwd contient : – le nom de login – Le mot de passe (normalement vide si shadow présent) – UID, GID – Le nom réel – Le répertoire de l’utilisateur – Le shell par défaut de l’utilisateur 38
  39. 39. Les mots de passe C’est pourtant facile d’avoir un bon mot de passe : – élargir l’alphabet : minuscules, majuscules, chiffres et caractères de ponctuation => augmente le nombre de combinaisons possibles – agrandir la taille : plus de 8 caractères => augmente le nombre de combinaisons possibles – facile à retenir (première lettre des mots d’une phrase) => pas besoin de l’écrire Exemple : FIP,c1fg@S! (« FIP, c’est une filière géniale à Strasbourg ! ») :-) 39
  40. 40. Droits d’accès Types des droits : – Lecture (r) – Écriture (w) – Exécution (x) Notation : – rw-r—– – 640 Exemple : – $ ls -l file – -rw-rw-rw- 1 jmoreau None 38 Feb 25 2008 file 40
  41. 41. Principe du confinement, ou du moindre privilège Problème : comment changer son mot de passe (nécessite le privilège d’écrire dans /etc/passwd, ou équivalent) Attribut Set-User-Id-on-exec « bit setuid » sur les programmes : le processus est exécuté sous l’identité effective du propriétaire du fichier exécutable (et non de l’utilisateur réel) Exemple : $ ls -l /usr/bin/passwd -r-sr-xr-x 2 root wheel 5828 Oct 9 20:24 /usr/bin/passwd Attribut Set-Group-Id-on-exec « bit setgid » : idem setuid, mais avec le groupe. 41
  42. 42. Droits d’accès - Les cas particuliers SUID, SGID (set user/group ID) : – Droit s (avec x) ou S (sans x), 4000 (user) ou 2000 (group) – Changement de propriétaire du programme en exécution (/bin/passwd) Sticky Bit : – Droit t (ou T), 1000 – Mis sur un répertoire – Permet la suppression d’un fichier seulement au propriétaire 42
  43. 43. Principe du confinement, ou du moindre privilège Utilisations de cette élévation de privilège : – changement de mot de passe, de shell, etc. – ajout d’un fichier dans la file d’attente du gestionnaire d’imprimante – consultation d’informations système (netstat) – écriture d’un message sur la console d’un ou plusieurs autres utilisateurs – etc. Problème potentiel : élévation de privilège => l’impact des bogues est plus grave => programmation plus difficile (environnement hostile) => effort de réduction du nombre de programmes avec le bit setuid dans les Unix sécurisés 43
  44. 44. Droits d’accès Modifications des droits : – chmod u+rw file – chmod 640 file Modification du propriétaire : – chown jmoreau.users file – chown 512 file Droit par défaut géré par le umask (complément à 777). Exemple : droit 644 => umask 133 44
  45. 45. Environnement – Trouver une commande : which commande – Cherche dans la variable PATH – Pour connaitre les chemins : echo $PATH 45
  46. 46. 4. Les commandes 1. La documentation sous Unix 2. Les variables shell 3. Les commandes de base 4. Les commandes "avancées" 46
  47. 47. Documentation Le système le plus important : man – man ls – man man – man passwd – man 5 passwd Les niveaux de man : 1. Programmes exécutables ou commandes de l’interpréteur de commandes (shell) 2. Appels système (Fonctions fournies par le noyau) 3. Appels de bibliothèque (fonctions fournies par les bibliothèques des programmes) 4. Fichiers spéciaux (situés généralement dans /dev) 47
  48. 48. 5. Formats des fichiers et conventions. 6. Jeux 7. Divers 8. Commandes de gestion du système (généralement réservées à root) 9. Noyau 48
  49. 49. Documentation Un système récent : info – info est plus puissant que man mais moins standard – plus difficile à manipuler que man – format officiel du projet GNU – pages plus à jours que le man Une source supplémentaire : /usr/share/doc – emplacement des HOWTO : documentation lourde pour un projet – nombreux exemples D’autres sources : – whereis – locate – apropos – ... Ne jamais sous-estimer la documentation fournie avec votre système ! 49
  50. 50. Variable Le shell peut utiliser des variables : – les variables sont non typées – une simple déclaration A=monFichier – attention, il ne faut pas mettre d’espace autour de "=" – pour utiliser la variable : – $A ou ${A} – variables spéciales : – Paramètres : $1 $2 $3...$9 – Nom du script : $0 – Valeur de retour : $ ? – Process ID du shell : $$ 50
  51. 51. Variable Chaîne de caractères, 3 possibilités : – Pas de modifications avec ” (simples quotes) : – echo ’Ceci est un $A’ – » Ceci est un $A – Évaluation des variables et des commandes avec "" (guillemets) : – A=1 – echo "Ceci est un $A" – » Ceci est un 1 – Exécution du contenu avec “ (quotes inversées) : – le fichier file contient le texte : bonjour – echo ‘cat file‘ – » bonjour 51
  52. 52. Variable Variable tradionnellement définie : – HOME – LOGIN – PATH – PWD – USER – ... On peut obtenir l’ensemble des variables via la commande : env 52
  53. 53. Commande de base ls - LiSt - liste le contenu d’un répertoire – ls – ls rep – ls -l /tmp – ls ../etc – ls -altr 53
  54. 54. Commande de base cd - Change Dir - modifie le répertoire courant – cd – cd /tmp – cd .. – cd /usr/local – cd - 54
  55. 55. Commande de base cp - CoPy - copie un fichier (au sens général) – cp file1 file2 – cp -r dir1 /tmp – cp * /tmp 55
  56. 56. Commande de base mv - MoVe - déplace (ou renomme) un fichier (au sens général) – mv file1 file2 – mv file1 /tmp/ – mv -f file1 file2 – mv -v file1 file2 56
  57. 57. Commande de base ln - LiNk - crée un lien – ln -s file1 file2 – ln file1 file2 57
  58. 58. Commande de base mkdir - MaKe DIRectory - crée un répertoire – mkdir /home/user/jmoreau – mkdir -p /tmp/titi/toto 58
  59. 59. Commande de base rm - ReMove - supprime le fichier ou le répertoire – rm file1 – rm -f file1 – rm -rf /tmp/toto/ – rm -i file1 59
  60. 60. Commande de base pwd - Path on Working Directory - retourne le répertoire de travail – pwd 60
  61. 61. Commande de base id/whoami - IDentity - retourne l’identité de l’utilisateur – id – whoami 61
  62. 62. Commande de base cat - conCATenate - affiche des fichiers – cat file1 – cat file1 file2 – cat -n file1 62
  63. 63. Commande de base more/less - affiche des fichiers page par page – more file1 – less file1 63
  64. 64. Commande avancée find - Recherche un fichier (au sens large) – find . – find . -name "file1" – find . -name "file1 -exec {} ; – 64
  65. 65. Commande avancée gzip/gunzip - applique l’algorithme Lempel-Ziv sur le fichier – gzip file – gunzip file.gz 65
  66. 66. Commande avancée tar - Tape ARchiver - crée une archive – tar cf file.tar dir1 – tar xf file.tar – tar zxvf file.tar.gz dir1 66
  67. 67. Commande avancée du - Disk Usage - Affiche des statistiques sur les systèmes de fichiers montés – du – du -k – du -h – du -hs 67
  68. 68. Commande avancée df - Display Free - Affiche l’espace disponible – df 68
  69. 69. Commande avancée grep - affiche des lignes qui contiennent ou pas l’expression – grep XYZ file1 – grep -v XYZ file1 – grep -n XYZ file1 – grep -i XYZ file1 69
  70. 70. Commande avancée head/tail - affiche les premières/dernières lignes – head -5 file1 – head -c 20 file1 – tail -5 file1 – tail -f file1 70
  71. 71. Commande avancée sort - Tri les données – sort – sort -n – sort -r 71
  72. 72. Commande avancée uniq - Applique un filtre sur les ligne répétées – uniq – uniq -c 72
  73. 73. Commande avancée tr - TRanslate - convertit les caractères de la première liste dans les caractères de la deuxième liste à la même position – tr [A-Z][a-z] file1 – tr -d ’15’ < winfile.txt > unixfile.txt 73
  74. 74. Commande avancée bg/fg - BackGround - Envoi le processus en arrière/avant plan – bg monDemon – fg 74
  75. 75. Commande avancée ps - Process Status - Donne des informations sur les processus en cours – ps -e – ps -a – ps -ea 75
  76. 76. 5. Les services 1. Le démarrage des services (ou "démons") 2. Les exemples de base 3. Les exemples "avancées" 76
  77. 77. initd – cf Chapitre 1, le noyau donne la main à init à la fin du chargement – init a le PID n 1 – init est le " père " de tous les processus du système – en fonction du runlevel il démarre tel ou tel ensemble de services 77
  78. 78. runlevel Pour rappel (cf Chapitre 1). 0. Arrêt du système effectué par la commande init 0 (shutdown -h sous Linux) 1. Mode single-user (mode mono-utilisateur) pour des opérations particulières (maintenance : un seul utilisateur, pas de mode réseau, ...) 2. Mode multi-utilisateurs, réseau activé avec services réseaux de base (sans services réseau sous Linux) 3. Mode multi-utilisateurs, réseau activé avec services réseaux avancés (avec services réseau sous Linux) 4. Mode multi-utilisateur spécifique 5. Sur certains Unix et suivant l’architecture matérielle, maintenance matérielle depuis un firmware de la machine(Sous Linux mode multi-utilisateurs avec interface graphique) 6. Reboot de la machine (shutdown -r) 78
  79. 79. scripts de démarrage 2 cas : BSD ou SYSTEM V – BSD : utilisation d’un ou deux scripts qui gèrent l’ensemble des tâches à accomplir (rc1.d, rc.local, ...) – SYSTEM V avec un script qui lance divers démons et tâches réparties au sein d’une arborescence spécifique dépendant du runlevel. 79
  80. 80. scripts de démarrage – inittab exécute en fonction du runlevel (exemple level 3) : /etc/rc.d/rc3 – /etc/rc.d/init.d : scripts d’arrêt et de relance des services – /etc/rc<niveau>.d/ : un répertoire par niveau(rc3.d, rc5.d, ...), liens vers les scripts contenus dans /etc/rc.d/init.d. – Les liens contenus dans /etc/rc<niveau>.d/ – Snn<NomService> : S pour start, nn est une valeur numérique sur deux caractères(01 05 10 15 ou autre) déterminant l’ordre de lancement des services – Knn<NomService> : K pour Kill, nn la valeur déterminant l’ordre d’arrêt des services. – exemples – S00network — S01nfs – K00network — K01nfs 80
  81. 81. Script de démarrage des services Exemple /etc/rc2.d/S* : /etc/rc2.d/S10sysklogd /etc/rc2.d/S20lpd /etc/rc2.d/S11pcmcia /etc/rc2.d/S20makedev /etc/rc2.d/S12kerneld /etc/rc2.d/S20nfs-kernel-server /etc/rc2.d/S14ppp /etc/rc2.d/S20openldapd /etc/rc2.d/S19bind /etc/rc2.d/S20postgresql /etc/rc2.d/S19nfs-common /etc/rc2.d/S20sendmail /etc/rc2.d/S19nis /etc/rc2.d/S20ssh /etc/rc2.d/S19nscd /etc/rc2.d/S25nfs-server /etc/rc2.d/S20apmd /etc/rc2.d/S89atd /etc/rc2.d/S20autofs /etc/rc2.d/S89cron /etc/rc2.d/S20exim /etc/rc2.d/S91apache /etc/rc2.d/S20gpm /etc/rc2.d/S99gdm /etc/rc2.d/S20inetd /etc/rc2.d/S99rmnologin /etc/rc2.d/S20irmanager /etc/rc2.d/S99wdm /etc/rc2.d/S20logoutd /etc/rc2.d/S99xdm 81
  82. 82. Script de démarrage des services Les services ont généralement une syntaxe simple permettant de les lancer ou de les stopper. – start : démarre le service – stop : arrêt du service – status : état (lancé, arrêté, PID, ...) du service – restart : effectue un arrêt/relance du service – reload : dans certains cas seulement, le service est invité à relire sa configuration 82
  83. 83. Script de démarrage des services #!/bin/sh PATH=/bin:/usr/bin:/sbin:/usr/sbin DAEMON=/usr/sbin/lpd PIDFILE=/var/spool/lpd/lpd.lock test -x $DAEMON -a -f /usr/sbin/pac || exit 0 case "$1" in start) echo -n "Starting printer spooler: lpd" if start-stop-daemon --quiet --stop --signal 0 --pidfile $PIDFILE --name lpd then echo " already running." exit fi /sbin/start-stop-daemon --start --quiet --exec $DAEMON echo "." ;; stop) echo -n "Stopping printer spooler: lpd" 83
  84. 84. if start-stop-daemon --quiet --stop --signal 0 --pidfile $PIDFILE --name lpd then PID=‘cat $PIDFILE‘ start-stop-daemon --quiet --stop --exec $DAEMON --pidfile $PIDFILE --name lpd # Now we wait for it to die while kill -0 $PID 2>/dev/null; do sleep 1; done echo "." else echo " not running."; fi ;; force-reload|restart) $0 stop $0 start ;; *) echo "Usage: /etc/init.d/lpd {start|stop|restart|force-reload}" exit 1 esac exit 0 84
  85. 85. Script de démarrage des services Sous Linux, le répertoire /var/lock/subsys contient la liste des services lancés, un fichier par service. Le répertoire /var/run contient dans certains cas la liste des PID et des fichiers de verrouillage de certains services. La commande service permet d’effectuer des actions sur les services sans se déplacer dans /etc/rc.d/init.d. – service [-f -R -s -d] <nomService> action – -f : full-restart, redémarrage complet du service – -R : full-restart-all : redémarrage de tous les services actuellement lancés – -s : status-all : statut de tous les services lancés – -d : debug, informations complémentaires 85
  86. 86. ouverture de session – init lance le processus getty(gestionnaire de terminal). – getty lance un prompt attendant la saisie du nom de l’utilisateur. – Avant ce prompt le contenu du fichier /etc/issue est affiché. – Le nom validé, le terminal exécute la commande login qui va demander la saisie du mot de passe. – Si le mot de passe est correct (vérification dans /etc/passwd et /etc/shadow ou autre système), alors login affiche le contenue de /etc/motd et exécute un shell(toujours défini dans /etc/passwd). – Une fois la session terminée (fin du shell), init relance un terminal pour une nouvelle connexion. (respwan dans inittab) – Le paramétrage du terminal se fait par le fichier /etc/gettydefs. C’est getty qui va permettre un bon fonctionnement du terminal de l’utilisateur, en s’adaptant : VT100, VT220, XTERM, CONSOLE, ... 86
  87. 87. Arrêt du système Arrêt : – shutdown -h now – halt Redémarrage : – shutdown -r now – reboot 87
  88. 88. Exemples de services de base – /etc/init.d/network : script de gestion du réseau – /etc/init.d/sshd : script de gestion du serveur de shell à distance – /etc/init.d/cupsd : script de gestion du serveur d’impression – /etc/init.d/syslogd : script de gestion du serveur de log – ... 88
  89. 89. Exemples de services "avancés" – /etc/init.d/apache : script de gestion du serveur web Apache – /etc/init.d/nfsd : script de gestion du serveur de système de fichiers réseau NFS – ... 89
  90. 90. syslog Le démon syslog(processus appelé syslogd) permet de recevoir, traiter et stocker des messages d’erreurs(ou d’informations) émis par le noyau ou certains démons. /etc/syslog.conf permet de définir l’origine, l’importance et la destination de chaque message, sous forme de deux champs : – L’origine – Le niveau 90
  91. 91. syslog L’origine définit un ensemble de systèmes et de sous-systèmes(noyau, services). La liste, extensible, est composée à l’origine des éléments suivants : – auth : service de sécurité et d’authentification – cron : service cron – daemon : les démons du système – kern : le noyau – lpr : le service d’impression – mail : la messagerie – news : le réseau – syslog : syslog lui-même – user : messages des processus utilisateurs – uucp : Unix to Unix CoPy 91
  92. 92. syslog Le niveau définit la "criticité" : – emerg : Le système est inutilisable – alert : Une intervention immédiate est indispensable – crit : Erreur critique pour le sous-système – err : Erreur de fonctionnement – warning : Avertissement – notice : Évènement normal méritant d’être signalé – info : Pour information seulement – debug : Pour la mise au point – none : Jamais 92
  93. 93. syslog On peut envoyer les messages de syslog vers différentes destinations – fichiers (arborescence /var/log) – mail à un utilisateur – console – serveur syslog distant (port udp/tcp 514) – ... 93
  94. 94. 6. Matériels et logiciels 1. RAID 2. Partionnement 3. Logiciels 4. Planification de tâches 94
  95. 95. RAID De part l’impact d’une indisponibilité d’un service tournant sur une machine « serveur », les choix matériels pour ces machines ne sont pas ceux qui sont faits pour les postes utilisateurs traditionnels. Le cas le plus fréquent est le choix de la technologie disques. En effet les disques sont accédés beaucoup plus souvent et de manière beaucoup plus aléatoire. 95
  96. 96. RAID On distingue deux types de supports RAID : – un support matériel : Le contrôleur de disque gère lui-même le RAID et la tolérance aux pannes. – un support logiciel : le système Unix gère lui-même le RAID à l’aide de pilotes et d’outils particuliers propres au système. Il devient ainsi possible de faire du RAID même avec un contrôleur non prévu à cet effet. 96
  97. 97. RAID Disques en miroir : Les écritures de données sont dupliquées sur plusieurs disques, généralement deux, pour se prémunir des défaillances d’un disque. Dans ce cas il reste toujours un disque disponible. Bandes de données ("data striping","striped disk") : Il s’agit de découper les données à écrire sur disque et segments séquentiels et contigus pouvant résider sur plusieurs disques physiques distincts. L’ensemble des segments d’une bande constitue un disque logique. Une solution plus élaborée est l’utilisation d’une bande de parité calculée à partir des données d’une autre bande. Il est alors possible de reconstruire les données. 97
  98. 98. RAID – RAID 0 : Un disque sans redondance avec bandes : agrégat de plusieurs partitions en une seule. – RAID 1 : Des disques en miroir, mirroring – RAID 2 : Miroir avec écriture en parallèle et correction d’erreur (« EEC ») – RAID 3 : Écriture en parallèle avec contrôle de parité. – RAID 4 : Bandes avec parité, la bande de parité est sur un seul disque – RAID 5 : Bandes avec parité, la bande est répartie sur plusieurs disques. Tolérance de panne d’un seul disque. – RAID 6 : Bandes avec deux fonctions de parité, réparties sur deux disques. Tolérance de panne de deux disques simultanés. – RAID 1+0 (10) : Bandes en mirroir Une solution RAID est une solution de tolérance aux pannes et ne remplace jamais une sauvegarde. 98
  99. 99. Partionnement Une fois la technologie « disque » choisie, il est important de décider comment répartir les données sur le(s) disque(s). Une installation de base ne nécessite que deux partitions, la partition racine / et une partition de swap (mémoire virtuelle). Le kernel Linux 2.4 est notamment plus performant lorsqu’un swap est disponible : il peut ainsi y déplacer des données non fréquemment utilisées. 99
  100. 100. Partionnement On peut également subdiviser le système en plusieurs partitions. Les raisons d’un tel partitionnement plus fin sont : – performance : plusieurs périphériques swap distribués sur plusieurs partitions de disques-durs différents ; séparation des logs et des queues (/var/log et /var/spool) sur un serveur de mail très chargé (noter que cela augmente le risque de panne !) – indépendance à la réinstallation ou au changement de distribution : mettre /home sur un répertoire séparé – limiter le risque de casse en cas de problème, ou assurer une limite sans quotas par utilisateurs/groupes – spécifier des options de montages spéciales pour la performance (noatime, async) ou pour la sécurité (noexec, nosuid, etc) 100
  101. 101. Partionnement La performance est souvent un problème négligé, mais il est essentiel. Un bon partitionnement peut contribuer à améliorer la performance globale du système. Il faut commencer par défnir les tâches ou les applications que le système doit exécuter. Exemple de partionnement pour un serveur de messagerie : 101
  102. 102. Partionnement Exemple de partionnement pour un serveur de développement : 102
  103. 103. Partionnement Exemple de partionnement pour un serveur de bases de données : 103
  104. 104. Partionnement Exemple de partionnement pour un serveur web : 104
  105. 105. Les logiciels sous UNIX – à partir des sources – sous Debian – sous RedHat 105
  106. 106. Les logiciels sous UNIX A partir des sources : – télécharger, vérifier, extraire, configurer, compiler, installer – utilisation de gzip, gunzip, bzip2, tar – puis de configure, make, make install 106
  107. 107. Les logiciels sous UNIX Sous Debian : – /etc/dpkg/dpkg.cfg, /etc/apt/apt.conf, /etc/apt/sources.list – /var/lib/dpkg/* – dpkg, dpkg-reconfigure – apt-get – dselect Très bon système de dépendances. 107
  108. 108. Les logiciels sous UNIX Sous RedHat : – rpm – /etc/rpmrc, /usr/lib/rpm/* – urpmi/yum Système précédement moins performant, mais maintenant pratiquement équivalent à apt. 108
  109. 109. Planification de tâches Le démon cron exécute des commandes pour un utilisateur, selon des critères temporels : date et heure : La périodicité (tou(te)s les) quand elles sont soumises par la commande crontab. L’échéance (à telle heure) quand elles sont soumises par la commande at. A leur tour et dès que possible quand elles sont soumises par la commande batch. 109
  110. 110. Planification de tâches Il peut y avoir des contraintes d’utilisation. – L’utilisateur doit avoir l’autorisation de soumettre une requête. La liste des utilisateurs autorisés est située dans le fichier cron.allow, et la liste des utilisateurs interdits dans cron.deny, dans/usr/lib/cron. Pour les commandes at et batch les fichiers sont at.allow et at.deny. Si ces fichiers n’existent pas seul root est autorisé à utiliser ces commandes. Pour autoriser tout le monde, il suffit de créer un fichier deny vide (aucun utilisateur interdit). – Le démon cron exécute une commande dans un environnement réduit (seules les variables HOME, LOGNAME et SHELL sont initialisées avec des valeurs simples). Les autres variables doivent êtres initialisées ou récupérées par ou depuis un script. – Le démon cron mémorise l’historique des actions dans /usr/lib/cron/log. Il faut penser à purger régulièrement ces fichiers (ou faire des rotations). 110
  111. 111. Planification de tâches Le démon cron fonctionne à l’aide d’une table, appelée une « crontable ». C’est un fichier texte simple. Pour modifier sa crontable personnelle on utilise la commande crontab -e. Le format est le suivant : Minutes Heures Jour du mois Mois Jour de la semaine Commande 111
  112. 112. Planification de tâches On utilise le format suivant pour les valeurs périodiques : – Une valeur pour indiquer quand il faut exécuter la commande. Ex : la valeur 15 dans le champ minute signifie la quinzième minute – Une liste de valeurs séparées par des virgules. Ex : 1,4,7,10 dans le champ Mois pour Janvier, Avril, Juillet, Octobre – Un intervalle de valeurs. Ex : 1-5 dans le champ Jour de la Semaine indique du lundi (1) au vendredi (5). Le 0 est le dimanche et le 6 le samedi. – Le caractère * pour toutes les valeurs possibles. Ex : * dans le champ Jour du mois indique tous les jours du ou des mois. 112
  113. 113. Planification de tâches Exemples : Exécution de df tous les jours, toute l’année, tous les quarts d’heure : 0,15,30,45 * * * * df > /tmp/libre Exécution d’une commande tous les jours ouvrables à 17 heures : 0 17 * * 1-5 finTravail.sh Pour lister les crontabs actives : crontab -l Pour supprimer la crontab active : crontab -r Pour éditer la crontab d’un utilisateur particulier : crontab -u user 113
  114. 114. Planification de tâches La commande « at » exécute une commande à une date et une heure données. La commande est lue depuisl’entréestandard. Si celle-ci est stockée dans un fichier, il faudra rediriger celui-ci vers la commande. $ at heure [date] < ficCommandes Exemples : Exécution de ficcommandes à 15 heures $ at 1500 < ficCommandes Exemple : Exécution à minuit $ at midnight < ficCommandes : Exemple : Exécution dans trois heures $ at now + 3 hours < ficCommandes 114
  115. 115. 7. Réseau 1. Rappel sur IP 2. La configuration réseau 3. Le client DHCP et le client DNS 4. Le filtrage IP par iptables 115
  116. 116. Rappel sur IP – Créé par la DARPA : Defense Advanced Research Project Agency dans les années 70 pour le projet ARPANET – Dans les faits, travail de l’université de Berkeley pour ajouter TCP/IP à UNIX BSD4 – Généricité et standardisation assurées par divers organismes : – Internet Activities Board : protocoles TCP/IP – Internet Reseach Task Force : protocoles au-dessus d’IP – Internet Engineering Task Force : fonctionement du NET – différents Network Information Center : adresses – IP : le coeur du système : version actuelle v4, IPv6 disponible depuis de nombreuses années, mais évolution difficile 116
  117. 117. IP sous UNIX – Présence d’une carte réseau ! ou en tout cas d’une carte fournissant de la modulation/démodulation de fréquence ... – Installation d’un drivers pouvant gérer cette carte : – soit via l’intégration du drivers dans le noyau – soit via la présence du drivers sous forme de module – Vérification de la présence d’une carte réseau et du drivers associé : – /var/log/messages – dmesg – lspci, lsdev 117
  118. 118. Interface réseau – Présence d’une « pseudo-interface » pour faire la correspondace entre les couches réseau et les couches de transport TCP/IP – eth0, eth1, em0, wifi0, ppp0 ... – La configuration de la pseudo-interface se fait via ifconfig eth0:UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST mtu 1500 inet 192.168.0.10 netmask 0xffffff00 broadcast 192.168.0.255 ether 00:19:e3:d3:e9:8f media: autoselect status: active supported media: autoselect 118
  119. 119. Interface réseau – eth0 : pseudo-interface ethernet 0 – adresse IP : 192.168.0.10 – masque sous-réseau : 0xffffff00, 255.255.255.0, /24 – adresse de diffusion : 192.168.0.255 ifconfig eth0 down ifconfig eth0 192.168.0.10 netmask 255.255.255.0 broadcast 192.168.0.255 ip 119
  120. 120. Interface réseau – Possibilité de créer des alias (IP-Aliasing) : eth0 :0 – Possibilité de créer des pseudo-interfaces à partir d’autres pseudo-interfaces : vlan0.0 :0 (utile pour les VLANs ou l’ agreggation de liens) – Configuration fine du module en charge de la carte réseau : – en paramêtre du module lors du chargement : modprobe ipw2100 mode=2 channel=4 – via mii-tool : mii-tool –force=100baseTx-FD eth0 – via ethtool : ethtool -s eth0 speed 10 duplex full autoneg off 120
  121. 121. Le routage IP – A chaque émission de paquet IP, un aiguillage est opéré : « le routage » – Par où dois-je envoyer ce message pour qu’il arrive à destination ? – l’adresse du paquet va être comparée à chaque route – dès correspondance, le paquet est envoyé – si aucune route ne correspond, passage par la route par défaut 121
  122. 122. Le routage IP – Pour configurer les route, utilisation de la commande : route [jmo@jmoreau]# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 192.168.99.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 127.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 lo [jmo@jmoreau]# route add default gw 192.168.99.254 [jmo@jmoreau]# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 192.168.99.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 127.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 lo 0.0.0.0 192.168.99.254 0.0.0.0 UG 0 0 0 eth0 122
  123. 123. Le routage IP – route add default gw ... – route add -net 192.168.1.0 netmask 255.255.255.0 eth0 – route add -host 192.168.2.1 eth0 – ... 123
  124. 124. fichier de configuration du réseau – RedHat/Fedora : /etc/sysconfig/network-scripts – Debian/Ubuntu : /etc/network/interfaces # The loopback network interface auto lo iface lo inet loopback # The primary network interface auto eth0 iface eth0 inet static address 192.168.1.9 netmask 255.255.255.0 network 192.168.1.0 broadcast 192.168.1.255 gateway 192.168.1.2 dns-nameservers 192.168.1.7 dns-search localdomain Prise en compte des paramêtres après un /etc/init.d/network restart 124
  125. 125. Le client DHCP – Allocation dynamique de paramêtres réseaux – Dynamic Host Configuration Protocol (DHCP) – Le but : s’adresser à un serveur qui sait pour nous quels sont nos paramêtres réseaux – Associé à BOOTP/TFTP, possibilité d’aller chercher un fichier (une image disque par exemple) – DHCP fonctionne au-dessus d’UDP. 125
  126. 126. Le client DHCP apt-get install dhcp3-client Dans le fichier /etc/network/interfaces # The loopback interface auto lo iface lo inet loopback # The first network card - this entry was created during the Debian installation # (network, broadcast and gateway are optional) auto eth0 iface eth0 inet dhcp Prise en compte des paramêtres après un /etc/init.d/network restart 126
  127. 127. Le client DNS – La configuration peut être fournie de différentes manières : – via le fichier /etc/network/interfaces ( dns-nameservers, dns-search) – via le client DHCP – via le fichier /etc/resolv.conf nameserver 212.27.40.240 nameserver 212.27.40.241 2 des serveurs DNS de la société FREE. 127
  128. 128. Le filtrage IP – Un filtre à paquets est un programme qui examine l’en-tête des paquets qui passent, et décide du sort du paquet entier. Il peut choisir de le détruire, le laisser passer, répondre qu’il n’est pas intéressé, etc... – Sous Linux, le filtrage de paquets s’effectue au niveau du noyau. – Il offre les même fonctionnalités qu’un firewall dédié. – Netfilter : architecture de filtrage IP du noyau – IPTables : application de contrôle de cette architecture 128
  129. 129. Le filtrage IP Applications .............. .^. | _ | | _ OUTPUT INPUT |_|----+ +--->|_| .^. | | décision de _ routage -------->|_|FORWARD--+ .^. | _ | V PREROUTING |_|-+ _ .^. |_|POSTROUTING | | | V Interface d’entrée Interface de sortie 129
  130. 130. Le filtrage IP La commande iptables sert à administrer ces fonctionnalités de filtrage. Cette commande accepte de nombreuses options. Pour ajouter des règles de filtrage qui s’applique aux paquets routés, la première forme de la commande utilisée est : iptables -A FORWARD règle 130
  131. 131. Le filtrage IP La règle suivante autorise les paquets en provenance de l’adresse ip IpSrc, port PortSrc et à destination de l’adresse IP IpDst, port PortDst, de protocole Proto (qui peut être tcp ou udp). iptables -A FORWARD -p Proto -s IpSrc/Nbm --sport PortSrc -d IpDst/Nbm --dport PortDst -j ACCEPT 131
  132. 132. Le filtrage IP La règle suivante bloque les paquets en provenance de IpSrc et à destination de IpDst, de protocole Proto (qui peut être tcp, udp ou icmp ; en l’absence de protocole la règle bloquera tous les paquets IP correspondants). iptables -A FORWARD -p Proto -s IpSrc/Nbm -d IpDst/Nbm -j DROP On utilisera également les commandes suivantes : iptables -L FORWARD -n iptables -F FORWARD iptables -P FORWARD ACCEPT iptables -P FORWARD DROP 132
  133. 133. Le filtrage IP – Lorsqu’une règle est ajoutée avec la commande iptables, elle est immédiatement active. – Les ports et le protocole sont optionnels. Ainsi on peut simplement construire un filtre sur des adresses IP (comme les access-list simples sur cisco). – Le champ Nbm (nombre de bits pour le masque) après IpSrc ou IpDst indique le nombre de bits à 1 consécutifs composant le masque. Cette notation s’appelle également notation CIDR. Exemple : 195.10.19.0/24 : 195.10.19.0 255.255.255.0 (24 bits à 1 = masque de classe C) 10.1.1.3/32 : 10.1.1.3 255.255.255.255 (tous les bits à 1 = masque "host") – Il existe une option très utile pour orienter le filtrage. Il s’agit de l’option -i permettant de préciser pour quelle interface réseau d’entrée le filtre s’applique : iptables -A FORWARD -p ... -s ... -d ... -i eth0 -j DROP 133
  134. 134. Le filtrage IP # Insérer les modules de suivi de connexion (non nécessaire si # compilé dans le noyau). insmod ip_conntrack insmod ip_conntrack_ftp # Créer une chaîne qui bloque les nouvelles connexions, sauf celles # qui viennent de l’intérieur. iptables -N block iptables -A block -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A block -m state --state NEW -i ! ppp0 -j ACCEPT iptables -A block -j DROP # Sauter sur cette chaîne à partir des chaînes INPUT et FORWARD. iptables -A INPUT -j block iptables -A FORWARD -j block 134
  135. 135. Le filtrage IP # ping -c 1 127.0.0.1 PING 127.0.0.1 (127.0.0.1): 56 data bytes 64 bytes from 127.0.0.1: icmp_seq=0 ttl=64 time=0.2 ms --- 127.0.0.1 ping statistics --- 1 packets transmitted, 1 packets received, 0% packet loss round-trip min/avg/max = 0.2/0.2/0.2 ms # iptables -A INPUT -s 127.0.0.1 -p icmp -j DROP # ping -c 1 127.0.0.1 PING 127.0.0.1 (127.0.0.1): 56 data bytes --- 127.0.0.1 ping statistics --- 1 packets transmitted, 0 packets received, 100% packet loss # 135
  136. 136. 8. Le monde des serveurs 1. HTTP 2. SSH 3. NFS/SMBFS 4. NIS/LDAP/Kerberos 136
  137. 137. HTTP, HTML, Apache – HTML : Hypertext Markup Language, HTML permet en particulier d’insérer des hyperliens dans du texte – HTTP : Hypertext Transfer Protocol, protocole de communication client-serveur développé pour le World Wide Web. Il est utilisé pour transférer les documents (document HTML, image, feuille de style, etc.) entre le serveur HTTP et le navigateur Web (inventé par Tim Berners-Lee) – Apache : Logiciel libre et gratuit utilisable en tant que serveur HTTP et extrêment répandu. (Janvier 2008 : 50,93 selon Netcraft) 137
  138. 138. Principe d’un serveur Web 138
  139. 139. Principe d’un serveur Web 139
  140. 140. Principe d’un serveur Web 140
  141. 141. HTTP telnet www.google.fr 80 GET / HTTP/1.0 Host: example.com Referer: http://example.com/ <html> <head> <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1"> <title>Google</title> .... </center> </body> </html> Connection closed by foreign host. 141
  142. 142. Les serveurs Web – Mode statique, le serveur dispose de pages HTML totalement écrites et ne nécessitant aucune autre information pour être affichée – Mode dynamique, via un langage complémentataire à HTML, la page va interroger une base de données qui va lui fournir le complément d’informations nécessaire à son affichage. – Dans ce dernier cas, il existe un ensemble extrêment connu et utilisé : LAMP (Linux, Apache, Mysql, PHP) 142
  143. 143. Apache – successeur de NCSA HTTPd 1.3 – support de multiples platformes – support multithread – support d’IPv6 – modules d’interprétation pour Perl, PHP, Python, Ruby, ... – modules proxy, ré-écriture d’URL, .htaccess, ... 143
  144. 144. Apache : .htaccess – les .htaccess sont des fichiers de configuration d’Apache – ils peuvent être placés dans n’importe quel répertoire du site – ils permettent de modifier les droits d’accès, créer des redirection AuthType Basic AuthName "Password Required" AuthUserFile /www/passwords/password.file AuthGroupFile /www/passwords/group.file Require Group admins 144
  145. 145. Apache : virtualhost # cd /etc/apache2/sites-enabled # vi www.mondomaine.fr # Ne mettre cette ligne que dans UN seul fichier NameVirtualHost 192.168.30.220 <VirtualHost 192.168.30.220> ServerName www.mondomaine.fr ServerAlias mondomaine.fr ServerAdmin webmaster@mondomaine.fr DocumentRoot /var/www/www.mondomaine.fr CustomLog /var/log/apache2/www.mondomaine.fr_access.log combined ErrorLog /var/log/apache2/www.mondomaine.fr_error.log </VirtualHost> # cd /var/www # mkdir www.mondomaine.fr # echo "<html><body>www.mondomaine.fr</body></html>" > /var/www/www.mondomaine.fr/index.html Pris en compte après /etc/init.d/apache2 restart 145
  146. 146. Apache sur Debian – apt-get install apache2 – apt-get remove apache – /var/log/apache2/access.log : contient les logs de connexion au serveur Web – /var/log/apache2/error.log : contient les erreurs survenues 146
  147. 147. SSH : définition – SSH (Secure SHELL) permet de se connecter à un ordinateur distant et de disposer d’un shell sécurisé. – Par défaut, le serveur SSH attend les connexions distantes sur le port 22 / protocole TCP. Pour installer un serveur SSH, on utilise la commande suivante : – apt-get install ssh 147
  148. 148. SSH : principes – ssh <login>@<nom ou adresse IP du serveur> – ssh jmo@mamachine ou ssh mamachine -l jmo – ssh mamachine -p 2222 – ssh -X mamachine 148
  149. 149. SSH : fonctionnalités – scp, sftp, ... – existe sous windows via Putty, Winscp ou cygwin – clé automatique via la création d’un jeu de clé publique/privé avec dépôt de la clé publique dans le homedir côté serveur ( /.ssh/authorized_keys). 149
  150. 150. SSH : tunnel ssh -L 2012 :serveur.exemple.org :80 toto@serveur.exemple.org 150
  151. 151. Système de fichiers réseau – afin de fournir un espace de stockage commun – pour fournir un espace de sauvegarde – pour centraliser l’information sur du matériel performant – ... 151
  152. 152. NFS – Le protocole NFS (Network File System) permet de partager des fichiers dans les réseaux Unix. – Le principe de montage est le même que pour un disque local – Développé par la société SUN dabs les années 1980 – Version 2 et 3 principalement utilisé, v4 disponible depuis quelques temps – Le noyau doit être compilé avec le support NFS 152
  153. 153. NFS : configuration – apt-get install nfs-kernel-server – man exports : /etc/exports $ cat /etc/exports # fichier exemple /etc/exports / master(rw) trusty(rw,no_root_squash) /projects proj*.local.domain(rw) /usr *.local.domain(ro) @trusted(rw) /home/joe pc001(rw,all_squash,anonuid=150,anongid=100) /pub (ro,insecure,all_squash) Prise en compte uniquement après /etc/init.d/nfs-kernel-server restart ou via exportfs -ra 153
  154. 154. NFS et les RPC – De manière sous-jacente NFS utilise les RPC – RPC : Remote Procedure Call – RPC : Ensemble d’apels de procédures à distance permettant la transparence d’utilisation locale ou distante. Fonctionne au niveau de la couche session du modèle OSI. – Portmap : tableau de correspondance entre port IP et numéro de programme RPC $ rpcinfo -p localhost 100000 2 tcp 111 portmapper ... 100005 2 udp 32768 mountd 154
  155. 155. NFS côté client – Les services (portmap et nfs) doivent être lancés – Puis le montage doit être réalisé mount -t nfs <nom ou adresse IP du serveur NFS>:<répertoire partagé> <point de montage $ mount -t nfs pc230:/home/partage /mnt $ cat /etc/fstab ... pc230:/home/partage /mnt nfs defaults 0 0 ... 155
  156. 156. smbfs/CIFS – Samba est l’implémentation du protocole SMB (Server Message Block) sous Unix / Linux. Il sert à partager des fichiers et des imprimantes avec les réseaux Microsoft. – Samba lance deux services : smbd et nmbd. – Le protocole SMB est tout sauf performant : il pollue le reseau par l’utilisation intensive du broadcast. Ceci lui offre l’avantage de pouvoir découvrir qui l’entoure et donc de limiter sa configuration – Samba utilise les ports 137 (netbios name service, nbname, en UDP), 138 (netbios datagram service nbdatagram, en UDP), 139 (netbios session service, nbsession, en TCP), et 445 ("direct-hosted" tcp, en tcp et udp). – La méthode de connexion traditionnelle smb utilise les ports 137, 138 et 139 tandis que la nouvelle méthode (CIFS, sur windows XP) n’utilise que le port 445. 156
  157. 157. smbfs/CIFS – apt-get install samba smbclient smbfs winbind – /etc/samba/smb.conf – testparm analyse le fichier smb.conf et signale les erreurs – /etc/init.d/samba restart Le fichier /etc/samba/smb.conf se divise en différentes sections : – La section global : configuration globale de samba – La section homes : cette section particulière permet de remonter une ressource qui correspond au répertoire de travail (home directory) de l’utilisateur qui s’est authentifié. 157
  158. 158. smbfs/CIFS : Samba – Projet libre et gratuit : Samba – 4 modes configurations – Partage par ressource – Partage par utilisateur – Inscription dans un domaine – Controleur de domaine 158
  159. 159. SAMBA # Section GLOBAL # Configuration globale de Samba [global] # Nom du groupe de travail workgroup = WORKGROUP # Nom Netbios de la machine (identification réseau) netbios name = PC230 # Chaine de commentaire associé au serveur (voisinage réseau) server string = %h Serveur (Samba %v) # Utilisateurs interdits invalid users = root # Enregistre un fichier de log par machine cliente du réseau MS log file = /var/log/samba/log.%m # Taille maximale des logs : 1 Mo max log size = 1000 ... 159
  160. 160. SAMBA : partage par ressource sur un réseau Workgroup Dans le cas du mode share, pour pouvoir positionner un mot de passe sur une ressource, il faut créer un compte UNIX ’invite’ : # adduser --shell /bin/false --disabled-login invite On Crée ensuite une entrée dans le fichier /etc/samba/smbpasswd : # smbpasswd -a invite Le mot de passe saisi correspondra à celui du répertoire partagé. Il faut ensuite créer le répertoire partagé et donner l’arborescence partagée à l’utilisateur invite du groupe invite : # mkdir /home/partage # chown invite.invite /home/partage 160
  161. 161. SAMBA : partage utilisateur sur un réseau Workgroup Dans le cas du mode user, pour ne partager une ressource partagée qu’a certains utilisateurs, il faut tout d’abord créer un compte UNIX pour chacun d’eux : # adduser --shell /bin/false --disabled-login paul # adduser --shell /bin/false --disabled-login pierre On crée ensuite une entrée dans le fichier /etc/samba/smbpasswd : # smbpasswd -a paul # smbpasswd -a pierre 161
  162. 162. SAMBA : partage utilisateur sur un réseau Workgroup Coté Linux, les utilisateurs doivent avoir le droit d’écriture sur le répertoire partagé. La meilleure méthode consiste à créer un groupe Unix contenant les utilisateurs autorisés, et d’attribuer le repertoire partagé au groupe en question : # addgroup prive # adduser paul prive # adduser pierre prive # mkdir /home/prive # chgrp prive /home/prive # chmod 770 /home/prive 162
  163. 163. SAMBA : partage sur un domaine Microsoft Remarque : Pour que le serveur Linux puisse rejoindre le domaine existant, il faut se connecter au moins une fois avec le compte Administrateur définit sur le contrôleur de domaine, afin que ce dernier crée un compte machine : # net join -U Administrateur Administrateur’s password: [2008/02/12 11:58:41, 0] utils/net_ads.c:ads_startup(289) ads_connect: Chaîne multi-octets ou étendue de caractères invalide ou incomplète ADS join did not work, falling back to RPC... Joined domain DOMAINE. 163
  164. 164. SAMBA : partage sur un domaine Microsoft Dans le cas du mode server, les utilisateurs (login et mot de passe) sont définit sur un serveur existant. Coté Linux, les utilisateurs doivent avoir le droit d’écriture sur le répertoire partagé. Cependant, les utilisateurs ne sont pas définit sur le serveur Linux mais sur le contrôleur de domaine. La solution consiste à permettre à tout le monde d’écrire dans ce répertoire, Samba se chargeant de n’autoriser que les utilisateurs autorisés sur le contrôleur de domaine. # mkdir /home/prive # chmod 777 /home/prive 164
  165. 165. NIS – Network Information System – Système client-serveur – Développement de SUN – Base de donnée avec des informations comparable à /etc/passwd – Historiquement : YellowPages, problème avec British-Telecom – Mais le préfixe yp est resté dans certaines commandes – Le noyau doit être compilé avec le support 165
  166. 166. NIS – Serveur Maitre/Esclave afin d’augmenter la robustesse – Serveurs secondaires mis a jour régulièrement, mais pas instantanément – Client cherche son serveur par diffusion – Principe des domaines (/bin/domainname) – Premier serveur est pris – Informations sont accessibles par commande (ypcat) – Les données des bases sont transmises en clair 166
  167. 167. NIS : côté serveur – apt-get install nis – /etc/defaultdomain – /etc/ypserv.securenets avec 255.255.255.0 192.168.30.0 – /etc/default/nis avec MASTER si serveur – /etc/init.d/nis restart – /usr/lib/yp/ypinit -m 167
  168. 168. NIS : côté client – /etc/defaultdomain – /etc/yp.conf avec l’adresse du serveur ypserver 192.168.30.230 – /etc/init.d/nis start – /etc/nsswitch.conf avec netgroup : nis – /etc/passwd avec + : : : : : : à la fin – /etc/shadow avec + : : : : : : : : à la fin – /etc/group avec + : : : à la fin – ypcat passwd.byname – ajout d’un utilisateur sur le seveur avec adduser jack – mise à jours des bases : /usr/lib/yp/ypinit -m 168
  169. 169. LDAP – Lightweight Directory Access Protocol – à l’origine une surcouche à X500 (système lourd et non adpaté à TCP/IP) – Système client-serveur – Serveur Maitre/Esclave – Standard ouvert – Mis à jour instantanément 169
  170. 170. LDAP : les caractéristiques – Base de donne multi-utilisation avec un schéma standardisé et extensif – Conception optimisé pour la consultation – Indépendance des objets entre eux et ignorance des structures de stockage – Possibilité d’objets distribués sur plusieurs annuaires, mais impossibilité d’objets répartis sur plusieurs annuaires 170
  171. 171. LDAP : les modèles – modèle d’information, qui donne les données de l’annuaire – modèle de désignation, qui organise l’arborescence et la nomenclature des objets – modèle fonctionnel, qui permet l’accès et la consultation, modification et destruction des données – modèle de sécurité, qui gère l’authentification et le chiffrement 171
  172. 172. LDAP : LDIF – Représentation des données LDAP sous forme de texte dn: cn=host1,ou=hosts,dc=testing,dc=ldap changetype: add cn: host1 iphostnumber: 10.0.0.2 objectclass: top objectclass: device objectclass: ipHost 172
  173. 173. LDAP : OpenLDAP : côté serveur server # domainname testing.ldap server # domainname > /etc/defaultdomain server # vi /etc/hosts 10.0.0.1 peter peter.testing.ldap loghost server # directoryserver setup server # /usr/lib/ldap/idsconfig 173
  174. 174. LDAP : OpenLDAP : côté client server # ldapmodify -c > -D "cn=directory manager" > -w nssecret > -f /tmp/host1.ldif client # domainname testing.ldap client # domainname > /etc/defaultdomain client # ldapclient > -v init > -a proxypassword=proxy > -a proxydn=cn=proxyagent,ou=profile,dc=testing,dc=ldap > -a domainname=testing.ldap > 10.0.0.1 174
  175. 175. LDAP – getent passwd – ldapadd – ldapsearch – ldapdelete – ... 175
  176. 176. Kerberos – Problème du LDAP, le mot de passe en clair lors des communication – Kerberos est un protocole d’authentification réseau créé au Massachusetts Institute of Technology (MIT) – Kerberos utilise un système de tickets au lieu de mots de passe en texte clair. – L’ensemble repose sur des clés secrètes (chiffrement symétrique) – Disponible sous UNIX et à la base des Windows récents 176
  177. 177. Kerberos 177
  178. 178. Kerberos 178
  179. 179. Kerberos 179
  180. 180. Kerberos 180

×