blog actif depuis 636 jours.

retours d'expériences, codes sources, réflexions, humeurs... d'un webmaster

 

Mon

07

Jul

 
Comme nous l'avons vu dans la première partie, le fonctionnement de l'interface web de gestion d'utilisateurs linux est le suivant :
Une interface PHP va mettre à jour une base de données MySQL avec les informations de connexion d'utilisateurs FTP et génère un fichier XML. Le cron vérifie toutes les minutes la présence de ce fichier qui, s'il existe, sera traité par un script shell qui créera ou modifiera l'utilisateur linux.
Voici plus en détail les différentes parties de l'application

Interface d'administration PHP-MySQL

Les informations minimales à sauvegarder sont
- le user FTP
- le mot de passe
- la date d'expiration du compte (pour pouvoir désactiver un compte)

Le user FTP correspond à l'utilisateur linux. (Prévoyez un préfixe pour faciliter la gestion des utilisateurs dédiés à l'application.).

Le mot de passe n'est pas saisi. Il est généré aléatoirement par une fonction php. Il doit être sécurisé (mélange aléatoire de chiffres et lettres en minuscules et majuscules) pour être accepté. En modification, on prévoira la possibilité de regénérer le mot de passe. Si le mot de passe est stocké crypté en base, il faudra prévoir un système de demande de regénération en cas de perte.

La date d'expiration du compte FTP correspond en fait à la date de validité du compte utilisateur linux. Pour désactiver un compte, il suffit donc de mettre une date inférieure à la date du jour.
On peut enrichir l'interface d'admin avec des alertes et des envois de mails automatiques quelques jours avant la date d'expiration d'un compte.

L'interface d'admin va gérer la base de données et générer le fichier XML qui sera traité par le script shell. Ce fichier devra être stocké dans un répertoire extérieur à l'arborescence du site pour des soucis évidents de sécurité. Il est de la forme :
<user>
      <login>user_ftp</login>
      <password>mot_de_passe</password>
      <date_limite>2008-12-25</date_limite>
</user>

Script SHELL

Nous utiliserons les fonction useradd pour ajouter l'utilisateur, usermod pour le modifier et chpasswd pour gérer le mot de passe.
Dans notre exemple, on ne crée pas de répertoire personnel à chaque utilisateur, on indique le répertoire commun, (les utilisateurs se connectent en FTP sur le même répertoire partagé). De plus on n'attribuera pas de shell à l'utilisateur, ce qui empêchera la connexion SSH par le système.
Remarque : le script est exécuté par le cron avec le user root. Les fonctions seront donc exécutées avec leur chemin absolu (/usr/sbin/useradd, /usr/sbin/usermod...) car le cron n'a pas forcément le même environnement (variable $PATH) que root.
Pour tester la création du compte, on teste la connexion FTP et on regarde le réponse du serveur (si elle réussit, il retournera le code 230). Si tout est ok, on supprime le fichier XML, sinon on le déplace.
fichier source

proFTP

Pas grand-chose à faire du côté proFTP, si ce n'est indiquer que les utilisateurs se connectent sur leur répertoire personnel (qui est en fait le même pour tous) et d'interdire d'aller ailleurs que ce répertoire.
Dans le fichier de conf de proFTP (/etc/proftpd.conf) mettre
DefautChrdir  ~
Bookmark and Share

 

Commentaires

Très bonne explication ! J'ai un projet presque similaire (création de compte FTP et gestion de leurs droits via une interface php) et j'aurais aimé avoir votre avis, c'est dommage que vous ne donniez pas votre mail. N'hésitez pas à me contacter, j'aurais besoin de vos conseils :-)

11/08/2008

 

Ajouter un commentaire

nom / pseudo :
e-mail :

(Votre e-mail ne sera ni exploité, ni divulgué.)

site (facultatif)
 

Webmaster depuis maintenant presque 10 ans, j'ai créé ce blog pour publier mes retours d'expérience et parler du Web et du développement Web en général, mais aussi de plein d'autres choses...

<Mars 2010 
LunMarMerJeuVenSamDim
01 02 03 04 05 06 07
08 09 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31     

 

 

 

Referencement annuaire gratuit Annuaire carte postale blog,,personnel communiquer gratuit Paperblog : Les meilleurs actualités issues des blogs Classement de sites - Inscrivez le vôtre! Inscrivez-vous maintenant sur Viadeo Web Developement Blogs - BlogCatalog Blog Directory web counter