Vous êtes sur la page 1sur 18

Net-Pro Par : Ghaouti Mohamed

Chapitre 01 - NFS

Partage de fichiers en réseau avec NFS

1. Présentation de NFS/RPC
1.1 Le protocole NFS

Le protocole NFS (Network file system) fût mis en place par Sun Microsystems en 1984 dans le but de
permettre l'accès à des ressources situées sur des hôtes distants.

Le système NFS permet de monter des volumes réseaux et d'y accéder de manière transparente pour
l'utilisateur.

1.2 RPC

NFS utilise la méthode de connexion RPC (Remote procedure call) également inventée par SUN. RPC décrit
une methode de type client/serveur utilisant le format XDR (eXternal Data Representation) ou chaque
service est representé par un numero indiqué dans le fichier /etc/rpc.

Extrait du fichier /etc/rpc

portmapper 100000 portmap sunrpc rpcbind


rstatd 100001 rstat rup perfmeter rstat_svc
rusersd 100002 rusers
nfs 100003 nfsprog

RPC fonctionne sur TCP/IP, un serveur RPC va faire la correspondance entre le numero de service RPC et le
port.

Lorsqu'un client se connecte au serveur RPC celui-ci lui envoie le numero de service auquel il veut acceder
et le serveur lui renvoi le port associé.

Le client n'a donc pas besoin de connaitre les details réseau. Les serveurs RPC disponibles se nomme
rpcbind et portmap, ceux-ci ecoutent sur le port 111 tcp/udp par defaut. RPC se situe au niveau de la
couche 5 (session) du modele OSI.

La commande rpcinfo permet de dialoger avec un serveur RPC (visualisation des tables...).

1/18 napster_simon@hotmail.com
Net-Pro Par : Ghaouti Mohamed

$ rpcinfo -p hostname

2. Installation d'un client/serveur NFS


L'installation du client se deroule de maniere similaire a celle du serveur. On peut distinguer 2 parties :

 la partie noyau (kernel land) : permet au noyau de prendre en charge le protocole.


 la partie logicielle (user land) : prend en charge la partie appplicative.

2.1 La partie noyau

Il faut activer (si cela n'est deja fait) le support du systeme de fichiers NFS dans le noyau :

Pour cela rentrez dans le menu de configuration du noyau et activer le support du NFS (File systems ->
Network File Systems -> NFS file system support).

Dans le cas d'un serveur NFS il faut également activer le support du serveur NFS dans le noyau :

Pour cela rentrez dans le menu de configuration du noyau et activer le support du serveur NFS (File
systems -> Network File Systems -> NFS server support), cochez ensuite l'option "Provide NFSv3 server
support".

2.2 La partie logicielle

L'installation logicielle (NFS utils) permet d'obtenir les commandes clientes que nous etudirons un peu plus
loin ainsi que le daemon NFS et les scripts de demarrage associes.

Il faut pour cela telecharger l'archive sur le site http://nfs.sourceforge.net/ , la procédure d'installation est
la même que pour les autres logiciels.

./configure
make && make install

2.3 Configuration du serveur

Le fichier de configuration du serveur se stitue dans /etc et se nomme exports, il contient tous les
répertoires partagés lors du demarrage du service ainsi que les options qui leur sont associees.

Le format est le suivant :

répertoire host1(options1,option2,...optionN)
host2(option1,option2,...optionN)....hostn(option1,option2,...optionN)

2/18 napster_simon@hotmail.com
Net-Pro Par : Ghaouti Mohamed

"répertoire" correspond au répertoire partagé, "host1(options)...." correspond aux machines qui le droit
d'accéder à ce répertoire. Les options indiquent de quelles manières les hôtes vont se connecter (Voir plus
loin dans ce chapitre).

Comme vous pouvez le remarquer NFS se base UNIQUEMENT sur le nom de machine (ou l'adresse IP), cela
est à prendre en compte lors de l'établissement des politiques de securité.

Vous pouvez utiliser l'opérateur '*' afin de spécifier que tout le monde à le droit de se connecter au
répertoire.

répertoire *(options)

2.4 Mode syncrone/asyncrone

Mode syncrone : c'est la valeur par défaut, lorsque un utilisateur effectue une operation (copie,
modification, création...), celle-ci est traitée directement par le serveur.

 Avantage : Sécurité
 Inconvénient : Lenteur

