AngeZanetti.com

Internet et ses usages, développement Web et humeurs diverses

Tag: AdminServ

Vim, un éditeur de texte du 21ème siècle

Je me rends compte que je ne vous ai jamais parlé de Vim sur ce blog. J’ai un vieux brouillon qui date de 2 ans sur le sujet mais je n’ai jamais publié d’articles alors qu’il y a matière !

Vim, pour ceux qui ne le connaissent pas est un “vieil” éditeur de texte en mode texte. J’ai commencé à m’y intéresser il y a 2-3 ans quand je faisais des recherches sur l’ergonomie du poste de travail. En effet Vim à la particularité de ne pas utiliser la souris, vos doigts restent sur le clavier et vos poignets apprécient !

Vim keycap

Vim, un éditeur modal

En deux mots, Vim comporte plusieurs mode de fonctionnement: normal, insertion et visuel. Pour chaque mode la fonction des touches de clavier changent. Alors c’est un peu dur à apprendre mais ça décuple les fonctionnalités d’un éditeur classique! Tout part de là, par défaut, en mode normal, une grosse partie des 105 touches de mon clavier servent à me déplacer dans le texte, sans souris mais de manière très précise, au début du mot suivant, à la fin du mot suivant, au début du paragraphe, de la phrase, à la fin de la ligne etc, etc…

C’est long à apprendre mais c’est redoutable une fois maitrisé, bien plus que les raccourcis Ctrl+Alt+flèches  d’un éditeur type Sublime Text.

Pour creuser un peu allez voir ce lien qui regroupe quelques tutos.

Vim, un éditeur universel

Autre point positif, vi(m) est super léger et présent sur à peu près tous les système d’exploitations sérieux. Je peux donc changer d’OS, me connecter à un serveur en SSH, coder directement sur une VM sans avoir à changer mon workflow, à modifier mes habitudes. Il suffit de copier mes préférences – mon .vimrc – dans ma home et, hop, je suis comme à la maison !

Vim est moderne et extensible !

Dernier point pour les sceptiques, les fonctionnalités des Vim sont largement aussi étendues que celles de votre IDE préféré. Par défaut il embarque la coloration syntaxique, l’auto-complétion, l’indentation automatique et pleins d’autre chose.

Mais Vim c’est surtout un “vieux” logiciel libre avec une communauté énorme de développeurs. Du coup, un peu comme pour WordPress, il y a une multitude de plugins pour faire ce que Vim ne fait pas encore.

Personnellement j’utilise NERDtree qui permet de manipuler et visualiser facilement des fichiers dans un projet et tComment qui permet de commenter les lignes sélectionnées en fonction du langage utilisé, bien pratique pour les **** de commentaires du HTML :)

En ce moment je teste également CtrlP, un équivalent du Pomme T de Textemate pour ouvrir rapidement des fichiers, AcK une alternative à grep pour parcourir le code de tous les fichiers d’un projet et Syntastic qui m’affiche les erreurs de syntaxe directement dans mes fichiers sources.

 Je ne changerais pas  d’IDE

Did you mean: vim?

En plus de deux ans d’utilisation je suis carrément convaincu: Vim c’est bien. La courbe d’apprentissage est longue (je suis toujours entrain d’apprendre) mais ça vaut le coup, plus on code, plus on apprends de nouveaux raccourcis, plus on est productif. Et ce quel que soit la machine, et quand on passe d’un Mac à un PC on est heureux d’avoir fait ce choix !

PS: Il y aura dans les semaines qui suivent un TupperVim d’organiser au Mutualab venez y faire un tour pour découvrir la bête !

Comment avoir une version de NodeJs à jour sur Ubuntu ?

Je me posé cette question il y a quelques jours après un upgrade de mes paquets sur un serveur qui fonctionne sous Ubuntu 12.04. Les applications misent à jour ne fonctionnaient pas, NPM non plus. Bref, un joli “foutoir”. J’ai mis du temps à comprendre d’ou venait les problèmes. Finalement un simple

node -v

