|
blog actif depuis 774 jours.
retours d'expériences, codes sources, réflexions, humeurs... d'un webmaster |
||||||||||||||||||||||||||||||||||||||||||||||||||
|
Lun. 07 Juil. 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> 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 ~
Commentaires
Ajouter un commentaire |
Webmaster depuis maintenant plus de 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...
romualb.com est sur Facebook
![]()
![]()
![]()
|
|||||||||||||||||||||||||||||||||||||||||||||||||
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