Mode asyncrone : lorsque un utilisateur effectue une opération (copie, modification, création...), celle-ci est
mise en "tampon", c'est à dire que le serveur vous rend la main avant d'avoir effectuer l'opération (avant
même d'avoir écrit le fichier ou autre sur le disque).

 Avantage : rapidité pour l'utilisateur


 Inconvenient : dangeureux, imaginons que le service rencontre un problème, vous ne pouvez pas
être certain que vos changements ont bien été pris en compte.

2.5 Gestion des UID/GID

Rappel :

 L'UID (User Identifier) est un numero unique sur le systeme representant un utilisateur unique (un
utilisateur possede un et un seul UID et un UID correspond a un et un seul utilisateur).
 Le GID (Group Identifier) est la meme chose que l'UID sauf qu'il s'applique pour les groupes.
 L'UID du super utilisateur 'root' est egal à 0. Le GID du groupe 'root' est egal à 0.

Comme nous l'avons vu précédemment, NFS se base sur les noms des machines, il faut donc trouver un
moyen de gérer les permissions ainsi que l'appartenance des ressources. Pour cela NFS se base sur
l'UID/GID du client, c'est à dire que si le client fait des manipulations sur le serveur NFS avec le compte
user1 (il s'agit du compte avec lequel la personne s'est connectée sur son poste de travail) qui a comme
UID 1001, le serveur NFS le considérera comme utilisateur 1001 local (cela peut pointer sur un autre
utilisateur).

Cela peut paraitre aberrant, mais il faut penser que NFS a été créé pour des réseaux de type
serveurs/terminaux où les UID etaient partout les mêmes.

Un autre probleme se pose, imaginons qu'une personne soit root sur un client et se connecte au serveur
NFS, son UID local est egal à 0 et donc le serveur lui attribue l'UID 0 sur le partage.

Pour palier à ce problème, NFS propose la possibilité d'imposer un UID/GID à tous les utilisateurs qui se
connectent à un répertoire (partage), on appele cela un UID/GID anonyme. Cela signifie que si on
configure l'UID/GID anonyme du partage à 4242/2121, tout les utilisateurs qui se connectent sur le partage
recevrons l'UID/GID 4242/2121. Cette directive s'applique à tous les utilisateurs sauf root, pour celui-ci une

3/18 napster_simon@hotmail.com
Net-Pro Par : Ghaouti Mohamed

directive spéciale permet d'indiquer que les utilisateurs se connectant avec un UID egal à 0 recoivent l'UID
anonyme.

Maintenant que nous avons passé en revue la "théorie", nous allons énumerer les principales options ainsi
que leur effet.

Option Effet
rw le client a les droits d'écriture
ro le client a seulement les droits de lecture
async active le mode asyncrone
sync active le mode syncrone (par défaut)
anonuid spécifie l'UID des utilisateurs anonymes
anongid specifie le GID des utilisateurs anonymes
all_squash tous les utilisateurs (sauf root) récupèrent l'UID anonyme
no_all_squash Les utilisateurs gardent leur UID (par défaut)
root_squash l'utilisateur root récupère l'UID anonyme (par défaut)
no_root_squash l'utilisateur root garde son UID (dangeureux !!!)

Pour obtenir la liste complete des options editez le manuel d'exports :

$ man exports

Exemple :

/ftp/films client1(rw,anonuid=1004,anongid=1006)
client2(ro,async)
/cours *(ro)

L'arborescence /ftp/films est accessible par les clients client1 (lecture/écriture, UID anonyme=1004 et GID
anonyme=1006) et client2 (lecture seule). L'arborescence /cours est accessible par tout le monde en
lecture seule.

Il est bien sûr possible de spécifier une adresse IP à la place du nom de machine.

3. Administration/Maintenance d'un
serveur NFS
3.1 Les differents daemons

Voici les differents daemons necessaires au bon fonctionnement du serveur NFS :

daemon description
le deamon portmap permet de faire la correspondance numéro RPC/Port
portmap
(voir partie 2)

4/18 napster_simon@hotmail.com
Net-Pro Par : Ghaouti Mohamed

rpc.mountd le deamon rpc.mountd réalise le montage demandé par un client


rpc.nfsd le deamon nfsd éxécute les requêtes NFS
rpc.statd ce daemon récupere des statistiques (Voir plus loin dans le cours)

3.2 Lancement et arrêt du serveur NFS

Les différents daemons cités précédemment doivent tous être lancés. Afin de nous faciliter la tâche, le
script d'init installé via les nfs-utils permet de lancer/arrêter automatiquement tous les daemons.