Et j’ai compris tout de suite, j’avais sur mon serveur une vieille version de node.js (0.6) alors que npm et mes applications étaient à jour. Cela engendrait des conflits de versions, même certaines erreurs de syntaxe. Le soucis ici c’est que node.js est en pleine explosion, il sort une nouvelle version toute les semaines ou presque et qu’Ubuntu, qui se veut stable, n’a pas le temps ou l’envie de valider et d’empaqueter ces nouvelles versions à ce rythme. Il faut donc mettre à jour Node.js manuellement.

Pour mettre à jour Node.JS, deux solutions s’offre à vous

La méthode par compilation

Pas vraiment ma méthode préférée, elle demande des connaissances en administration de systèmes Linux. Et au moindre grain de sable dans le mécanisme il faut prendre sa patience et son calme à deux mains et mettre les nez dans le cambouis… Bof donc, d’autant que si j’utilise des distributions comme Ubuntu c’est justement pour éviter ce genre de démarche !

Ceci dit, c’est la méthode la plus fiable et qui vous permet de vous tenir vraiment à jour. Donc si vous voulez développer avec des release candidates ou autres pré-versions, ou juste si ça vous éclate de compiler vos programmes :

mkdir tmp
cd tmp
curl http://nodejs.org/dist/node-latest.tar.gz -o node-latest.tar.gz
tar xvf node-latest.tar.gz
./configure
make
make install

La méthode par paquets

Si comme moi vous n’êtes pas fan de la compilation et que vous preferez mettre à jour avec un simple

sudo apt-get update && sudo apt-get upgrade

Alors j’ai ce qu’il vous faut ! Sur le launchpad j’ai trouvé un PPA – comprenez des logiciels empaquetés par un utilisateur de la communauté – qui permet d’avoir la dernière version stable de nodeJS.
Pour l’installer c’est simple, ouvrez votre source.list et ajoutez à la fin les lignes suivantes :

deb http://ppa.launchpad.net/chris-lea/node.js/ubuntu YOUR_UBUNTU_VERSION_HERE main 
deb-src http://ppa.launchpad.net/chris-lea/node.js/ubuntu YOUR_UBUNTU_VERSION_HERE main

Vous prenez soin de remplacer ‘YOUR_UBUNTU_VERSION_HERE’ par le nom de votre distribution, dans mon cas ‘precise’.

Ensuite vous mettez à jour votre système et vous installez nodeJs, si ce n’est pas déjà fait !

Ajouter un sous domaine sur son serveur dédié avec Apache2

Ces derniers jours j’ai été confronté deux fois au problème de mise en place de sous domaine sur un serveur dédié, et à chaque fois ce fut une galère. Entre la documentaion trop complète et les différents tutos sur le web qui racontent tout et n’importe quoi j’ai passé plusieurs heures à chercher, modifier, effacer des fichiers de config.

Pour éviter de me reprendre la tête, et en espérant que cela puisse servir à quelques personnes, voici la marche à suivre :

Cas n°1 : Votre domaine pointe déjà vers le serveur dédié, vous voulez juste créer un sous domaine associé à un répertoire

C’est le plus simple, même si, sur le web, on trouve tout et son contraire pour résoudre ce problème simple en apparence …

Vous avez donc un domaine – toto.me – dont le champs A des DNS pointe vers l’IP de votre serveur . Vous voulez créer un sous domaine type sub.toto.me qui pointe vers un dossier quelconque, par exemple /home/toto/www/sub

Donc première chose à faire il faut ajouter un champ CNAME à vos résolutions DNS, afin que sub.toto.me pointe vers toto.me

Une fois que vous avez fait ça, il faut attendre, la propagation des DNS peut prendre du temps, beaucoup de temps. En gros il faut compter 3-4 heures…

Maintenant attaquons nous à Apache, c’est souvent là qu’il y a le plus d’erreurs, de confusions même si, au final, c’est assez simple. Il faut éditer le fichiers /etc/apache2/sites-available/default et y ajouter les lignes suivantes :

