BTS INFORMATIQUE DE GESTION Option Administrateur de réseaux développement d applications COMPTE-RENDU D ACTIVITE ACTIVITE N 2 Nom et Prénom : Casanova Grégory Identification (objectif) de l activité Installation d'un serveur FTP géré par une base de données MySQL Contexte dans lequel le projet s inscrit : (action professionnelle avec définition d une mission plus globale) Installation de MySQL sur un serveur Linux Debian 3.1, création et administration de la table qui gèrera les utilisateurs du serveur FTP, puis compilation de Pure-FTPd avec le support MySQL. Conditions de réalisation Travail effectué : individuellement en groupe Travail effectué dans : Un service utilisateur un service d études SSII Type d intervention : nouvelle application Maintenance Autres contraintes Activité réalisée en entreprise, mais présentation sur machines virtuelles VmWare à cause de l impossibilité de déplacer les machines en exploitation. Compétences couvertes N Compétence couverte Description de la compétence présentée C24 C25 C37 Installer un SGBD Installer un applicatif Administrer une base de données Compilation de MySQL Compilation de Pure-ftpd avec le support MySQL Création et administration de la base de données et de la table qui servira à gérer les utilisateurs FTP
Installation d un serveur FTP Géré par une base de données MySQL 1) Présentation de l activité Cette activité a pour but l installation d un serveur MySQL et d un serveur FTP utilisant une base de données MySQL pour gérer ses utilisateurs sur une distribution Linux Debian 3.1. MySQL est le SGBD open source le plus populaire au monde, souvent utilisé avec PHP afin de créer des sites web marchands avec bases de données, nous verrons ici comment l installer puis comment créer une base de données basique. Nous utiliserons comme serveur FTP le logiciel Pure-FTPd, il a l avantage d être à la fois très sécurisé et de se mettre en place très facilement malgré l'absence d'une interface graphique de configuration. Afin de faciliter son utilisation, nous l administrerons grâce à une base de données MySQL. 2) Présentation du contexte Le matériel utilisé dans cette activité sera composé d une machine où l installation de base de Debian 3.1 aura été effectuée au préalable, et d une machine cliente qui nous servira à vérifier si le serveur FTP fonctionne convenablement. Pour des raisons techniques, les machines utilisées pour la présentation seront virtuelles. Le travail sera réalisé individuellement, et nécessitera 6h. 3) Présentation des étapes de réalisation Compilation de MySQL Les installations par défaut des applications sous Debian par «apt-get» sont comparables au «urpmi» utilisé par Mandrake, bien que facilitant l installation, ils utilisent une installation par défaut, c est pourquoi nous compilerons MySQL afin de choisir le dossier d installation et les options que l on souhaite. Après avoir récupéré les sources sur le site www.mysql.com nous suivons les consignes d installations données sur le site. shell> groupadd mysql shell> useradd -g mysql mysql shell> tar zxvf /path/to/mysql-version-os.tar.gz shell> cd mysql-version-os shell>./configure --prefix=/usr/local/mysql --with-unix-socket-path=/var/run/mysqld/mysqld.sock Configure la compilation future en définissant le répertoire d installation sur /usr/local/mysql/ et l emplacement du socket MySQL dans /var/run/mysqld/ - 1 -
shell> make shell> make install shell> cp support-files/my-medium.cnf /etc/my.cnf copie le fichier de configuration créé lors du./configure sur le système shell> cp support-files/mysql-server /etc/init.d/mysql shell> chmod +x /etc/init.d/mysql copie le script de lancement de mysql et le rend éxecutable shell> cd /usr/local/mysql shell> bin/mysql_install_db user=mysql exécute le script qui crée les tables de droits par défaut shell> chown -R root. shell> chown -R mysql var shell> chgrp -R mysql. change le propriétaire des exécutables pour les donner à root et le propriétaire des données pour les donner à mysql shell> mkdir /var/run/mysqld shell> chown mysql /var/run/mysqld/ shell> chgrp mysql /var/run/mysqld/ crée le dossier qui accueillera le socket MySQL et l assigne à l utilisateur et au groupe mysql shell> cd /etc/init.d/ shell> update-rc.d mysql defaults active le script afin qu il se lance automatiquement au démarrage du serveur shell> /etc/init.d/mysql start lance le serveur MySQL L installation étant réalisée, il faut à présent sécuriser l accès à MySQL. A partir d une console, nous entrerons les commandes : shell> mysql u root mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('motdepasse'); mysql> SET PASSWORD FOR 'root'@'debian01' = PASSWORD('motdepasse'); Création de la base de données FTP Toujours à partir de la console MySQL, nous allons créer la table : mysql> CREATE DATABASE ftp; mysql> use ftp mysql> CREATE TABLE users ( User varchar(150) NOT NULL default '', Password varchar(64) default NULL, Uid smallint(6) NOT NULL default '-1', Gid smallint(6) NOT NULL default '-1', Dir varchar(200) default NULL, PRIMARY KEY (User) ) TYPE=MyISAM; Nous créons ensuite un utilisateur ftpd qui aura juste le droit SELECT sur la base de données ftp et qui aura comme mot de passe «pure» : mysql> GRANT SELECT ON ftp.* TO ftpd@localhost IDENTIFIED BY 'pure'; - 2 -
Puis nous terminons par créer le premier utilisateur de la table : mysql> insert into users (User, Password, Uid, Gid, Dir) values ('greg', 'casanova',-1, -1, '/home/greg/'); Cela aura pour effet de créer un utilisateur «greg» avec le mot de passe «casanova», son Uid et son Gid seront -1, ce qui équivaut à lui donner tous les droits sur le dossier /home/greg/ Compilation de Pure-FTPd Comme pour MySQL, après avoir récupéré les sources sur internet, dans une console : shell> tar -xzf pure-ftpd-version.tar.gz shell> cd pure-ftpd-version shell>./configure --with-mysql shell> make shell> make install Il faut ensuite créer un fichier de configuration qui contiendra les paramètres nécessaires à Pure-FTPd pour se connecter à la base MySQL, nous le placerons dans le dossier /etc/ nous le nommerons pureftpd-mysql.conf et il contiendra : MYSQLServer localhost MYSQLPort 3306 MYSQLSocket /var/run/mysqld/mysqld.sock MYSQLUser ftpd MYSQLPassword pure MYSQLDatabase ftp MYSQLCrypt cleartext MYSQLGetPW SELECT Password FROM users WHERE User="\L" MYSQLGetUID SELECT Uid FROM users WHERE User="\L" MYSQLGetGID SELECT Gid FROM users WHERE User="\L" MYSQLGetDir SELECT Dir FROM users WHERE User="\L" Les 4 dernières lignes contiennent les requêtes qu enverra Pure-FTPd à MySQL à la connexion d un utilisateur où «\L» représente le nom de l utilisateur qui essaye de se connecter, si le mot de passe correspond, la connexion au serveur sera effective, sinon l utilisateur sera rejeté. Les configurations ayant été réalisées, il suffit à présent de lancer le serveur FTP en tapant dans une console : shell> /usr/local/sbin/pure-ftpd -l mysql:/etc/pureftpd-mysql.conf & Puis de vérifier grâce à une machine cliente si tout fonctionne correctement. - 3 -
4) Conclusion On voit grâce à cette activité que MySQL n est pas utilisé que pour gérer des bases de données de site, il peut être utilisé en relation avec beaucoup d utilitaires et de par ce fait être le cœur d un système Linux, c est donc pourquoi l optimisation par la compilation est une chose importante, même si les gains dû à la compilation peuvent être minimes, sur un gros système ils sont toujours appréciables. On voit également que l administration d un serveur FTP peut être grandement simplifié grâce à la gestion des utilisateurs par une base MySQL, là où les serveurs FTP fonctionnent avec les utilisateurs Linux, ce qui peut présenter une faille de sécurité si les utilisateurs sont mal gérés (accès en SSH activé ), celui-ci ne nécessite qu une requête SQL pour la création de nouveaux utilisateurs. On peut également administrer le serveur à distance grâce à une page PHP ou tout simplement grâce à «phpmyadmin». Il y a également plein d autres options qui peuvent être utilisées, comme l utilisation des Uid et Gid pour gérer les droits sur les dossiers des utilisateurs, qui rendent Pure-FTPd avec le support MySQL très performant et permettent de faire beaucoup de choses que je n ai pas pu détaillées dans ce compterendu. - 4 -