Ce script se situe dans /etc/init.d et se nomme nfs, voici comment le manipuler :

# /etc/init.d/nfs operation

Voici les différentes opérations supportées par le script :

opération effet
start démarrage des daemons
stop arrêt des daemons
restart redémarrage des daemons (stop + start)
status affiche l'état des daemons

Note:
selon la distribution utilisée d'autres options peuvent être disponibles.

Exemple :

Lancement du serveur NFS :

# /etc/init.d/nfs start

3.3 Commandes d'administration et de maintenance

3.3.1 La commande exportfs :

La commande exportfs permet de manipuler les partages à "chaud" (lorsque que le serveur NFS tourne).
Exportfs permet de désactiver, activer (on parle aussi d'exportation), modifier et ajouter des partages.

Voici une liste des options les plus couramment utilisées :

option effet
-a exporte tous les partages contenus dans /etc/exports
-u désactive un partage
-ua désactive tous les partages contenus dans /etc/exports
-o permet de spécifier des options

5/18 napster_simon@hotmail.com
Net-Pro Par : Ghaouti Mohamed

Voici la procédure à suivre pour ajouter à "chaud" un nouveau partage (sans avoir besoin de redémarrer le
service NFS) :

# exportfs -o option1,option2 host:/répertoire

Les options sont les mêmes que celles du fichier /etc/exports.

Exemple :

# exportfs -o rw,async host1:/data

Cette commande ajoute le répertoire /data pour la machine host1 avec comme options rw et async.

3.3.2 La commande showmount :

La commande showmount permet d'afficher les répertoires partagés d'un serveur NFS ainsi que les
machine ayant le droit d'y accéder.

Voici comment procéder :

$ showmount -e hostaname

Exemple :

# showmount -e nfs_server
Export list for localhost:
/data STS.esi-supinfo.com,localhost

Dans cet exemple l'hote nfs_server exporte le répertoire /data pour les machines localhost et STS.

D'autres options sont disponibles, consultez la page de manuel de showmount :

$ man showmount

3.3.3 La commande nfsstat

nfsstat affiche des statistiques NFS et RPC recuperées par le daemon rpc.statd.

Voici une liste des options les plus courament utilisees :

option Effet
-s affiche uniquement les statistiques du serveur
-c affiche uniquement les statistiques du client

6/18 napster_simon@hotmail.com
Net-Pro Par : Ghaouti Mohamed

-n affiche uniquement les statistiques NFS


-r affiche uniquement les statistiques RPC

D'autres options sont disponibles, consultez la page de manuel de showmount :

$ man nfsstat

4. Utilisation du client NFS


Nous allons maintenant nous interresser à la partie cliente de NFS, à savoir : comment monter un partage
NFS distant.

Pour cela nous allons utiliser la commande mount. Il faut au préalable connaitre l'IP/nom du serveur ainsi
que le répertoire auquel on souhaite accéder (voir la commande showmount).

Voici comment utiliser mount pour acceder a un partage NFS distant :

# mount -t nfs -o options serveur:/partage /point_de_montage

Les options sont propres à mount, voici celles utiles pour NFS :

option effet
si le montage échoue les tentatives suivantes se feront en avant-plan (par
fg
défaut)
bg si le montage échoue les tentatives suivantes se feront en arrière-plan
rw monte le partage en read/write (par défaut)
ro monte le partage en read only (lecture seule)
suid autorise l'utilisation de programmes suid (par défaut)
nosuid interdit l'éxécution de programmes suid
hard En cas d'échec, recommence l'opération jusqu'à sa réussite (par défaut)
soft abandonne l'opération en cas d'échec

Les options du serveur sont prioritaires face à celle du client. C'est à dire que si le serveur permet à client1
de monter /data en read only (lecture seule) et que le client monte en Read/Write, alors le partage sera
monté en read only.

Exemple :

# mount -t nfs -o ro,nosuid server:/data /mnt/nfs/

Le répertoire /data de la machine 'server' sera monté dans /mnt/nfs en read only/nosuid.

Pour monter un répertoire au démarrage du système il faut ajouter une entrée dans le fstab (comme pour
les péripheriques locaux).

7/18 napster_simon@hotmail.com
Net-Pro Par : Ghaouti Mohamed

Voici la syntaxe a appliquer :

serveur:/partage /point_de_montage nfs options 0 0

options corresponds aux options citées ci-dessus, il est important de laisser le dump/pass à 0 (il parait
assez logique de ne pas vérifier l'integrité du répertoire NFS à chaque démarrage).

A titre d'exemple nous allons reprendre le précedent exemple mais cette fois-ci nous le monterons a chaque
démarrage.

server:/data /mnt/nfs nfs ro,nosuid 0 0

Chapitre 02 - PureFTPd

Mise en place d'un serveur PureFTPd

1. Introduction
Pure-ftpd est un serveur ftp libre, sécurisé, de qualité et répondant aux standard du protocole FTP. Il
tourne sur de nombreux systèmes tel que Linux, FreeBSD, NetBSD, OpenBSD, ISOS, EkkoBSD, BSDi,
Solaris, Darwin, Tru64, Irix, AIX et HPUX.

Il possède de nombreux atouts tels que le "chroot" des répertoires, le choix des ports pour le
téléchargement passif, le support du FXP (transfert entre deux serveurs FTP), le réglage de la bande
passante, le support des ratios, le support de ldap / mysql / postgreSQL / SSL pour l'authentification, et
bien d'autres choses encore.

2. Rappel sur le protocole FTP


Le protocole FTP (File Transfer Protocol) est, comme son nom l'indique, un protocole de transfert de
fichiers. Celui-ci a été créé en 1971, et à cette époque on ne se souciait guère de la sécurité des données.
De nos jours le protocole FTP est très répandu et sa lacune envers la sécurité persiste. En effet par défaut
toutes les données passent en clair sur le réseau (nom d'utilisateur/mot de passe et données).

Le protocole FTP agit au niveau de la couche 7 du modèle OSI, il est base sur un modèle client serveur
avec authentification via nom d'utilisateur/mot de passe et écoute par défaut sur les ports 20 (données) et
21 (commandes).

3. FTP et la sécurité
Nous avons vu que les données transitent en clair sur le réseau, cela signifie qu'une personne mal
intentionnée peut récupérer très aisément des noms d'utilisateurs/mot de passe.

Voici donc quelques précautions à prendre lorsque vous mettez en place un serveur FTP (nous exclurons ici
le fait que le serveur soit directement vulnérable) :

 Éviter d'implémenter un serveur FTP dans un réseau non commuté (un réseau contenant des
Hubs).

8/18 napster_simon@hotmail.com
Net-Pro Par : Ghaouti Mohamed

 Éviter d'implémenter un serveur FTP sur un serveur comportant des services critiques (DNS,
MAIL...).
 Éviter d'implémenter un serveur FTP sur un serveur comportant des données
critiques/confidentielles.
 Bloquer le compte root afin qu'il ne puisse pas se connecter au serveur FTP.

Solutions adoptables pour renforcer la sécurité :

 L'utilisation d'utilisateurs virtuels (Voir ci-dessous).


 Combiner le FTP avec le système de cryptage SSL/TLS (Voir le cours sur OpenSSL).

4. Introduction aux utilisateurs virtuels


Dans le cas ou une personne mal intentionnée arrive a récupérer le nom d'utilisateur/mot de passe d'un
utilisateur (ceci est désastreux dans le cas du compte root), celui-ci aura accès au serveur FTP mais pire
encore celui-ci pourra le cas échéant se connecter physiquement ou via SSH sur la machine !!!

La notion d'utilisateurs virtuels est très simple, il s'agit d'un utilisateur pouvant se connecter uniquement via
FTP. Toutes connexions locales, SSH... lui seront refusées. Cependant les utilisateurs doivent posséder un
UID/GID pour que le système puisse savoir si celui-ci a le droit de lire/écrire tel fichier/répertoire...

La méthode utilisée est la suivante :

 Les utilisateurs possèdent l'UID d'un utilisateur système existant, celui-ci est souvent nommé
ftpuser et en général ne possède pas de shell (ni de mot de passe). Il est évidemment possible de
créer un utilisateur virtuel possédant le même UID que votre utilisateur système courant (afin de
garder les mêmes accès). Le même principe est utilise pour le GID.
 Chaque utilisateur virtuel possède un profil unique contenant ses limites de bande passante, ses
quotas, ses horaires d'accès...

Dans le cas où vous créez un utilisateur virtuel possédant le même nom d'utilisateur/UID que votre
utilisateur système, il peut être intéressant de ne pas mettre le même mot de passe (changez une lettre ou
un chiffre).

5. Installation du serveur PureFTPd


Nous allons procéder à l'installation de PureFTPd via les sources, cependant vous pouvez tout à fait
l'installer via un système de packages (portage, dpkg, rpm...).

La première étape consiste à récupérer les sources sur le site officiel :

ftp://ftp.pureftpd.org/pub/pure-ftpd/releases/

Une fois téléchargé, la procédure d'installation est la suivante :

# tar jxvf pure-ftpd-x.x.xxx.tar.bz2


# cd pure-ftpd-x.x.xxx
# ./configure --option1 --option2 ...
# make install-strip

9/18 napster_simon@hotmail.com
Net-Pro Par : Ghaouti Mohamed

Par défaut, les binaires seront installés dans /usr/local/(bin|sbin).

Voici les options du script configure que nous utiliserons :

Option Effet
--with-puredb Active le support des utilisateurs virtuels
--with-virtualchroot Active les liens symboliques pour les utilisateurs chrootés
--with-ftpwho Active la commande ftpwho
--with-altlog Active les fichiers de log avancés
--with-throttling Active la gestion de la bande passante
--with-peruserlimits Active la gestion des limites par utilisateur
--without-inetd Désactive le support inetd (gain de place)

D'autres options sont utilisables, la liste complète est disponible en tapant :

# ./configure --help

6. Lancement du serveur FTP


Nous avons vu dans le chapitre 4 qu'un utilisateur/groupe système devait être crée afin que les utilisateurs
virtuels puissent avoir une identité sur le système

Voici les 2 lignes nécessaires à la création de cet utilisateur/groupe :

# groupadd ftpgroup
# useradd -g ftpgroup -d /dev/null -s /bin/false ftpuser

L'utilisateur système ftpuser se pourra jamais se connecter au système (home directory et shell invalide).

PureFTPd se lance de cette manière :

/usr/local/sbin/pure-ftpd -option1 arg1 -option2 arg2 -option3 ....

Voici les options que nous utiliserons :

Option Effet
Précise la base de comptes (/etc/pureftpd.pdb par
-lpuredb:/fichier
défaut).
-c N Limite le nombre de connexions à N.
-C N Limite le nombre de connexions par IP à N.
-E Désactive les connexions anonymes.
-O Active et spécifie le fichier de log ainsi que le type.

10/18 napster_simon@hotmail.com
Net-Pro Par : Ghaouti Mohamed

type:/chemin/vers/fichier Où type =
clf : Log de type apache
stats : log qui peut être traité par des logiciels de
statistiques.
w3c: fichier de log compatible W3C.

7. Gestion des utilisateurs virtuels


Le fichier contenant les utilisateurs virtuels se nomme /etc/pureftpd.passwd, et voici son organisation :

Un utilisateur par ligne :

<account>:<mot de passe>:<uid>:<gid>:<gecos>:<home directory>:<upload


bandwidth>:<download bandwidth>:<upload ratio>:<download ratio>:<max number
of connections>:<files quota>:<size quota>:<authorized local Ips>:<refused
local Ips>:<authorized client IPs>:<refused client Ips>:<time restrictions>

Les champs <account>, <mot de passe>, <uid>, <gid> et <home directory> sont obligatoires.

PureFTPd utilise la base de compte /etc/pureftpd.pdb qui est une version "compilée" de
/etc/pureftpd.passwd.

Tout comme pour les utilisateurs système, il est possible d'ajouter/modifier/effacer un utilisateur à la main
directement dans le fichier, cependant l'utilisation des commandes suivantes facilite cette tâche :
La commande pure-pw permet d'administrer le serveur, elle s'utilise de la manière suivante :

# pure-pw action [options]

Voici les différentes actions possibles :

Option Effet
useradd Ajouter un utilisateur virtuel.
usermod Modifier un utilisateur virtuel.
userdel Supprimer un utilisateur virtuel.
passwd Modifier le mot de passe d'un utilisateur virtuel.
show Afficher le profil d'un utilisateur virtuel.
list Lister tous les utilisateurs virtuels.
mkdb Recréer la base de données PureFTPd (/etc/pureftpd.pdb)

8. Les utilisateurs virtuels


Nous allons voir comment créer et gérer des utilisateurs virtuels.

8.1 Ajouter/Modifier un utilisateur virtuel

11/18 napster_simon@hotmail.com
Net-Pro Par : Ghaouti Mohamed

Voici la syntaxe de la commande d'ajout d'utilisateur :

# pure-pw useradd nom d'utilisateur options [-m]

A chaque ajout d'un utilisateur il faut recréer la base de données PureFTPd avec la commande :

# pure-pw mkdb

L'ajout de l'option '-m' lors de la création de l'utilisateur recrée automatiquement la base de données (plus
besoin de taper 'pure-pw mkdb').