<VirtualHost *:80>
 DocumentRoot /home/toto/www/sub
 ServerName sub.toto.me
</VirtualHost>

Ensuite il suffit de redémarrer Apache avec un

 sudo /etc/init.d/apache2 restart

et le tour est joué !

 

Cas n°2 : Votre domaine pointe vers un autre serveur et vous voulez rediriger un sous domaine vers un port autre que 80

C’est déjà un peu plus compliqué mais c’est un problème que nous avons rencontré au coworkingLille avec Pierre. L’idée était de mettre un sous domaine de coworkinglille.com sur notre serveur de dev local pour tester une appli Node.Js en production. Pierre à donc créer un sous domaine à coworkinglille qui pointe avec CNAME vers l’IP de notre serveur de dev.

Ensuite il faut rediriger tout ce qui arrive de ce nom de domaine vers l’IP locale et le port 3000 – par défault sous Node.JS.

Encore une fois, il faut éditer le fichiers /etc/apache2/sites-available/default et y ajouter un virtualhost dans lequel on va utiliser le mod_proxy d’Apache

<VirtualHost *:80>
  ServerName sub.coworkinglille.com
 ProxyRequests Off
  ProxyVia Block
  <Proxy *>
    Order deny,allow
    Allow from All
  </Proxy>
  ProxyPass / http://127.0.0.1:3000/
  ProxyPassReverse / http://127.0.0.1:3000/
</VirtualHost>

ATTENTION : il faut bien mettre ProxyVia et ProxyRequest à block & Off sinon vous transformez votre serveur en OpenProxy, ce qui n’est pas térrible en terme de sécurité !

Normalement, après un redémarrage d’Apache, toutes requêtes vers sub.coworkinglille.com sera redirigé vers les port 3000 local et inversement !

En espérant que ce post vous sera autant utile qu’a moi !

N.B : Ce Tuto est valable pour un serveur Ubuntu mais il n’y pas de raisons que cela ne fonctionne pas avec d’autres distributions, faites juste attention à installer les paquets et dépendances si besoin.

Réduire le spam sur son site WordPress

Encore une petite note sur WordPress, suite au mail d’un lecteur qui m’a prévenu que le formulaire de commentaire renvoyait systématiquement vers une page 404…

J’ai regardé et, effectivement, il y avait une erreur dans mon .htaccess, fichier que j’avais modifié il y a quelques temps pour réduire le spam ! Bon, le fait est que cela avait bien fonctionné, un peu trop même :)

Explications :

WordPress est victime de son succès, bien souvent les blogs qui utilisent cette plateforme sont la cible de robots spammeurs qui attaquent directement wp-comment-post.php et envoies des centaines de spams par jours… Et, rapidement, trier ces indésirables devient très pénible !
Petite solution facile, trouvée dans le codex, à faire avec précaution toutefois !

Il faut ouvrir votre fichier .htacess et y coller :
RewriteEngine On&lt;br /&gt;<br />
 RewriteCond %{REQUEST_METHOD} POST&lt;br /&gt;<br />
 RewriteCond %{REQUEST_URI} .wp-comments-post.php*&lt;br /&gt;<br />
 RewriteCond %{HTTP_REFERER} !.*yourdomain.com.* [OR]&lt;br /&gt;<br />
 RewriteCond %{HTTP_USER_AGENT} ^$&lt;br /&gt;<br />
 RewriteRule (.*) http://%{REMOTE_ADDR}/$ 
 Avec ces quelques lignes vous évitez tout commentaires venant directement sur wp-comment-post.php, simple et efficace.

Attention toutefois, il faut bien mettre votre nom de domaine sans faute de frappe à la place du *yourdomain.com*. C’est ce qui coincait dans mon cas, une toute petite erreur de frappe qui interdisait tous commentaires !

C’est maintenant réparé, on peut reprendre les discussions et autres trolls !!

Configurer WordPress pour utiliser SSH au lieu de FTP

J’ai récemment (re)installé un serveur dédié pour mon ami Guillaume. Ce serveur sert, entre autres, à faire tourner un blog WordPress.

J’ai mis en place un LAMP, tout bête et expliqué à Guillaume comment utiliser SSH – avec SFTP – pour le transfert de fichiers sur le serveur. Ainsi j’évite de mettre un serveur FTP, protocole critiqué pour sa sécurité.

Update Sept 2012 : Depuis la rédaction de ce post il existe un plugin qui fait le boulot en deux clics : http://wordpress.org/extend/plugins/ssh-sftp-updater-support/installation/. Cela ne vous dispense pas de créer vos clés SSH avec ssh-keygen mais tout le reste – y compris les install d’extensions php osnt inutiles ! 

Mais problème, pour mettre à jour les thèmes et les extensions WordPress demande un accès FTP. Le SSH n’est pas disponible par défaut. Je me doutais bien que je n’étais pas le premier à me confronter au sujet, j’ai donc cherché un peu sur la toile et je suis tombé sur des tutos plus ou moins complets, plus ou moins en français. Je vais donc noté tout ça ici et le garder au chaud dans ma base de données, autant pour vous que pour moi !

Alors dans un premier temps on installe, si ce n’est pas déjà fait, les librairies SSH :

sudo apt-get install libssh2-1-dev libssh2-1 libssh2-php

Ensuite les libs PHP5 :

sudo apt-get install php-pear php5-dev

Une fois que tout est installé on va chercher SSH2 via pecl :

sudo pecl install channel://pecl.php.net/ssh2-0.11.3

NB: Ceci est la version beta, pour la version classique un sudo pecl install ssh2 devrait suffire, mais pour Ubuntu 10.04.3 j’ai du utilisé la beta…

Une fois que SSH2 est installé on crée  /etc/php5/conf.d/ssh2.ini avec sudo touch /etc/php5/conf.d/ssh2.ini Et on y place le code suivant :

extension=ssh2.so

On redémarre Apache ( sudo /etc/init.d/apache2 restart) . Voilà pour la config serveur. Reste a configurer WordPress !

On commence par crée des clés SSH pour que WordPress puisse se logger :

ssh-keygen

Vous devriez avoir un truc du genre :

Generating public/private rsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_rsa):
Created directory ‘/home/user/.ssh’.
Enter passphrase (empty for no passphrase): (le mot de passe n’est pas indispensable, il suffit de taper Entrée)
Enter same passphrase again: (même chose)
Your identification has been saved in /home/user/.ssh/id_rsa.
Your public key has been saved in /home/user/.ssh/id_rsa.pub.
The key fingerprint is: blablablab

Une fois les clés SSH crées on copie la clé publique en “authorized_keys” et on modifie les permissions des dossiers :

cd ssh
cp id_rsa.pub authorized_keys
cd
chmod 755 .ssh

Et voilà :) Cela suffit, seul problème avec cette config WordPress va vous demandé à chaque fois vos identifiants, pass, et chemin de clés SSH. Pour y remédier c’est assez simple, il faut éditer le fichier wp-config.php qui se trouve à la racine de votre installation wordpress et d‘ajouter les lignes suivantes :

define('FTP_PUBKEY','/home/user/.ssh/id_rsa.pub');
define('FTP_PRIKEY','/home/user/.ssh/id_rsa');
define('FTP_USER','user');
define('FTP_PASS','');
define('FTP_HOST','monserveur.com');

Normalement pus besoin de renseigner ces id/pass/keys à chaque fois ! Bye bye le vilain protocole FTP :)

Installer NodeJS, NPM et Express sur Ubuntu 10.04

Ce billet est autant un aide mémoire pour moi qu’un billet explicatif pour vous. En effet depuis quelques jours j’installe NodeJS sur plusieurs serveurs. Sur la version actuelle d’Ubuntu – 11.04 – c’est relativement facile :
[bash]sudo apt-get install nodejs[/bash]
Mais pour les versions antérieures et notamment la dernière LTS, la 10.04, c’est un poil plus compliqué.