Voici les options que nous utiliserons :

Option Effet
-u Précise l'UID de l'utilisateur virtuel (généralement celui de ftpuser).
-g Précise le GID de l'utilisateur virtuel (généralement celui de ftpgroup).
-D Précise le répertoire personnel de l'utilisateur.
Précise le répertoire personnel de l'utilisateur (celui-ci sera chrooter dans ce
-d
répertoire).
-T Précise le débit maximum (upload) de l'utilisateur.
-t Précise le débit maximum (download) de l'utilisateur.
Précise le nombre maximum de sessions simultanées que l'utilisateur peut
-y
ouvrir (threads).
Précise les heures de connexion de l'utilisateur (Exemple -z 1400-1800 entre
-z
14h et 18h).
-Q Précise le ratio de l'utilisateur (download).
-q Précise le ratio de l'utilisateur (upload).

Exemple :

# pure-pw useradd user1 -u ftpuser -g ftpgroup -d /ftp/ -y 3 -m

Cet exemple crée un utilisateur user1 ayant l'UID de ftpuser, le GID de ftpgroup, comme répertoire
personnel /ftp/ (chroote) ainsi que trois connexions simultanées au maximum.

D'autres options sont disponibles en tapant :

$ pure-pw

Voici la syntaxe de la commande de modification d\u2019utilisateurs virtuels :