En fait vous avez deux solutions, compiler ou utiliser la version par paquets. Personnellement j’ai choisi la deuxième méthode mais si vous voulez un NodeJS plus à jour je vous conseille la première méthode.

La méthode par compilation :

La mise en garde d’usage, compiler ça permet d’avoir des logiciels à jour mais c’est beaucoup plus risqué et difficile que la méthode par paquets, voilà vous êtes prévenus !

La marche à suivre est la suivante :
Installer git :

sudo apt-get install git

– Faire, pas à pas, la méthode suivante :

 git clone --depth 1 git://github.com/joyent/node.git # or git clone git://github.com/joyent/node.git if you want to checkout a stable tag
 cd node
 git checkout v0.4.10 # optional. Note that master is unstable.
 export JOBS=2 # optional, sets number of parallel commands.
 mkdir ~/local
 ./configure --prefix=$HOME/local/node
 make
 make install
 echo 'export PATH=$HOME/local/node/bin:$PATH' >> ~/.profile
 echo 'export NODE_PATH=$HOME/local/node:$HOME/local/node/lib/node_modules' >> ~/.profile
 source ~/.profile
 

La méthode par paquets :

sudo apt-get install python-software-properties

sudo add-apt-repository ppa:chris-lea/node.js
sudo apt-get update
sudo apt-get install nodejs

Ensuite on installe NPM, le gestionnaire de paquets magique pour node

On passe en root avec “su” puis

curl http://npmjs.org/install.sh | sh

Pour installer Express rien de plus simple :

npm update
npm install express

Et voilà vous avez un environnement NodeJs fonctionnel et user friendly !

[Tuto] Monter son serveur ftp avec utilisateurs virtuels

Pour ceux qui me suivent sur Twitter vous avez du voir apparaitre le hashtag #mutualab. C’est en fait un projet que j’ai avec @WoldenAvro. Le but étant de mettre en place une plateforme d’échanges de “bout de codes qui marchent” entre développeurs qui bossent dans les nouveaux médias, plus particulièrement la réalité augmentée/UniversVirtuels.

Le projet est toujours en gestation, je vous en parlerai plus en détail à la rentrée mais pour le moment  je vais vous en faire une présentation technique. Avec Alain nous avons décidé que cette plateforme serait constituée d’une interface web style forum/wiki couplé à un serveur ftp pour présenter et héberger les différents projets mutualisés.

J’ai eu la charge de mettre en place le serveur web et ftp. J’ai décidé de partager cette expérience sous la forme d’un petit tuto, en espérant qu’il puisse vous aider si un jour vous venait à l’idée de monter votre serveur dédié.

Le but étant de vous montrer que c’est finalement pas très compliqué. Il faut quand même avoir quelques connaissances de base de Linux – pouvoir se déplacer dans l’arborescence en ligne de commande, savoir installer des paquets etc… – mais celui qui à utiliser Linux comme OS au moins une fois devrais s’en sortir. Au pire, et c’est ça qui est génial dans le libre, la documentation d’Ubuntu est là pour vous aider. Elle est super complète et si vous ne trouvez pas ce qu’il vous faut il reste les forums qui sont très actifs. Bref vous ne serez jamais seul au monde devant votre prompt :)

Le serveur à été loué chez un hébergeur mais ce tuto fonctionne tout aussi bien avec un vieux PC branché sur une ***box. La seule différence est en fait dans la première demi-heure de mise en place du serveur : Pour un serv loué il suffit de cliquer sur “Installer Ubuntu Server” pour avoir votre distribution Linux alors que pour un serveur maison il faut booter sur un CD préalablement téléchargé et gravé.

Dans les deux cas ce n’est pas très compliqué, il faut renseigner son nom et autres banalités et d’attendre 30min le temps que tout ces petits fichiers prennent place.

Alors une fois Linux installé sur votre machine de quoi a-t-on besoin ?

Pour tout ce qui est web – wiki/forum, urls et autres – on va utiliser le fameux LAMP. Cela veut dire Linux-Apache-Mysql-PHP et cela fait tourner beaucoup de choses. Tient ce blog par exemple tourne sur un LAMP :)

Pour installer un LAMP sous Linux rien de plus simple :

sudo apt-get install lamp-server^

Cette commande va vous installer Apache2, PHP5 et MySQL. Pour vérifier si cela fonctionne il suffit de taper l’IP du serveur dans votre Firefox et vous devriez tomber sur un joli :

It Works !

Cette page est automatiquement générée dans /var/www/ quand on installe Apache. En fait maintenant notre IP est automatiquement redirigée vers le répertoire /var/www/, cela ne me plait pas trop mais heureusement c’est configurable :)

Moi ce que je veux c’est un utilisateurs générique dont le dossier sera la racine du répertoire web. Dossier qui sera partagé ensuite avec tous les utilisateurs qui ont un compte sur le site de mutualab.

Je commence donc par créer cet utilisateur :

adduser mutualab

Comme tous les utilisateurs de Linux cet utilisateurs aura un répertoire /home/mutualab/ comme répertoire personnel. Créons un répertoire /www/ qui servira de dossier partagé. Attention aux permissions, ce dossier est par défaut protégé en écriture. Hop, on change ça avec un petit

chmod -R 777 /home/mutualab/www/

Ensuite il me suffit d’ouvrir le fichier /etc/apache2/sites-available/default et de remplacer DocumentRoot /var/www/ par

DocumentRoot /home/mutualab/www/

Reste maintenant le gros morceau : Mettre en place le serveur FTP et le faire fonctionner avec des utilisateurs virtuels. Pour ce projet j’ai choisi vsftpd, qui a la réputation d’être le plus sécurisé même si le protocole FTP est par nature trop peu “safe”.

N.B : Tout comme le choix d’Ubuntu plutôt que Debian c’est purement arbitraire rien ne vous empêche d’avoir le même résultat en prenant d’autres outils, c’est aussi ça la magie du libre :)

Pour installer vsftpd rien de plus simple :

sudo apt-get install vsftpd

Par défaut vsftpd est très très sécurisé et ne permet pas grand chose , surtout pas à des utilisateurs non enregistrés sur le système d’exploitation. Il va donc falloir mettre les mains dans le code, heureusement il y a un manuel en ligne et la doc Ubuntu.

Vsftp est un serveur FTP super complet, la doc liée ci dessus est en anglais et donne un peu le tournis, trop de fonctionnalités, trop d’options bref il faut faire le ménage dans tout ça :)

Je vous propose une copie de mon fichier /etc/vsftpd.conf, c’est commenté vous devriez pas avoir trop de mal à déchiffrer.

# Mode Daemon ou standalone
listen=YES
#
# Allow anonymous FTP?
anonymous_enable=NO
#
# Autoriser les utilisateurs locaux de se connecter au FTP
local_enable=YES
#
# Autoriser l'accès en écriture
write_enable=YES
#
# Default umask for local users is 077. You may wish to change this to 022,
# if your users expect that (022 is used by most other ftpd's)
local_umask=077
#
# Message pour ceuq qui vont dans certains dossiers
dirmessage_enable=YES
#
#Utiliser l'heure locale
use_localtime=YES
#
#Garder un log de l'activités des utilisateurs
xferlog_enable=YES
#
#Permet de cacher la vraie identité du proprio du serv
hide_ids=YES
#
# Make sure PORT transfer connections originate from port 20 (ftp-data).
connect_from_port_20=YES
#
# Texte d'acceuil :
ftpd_banner=Bienvenue sur le FTP du  Mutualab.
#
#
#Options des utilisateurs du FTP
#--------------------------------
#Autoriser la connexions par des utlisateurs non locaux - On leur donne /home/mutualab/www/ comme rep commun
guest_enable=YES
guest_username=mutualab
local_root=/home/mutualab/www/
# Les utilisateurs locaux sont bloqués dans leur /home, ceux dans la liste sont Libres
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list
#
#
# Options de connexions
#------------------------
# Nbr de clients max, de cnx par clients, AFK max
max_clients=30
max_per_ip=3
idle_session_timeout=60
data_connection_timeout=120
#
# Debian customization
#------------------------
# Some of vsftpd's settings don't fit the Debian filesystem layout by
# default.  These settings are more Debian-friendly.
#
# This option should be the name of a directory which is empty.  Also, the
# directory should not be writable by the ftp user. This directory is used
# as a secure chroot() jail at times vsftpd does not require filesystem
# access.
secure_chroot_dir=/var/run/vsftpd/empty
#
# This string is the name of the PAM service vsftpd will use.
pam_service_name=vsftpd
#
# This option specifies the location of the RSA certificate to use for SSL
# encrypted connections.
rsa_cert_file=/etc/ssl/private/vsftpd.pem