12/18 napster_simon@hotmail.com
Net-Pro Par : Ghaouti Mohamed

# pure-pw usermod login options [-m]

A chaque modification d'un utilisateur il faut recréer la base de données PureFTPd avec la commande :

# pure-pw mkdb

L'ajout de l'option '-m' lors de la modification de l'utilisateur recrée automatiquement la base de données
(plus besoin de taper 'pure-pw mkdb').

Les options sont les mêmes que pour l'ajout d'un utilisateur.

Exemple :

# pure-pw usermod user1 -y 2 -m

Cet exemple modifie le nombre de connexions simultanées (2) de l'utilisateur user1.

8.2 Changer le mot de passe d'un utilisateur virtuel

Voici la syntaxe de la commande de changement de mot de passe d'un utilisateur :

# pure-pw passwd nom d'utilisateur [-m]

A chaque modification de mot de passe il faut recrée la base de données PureFTPd avec la commande :

# pure-pw mkdb

L'ajout de l'option '-m' lors de la modification de mot de passe recrée automatiquement la base de données
(plus besoin de taper 'pure-pw mkdb').

Exemple :

# pure-pw passwd user1 -m

Cet exemple change le mot de passe de l'utilisateur user1.

8.3 Convertir un utilisateur système en utilisateur virtuel

Si vous souhaitez convertir votre utilisateur système en utilisateur virtuel, voici la procédure à suivre :

13/18 napster_simon@hotmail.com
Net-Pro Par : Ghaouti Mohamed

# pure-pwconvert nom d'utilisateur >> /etc/pureftpd.passwd

Exemple :

# pure-pwconvert user2 >> /etc/pureftpd.passwd

8.4 Supprimer un utilisateur virtuel

Voici la syntaxe de la commande de suppression d'utilisateurs virtuels :

# pure-pw userdel login [-m]

A chaque suppression d'un utilisateur il faut recréer la base de données PureFTPd avec la commande :

# pure-pw mkdb

L'ajout de l'option '-m' lors de la suppression d'un utilisateur recrée automatiquement la base de données
(plus besoin de taper 'pure-pw mkdb').

Exemple :

# pure-pw userdel user1 -m

Cet exemple supprime l'utilisateur virtuel user1.

8.5 Afficher les informations relatives à un utilisateur virtuel

La commande suivante permet d'afficher les informations relatives à un utilisateur virtuel :

# pure-pw show nom d'utilisateur

Exemple :

# pure-pw show user1


Login : user1
Password : $1$zL.EEBKZ$MbyJUyqrAa3sT719arBbB0
UID : 1001 (ftpuser)
GID : 101 (ftpgroup)
Directory : /ftp
Full name :
Download bandwidth : 0 Kb (unlimited)