Ensuite on crée la base de données qui va permettre de mettre les login-pass des utilisateurs de mutualab. Vous pouvez le faire avec une interface graphique comme phpMyadmin moi je vous donne la méthode en ligne de commande c’est beaucoup plus simple :)

sudo mysql -u root -p
mysql> 

CREATE DATABASE vsftpd;
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON vsftpd.* TO 'vsftpd'@'localhost' IDENTIFIED BY 'MOTDEPASSE_VSFTPD';
FLUSH PRIVILEGES;
USE vsftpd;

# Creation d'une table utilsateurs avec 4 champs (ID, NOM, PASS, CRYPTAGE)
CREATE TABLE `utilisateurs` ( `ID` INT NOT NULL AUTO_INCREMENT PRIMARY KEY , `NOM` TEXT NOT NULL , `PASS` TEXT NOT NULL , `CRYPTAGE` TEXT );

# Creation d'une table logging avec 6 champs (ID, USER, HOST, RHOST, MSG, TIME)
CREATE TABLE `logging` ( `ID` INT NOT NULL AUTO_INCREMENT PRIMARY KEY , `USER` TEXT NOT NULL , `HOST` TEXT NOT NULL , `RHOST` TEXT NOT NULL , `TIME` TEXT NOT NULL , `MSG` TEXT NOT NULL );

Avec cette configuration notre serveur FTP permet à tous les utilisateurs de se connecter au répertoire /home/mutualab/www/ avec leur login et pass qu’ils auront préalablement renseigné sur le site – et donc stocké dans la base de données MySQL. A noter que les utilisateurs seront “bloqués” dans ce répertoire et ne pourront ni se déplacer dans l’arborescence du système ni porté atteinte à la pérennité de celui-ci car ils n’auront pas les droits administrateur.

Pour que le serveur FTP puisse dialoguer avec la base de données on installe le paquet suivant :

sudo apt-get install libpam-mysql

Reste à configurer la connexion à la base de données. Pour cela on va utiliser PAM, et configurer le fichier /etc/pam.d/vsftpd

Encore une fois je vous livre la copie du mien :

# Standard behaviour for ftpd(8).                                                                                                                       
#auth required  pam_listfile.so item=user sense=deny file=/etc/ftpusers onerr=succeed

# Note: vsftpd handles anonymous logins on its own. Do not enable pam_ftp.so.

# Standard pam includes
#@include common-account
#@include common-session
 #@include common-auth
#auth required  pam_shells.so
#-----------------------------------------------------
# Connexion avec logging en base de donnees des acces
auth required pam_mysql.so user=vsftpd passwd=*** host=localhost db=vsftpd table=utilisateurs usercolumn=NOM passwdcolumn=PASS crypt=1
account required pam_mysql.so user=vsftpd passwd=**** host=localhost db=vsftpd table=utilisateurs usercolumn=NOM passwdcolumn=PASS crypt=1

Et c’est tout ! Il suffit de tester en remplissant un champ de la base de données, vous verrez cela fonctionne nickel. Avec cryptage du mot de passe de l’utilisateur en plus.

J’espère que ce tuto pourra vous être utile, si vous avez des questions, des remarques n’hésitez pas !

© 2016 AngeZanetti.com

Theme by Anders NorenUp ↑