14/18 napster_simon@hotmail.com
Net-Pro Par : Ghaouti Mohamed

Upload bandwidth : 0 Kb (unlimited)


Max files : 0 (unlimited)
Max size : 0 Mb (unlimited)
Ratio : 0:0 (unlimited:unlimited)
Allowed local IPs :
Denied local IPs :
Allowed client IPs :
Denied client IPs :
Time restrictions : 0000-0000 (unlimited)
Max sim sessions : 2

8.6 Afficher la liste des utilisateurs virtuels :

La commande suivante permet de lister tous les utilisateurs virtuels du système :

# pure-pw list

9. Administration du serveur
9.1 Lister les utilisateurs connectes au serveur

La commande pure-ftpwho permet de lister les utilisateurs actuellement connectés au serveur ainsi que
leurs actions.

Exemple :

# pure-ftpwho
+------+---------+-------+------+------------------------------------------
-+
| PID | login |For/Spd| What | File/IP
|
+------+---------+-------+------+------------------------------------------
-+
| 6105 | user1 | 00:00 | DL | File.avi
|
| '' | '' | 170K/s| '' | -> 62.39.155.70
|
+------+---------+-------+------+------------------------------------------
-+

La commande pure-mrtg info permet de exporter un fichier MRTG (Graphique) sur l'utilisation du serveur.

9.2 Les fichiers de log

Le fichier de log des transferts est spécifié au démarrage du serveur (Voir Chapitre 6), par exemple si vous
lancez le serveur de cette manière :

# pure-ftpd -option -option -O clf:/var/log/pureftpd.log

15/18 napster_simon@hotmail.com
Net-Pro Par : Ghaouti Mohamed

Le fichier de log sera /var/log/pureftpd.log (format clf).

Voici un extrait de fichier de log :

172.16.34.1 - luser [17/Aug/2004:10:32:42 +0100] "GET


/home/luser/code/bash/yop/yop-1.0.sh" 200 2388
172.16.34.2 - ruser [17/Aug/2004:12:24:50 +0100] "PUT
/data/incoming/Supinfo.avi" 200 612732928

D'autres informations (connexions, erreurs...) sont disponibles dans les fichiers /var/log/messages et
syslog.

10. Utilisation de SSL/TLS


Nous allons voir comment configurer PureFTPd afin qu'il supporte le SSL. Cela permet de ne plus envoyer
les noms d'utilisateurs et les mots de passe en clair sur le réseau. Par contre le canal de données n'est pas
affecté par cette encryption, afin de ne pas apporter de baisse significative des performances et cela
permet de faire du FXP (transfert entre deux serveurs FTP) entre des serveurs qui supportent SSL/TLS et
d'autres qui ne le supportent pas.

Pour utiliser cette fonction, vous devez posséder le fichier "/etc/ssl/private/pure-ftpd.pem" qui contient la
clé privée et le certificat du serveur. Vous pouvez changer l'emplacement de ce fichier en passant l'option "-
-with-certfile /chemin/vers/le/fichier" au script configure, ou alors si vous avez changé le chemin pour
lesysconfdir, alors le fichier doit se trouver dans "<sysconfdir>/ssl/private/pure-ftpd.pem>. Notez bien que
c'est le même fichier qui doit contenir la clé privée et le certificat du serveur. Il doit ressembler à cela :

-----BEGIN RSA PRIVATE KEY-----


MIICXQIBAAKBgQC+KU+laUdHceXk4ZWSH5nFJPd/TJjpZVuVgZ5FuS2/mkof8kOV
[ clé tronquée ]
SwWH5WI9d0CffE30Ab1VpDnzKRn1ncBfvh3GIdLBgtjy
-----END RSA PRIVATE KEY-----
-----BEGIN CERTIFICATE-----
MIICoDCCAgmgAwIBAgIBADANBgkqhkiG9w0BAQQFADBFMQswCQYDVQQGEwJBVTET
[ certificat tronqué ]
QZ2/xw==
-----END CERTIFICATE-----

Pour démarrer le serveur avec le support des connexions SSL, vous devez utiliser le drapeau "-Y" ou "--tls",
qui peut prendre les valeurs suivantes :

 0 : le support pour SSL/TLS est désactivé, c'est la valeur par défaut


 1 : les clients peuvent se connecter soit de manière traditionnelle, soit en utilisant une connexion
SSL/TLS
 2 : seules les connexions SSL/TLS sont acceptées

Exemple :

On possède le bon certificat pour notre serveur, et on veut


qu'il n'accepte que les connexions sécurisées.
On utilise donc cette commande pour le lancer :
# pure-ftpd ${pure-ftpd-options} -Y 2

16/18 napster_simon@hotmail.com
Net-Pro Par : Ghaouti Mohamed

ou bien :
# pure-ftpd ${pure-ftpd-options} --tls=2

Chapitre 03 - Environnements graphiques

Environnements graphiques X-window

1. Introduction
Les interfaces graphiques sous GNU/Linux reposent en grande partie sur le standard X-Window. Ce
standard est né dans les laboratoires du MIT (Massachusetts Institute of Technology) dans les années 1984
pour fournir un environnement graphique adaptable aux nombreuses et diverses plateformes de
l'université.

A l'époque, un seul serveur puissant servait d'unité de calcul pour tous les postes utilisateurs qui n'étaient
que des terminaux (écran, clavier, souris). Ce système graphique était donc capable de lancer des
applications graphiques clientes sur un serveur distant. X-Window est bel et bien composé d'une partie
serveur et d'une partie cliente. C'est à partir de ce projet que sont nés les serveurs graphiques que nous
utilisons aujourd'hui tel que XFree86.

En 1988, le X Consortium est créé au MIT qui deviendra en 1999 X.org, une association à but non lucratif
qui se charge de superviser les développements futurs d'X-Window. La liste des membres de cette
association est composée des plus grands constructeurs : HP, Sun Microsystems, SGI, IBM.

1.1 L'architecture de X-Window et ses limites

Ce projet repose sur le principe d'une application réseau client/serveur. Le serveur gère l'accès aux
périphériques tels que la carte graphique, l'écran, le clavier ... Les applications graphiques (Navigateur,
client de messagerie, éditeur de textes, ...) sont des clients du serveur X. Ces clients font des requêtes au
serveur X et reçoivent les réponses via la Xlib, la librairie principale d'X qui permet d'interpréter des
requêtes "simples" de clients pour les transformer en instructions "complexes" conformes au standard X-
Window et interprétables par le serveur X.

Le concept X-Window est assez ancien et ne répond plus forcement aux exigences des utilisateurs
d'aujourd'hui. Par exemple, l'évolution remarquable des cartes graphiques a nécessité de gros changements
dans l'architecture d'XFree. La configuration de celui-ci semble assez laborieuse au premier abord pour
cette raison.

Un autre problème vient du fait que la Xlib ne permet de dessiner que quelques formes primitives, et donc
nécessairement des surcouches (toolkits comme Qt ou GTK) ont du être développées pour que les
programmeurs puissent créer des widgets (fenêtre, boutons, boîte texte, ...) aisément.

1.2 Xfree

Thomas Roell, étudiant Allemand, commence en 1990 à porter X-Window en version X11R4 pour PC. Son
projet se nomme alors X386, attire l'attention du X Consortium, et devient la référence pour PC. Le projet
est finalement abandonné par Roell en 1990 moins d'un an après sa création. Le projet est repris en 1991
par quatre développeurs : David Wexelblat, Glenn Lai, David Dawes et Jim Tsillas qui rebaptisent le projet
XFree86. Ce noyau de développeurs nommé core-team décide des évolutions du projet et accepte ou non
les contributions extérieures.

1.3 Xorg

17/18 napster_simon@hotmail.com
Net-Pro Par : Ghaouti Mohamed

La core-team est considérée comme un frein par certains développeurs comme Keith Packard qui décide
alors de forker le projet, c'est à dire de commencer un nouveau projet en partant de l'ancien, avec une
nouvelle équipe de développement. Rappelons que Keith Packard a développé RandR et Xft2 qui ont permis
à X d'afficher des polices anti-aliasées pour la première fois.

La core-team d'Xfree a finalement voté son autodissolution le 30 décembre 2003, estimant qu'elle ne
représentait plus suffisamment la communauté de développement. La version 4.4 du projet est sortie le 29
février 2004 avec une nouvelle licence en version 1.1 qui a été l'objet de nombreuses controverses du fait
de sa non compatibilité avec la licence GPL.

Xorg est maintenant un projet à part entière qui évolue très rapidement par rapport à Xfree. Il a été intégré
par défaut à la place d'Xfree dans la majorité des distributions actuelles.

18/18 napster_simon@hotmail.com

Vous aimerez peut-être aussi