« Discussion:ProFTPD MySQL et quotas » : différence entre les versions

De Lea Linux
Aller à la navigation Aller à la recherche
m (Impossible de faire fonctionner...)
 
(10 versions intermédiaires par 5 utilisateurs non affichées)
Ligne 57 : Ligne 57 :
micatod
micatod


== Problème de connection 421 ==
== 2-3 Retouches pour le faire fonctionner ==


Hello,
Bien le tuto !
J'ai juste ramé sur 2 points avec ma Fedora:
(Pour l'installation sur Fedora : Yum install proftpd proftp-mysql)


Je trouve également que ce tuto très bien fait. Bravo pour le temps consacré à le créer!
La requête pour donner les droits sur la BD à proftpd c'est :


J'ai également été confronté au problème suivant :
GRANT SELECT , INSERT , UPDATE , DELETE ON proftpd . * TO proftpd@localhostIDENTIFIED BY 'password'  


''421 Service not available, remote server has closed connection''


En réalité, après quelques tests, ça provenait du fait que l'utilisateur créé (proftpd) n'avait aucun droit en lecture sur la base proftpd. Donc sans ce droit, pas de lecture et donc pas de vérification d'identité.
Pour que le fichier proftpd.conf donné dans le tuto soit reconnu j'ai ajouté les lignes suivantes dans le fichier :


Voici les 3 commandes magiques permettant de donner un accès en lecture à l'utilisateur proftpd :
<IfModule mod_dso.c>
  LoadModule mod_sql.c
  LoadModule mod_sql_mysql.c
  LoadModule  mod_quotatab.c
  LoadModule  mod_quotatab_sql.c
</IfModule>


''REVOKE ALL PRIVILEGES ON * . * FROM 'proftpd'@'localhost';''


Permet de supprimer les privilèges précédents. Sait on jamais...
Ensuite j'ai modifié la partie Authentification par:


''REVOKE GRANT OPTION ON * . * FROM 'proftpd'@ 'localhost';''
# Mod MySQL
# =========
# Les mots de passe sont crypté ds la base avec la fct ENCRYPT (MySQL)


On supprime ici les GRANT.
SQLBackend    mysql
SQLAuthTypes  Crypt
SQLAuthenticate  on


''GRANT SELECT , INSERT,
Merci pour le tuto !
UPDATE ON * . * TO 'proftpd'@ 'localhost' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;''


On autorise le "select", "insert" et "update". On autorise "update" car si j'ai bien tout compris dans le tutoriel, l'utilisateur proftpd met à jour le nombre de fois qu'un utilisateur se connecte sur le ftp. Il en est de même pour le "insert".
==  Ajout d'un utilisateur ==


Lors de l'ajout d'un user ne pas mettre shell à '''/bin/false''' mais '''/bin/bash''' car sinon il est impossible de se connecter.


En espérant avoir apporté un petite pierre à l'édifice :)
INSERT INTO `ftpuser` ( `id`, `userid`, `passwd`, `uid`, `gid`, `homedir`, `shell`, `count`, `accessed` , `modified`, `LoginAllowed` ) VALUES ('', 'test', ENCRYPT('pwd'), '5500', '5500', '/home/ftp/test', '/bin/''bash''', '', '', '', 'true' );


WaZaR
Voila si ça peut vous aider.


== Impossible de faire fonctionner... ==
== Bd avec le module ==


Même après le suivi de ce tuto, ça ne fonctionne pas.
ce tuto est top merci, j'ai juste recontré un pb ou le serveur me rejetais immédiatement et cela venais d'un confit dans les modules chargés (voir fichiers /etc/proftpd/modules.conf) ou le module #LoadModule mod_sql_postgres.c n'était pas mis en commentaire et donc proftpd tentait une connexion sur une base type postgres au lieu de mysql.
Pb detecté dans les logs via :
tail -f /var/log/proftpd/mysql.log message


Feb 12 16:34:02 mod_sql/4.11[6657]: connection 'default' count is now 1
== Home dir ==
Feb 12 16:34:02 mod_sql/4.11[6657]: exiting mysql cmd_close
 
Feb 12 16:34:02 mod_sql/4.11[6657]: exiting mysql cmd_select
Petit problème, les utilisateurs peuvent ce balader dans tout le serveur, il ne sont pas bloqué dans leur homedir ...
Feb 12 16:34:02 mod_sql/4.11[6657]: unrecoverable backend error
Feb 12 16:34:02 mod_sql/4.11[6657]: error: '1142'
Feb 12 16:34:02 mod_sql/4.11[6657]: message: 'SELECT command denied to user 'proftpd'@'localhost' for table 'ftpuser''
Feb 12 16:34:02 mod_sql/4.11[6657]: entering mysql cmd_exit

Dernière version du 12 décembre 2023 à 16:04

Commentaires de : SylvainBolay

posté le 2005-09-30 11:37:53

Bonjour,

Lors de la création du nouvel utilisateur (ex: proftpd) une erreur s'est glissée dans la requête SQL.

Il faut remplacer "localhost" par "*" après la requète GRANT USAGE ON proftpd.localhost. En effet, l'astérisque permet de séléctionner toute les tables de la base de donnée proftpd.

Voici ci-dessous la version corrigée:

GRANT USAGE ON proftpd.* TO 'proftpd'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;

P.S. Merci pour ce super article

Salutations / Sylvain Bolay / 30.09.2005

Commentaire de MadHatter - 06/12/2005

La gestion des quotas ne fonctionne pas. (en tout cas pour moi. J'ai pourtant scrupuleusement respecté le didactitiel).

Par ailleurs, il semblerait que lorsqu'elle fonctionne, lors d'un envoi de fichiers sur le serveur, si l'envoi est hors quota, il est quand meme envoyé mais le fichier est ensuite supprimé automatiquement du serveur (cf : http://www.khoosys.net/single.htm?ipg=848).

Il semblerait également, qu'aucun message n'avertisse l'utilisateur du dépassement de quota (quel qu'il soit). Ce qui est un peu génant, surtout dans le cas d'une suppression automatique d'un fichier transféré, cité précédemment.

Je vais continuer à prospecter et tester de mon coté, mais si quelqu'un a trouvé une solution, il est le bienvenu... ;)

MadHatter.

en cas de problemes...

Ce tuto est vraiment impeccable !

Pour info j'ai rencontré ces problemes:

ftp> open 127.0.0.1 Connected to 127.0.0.1. 421 Service not available, remote server has closed connection ftp>

possibilite 1: lancez proftpd en mode debeug: > proftpd -n (et quand on tente de se connnecter à partir d'une autre console) error: unable to stat() /var/log/proftpd: No such file or directory creez alors le repertoire /var/log/proftpd.

possibilite 2: tail -f /var/log/proftpd/mysql.log message: 'Access denied for user 'proftpd'@'localhost' (using password: YES)' J'avais pas fait attention mais les droits pour l'utilisateur proftpd sur la base n'étaient pas passés.

pour les quotas je vais regarder ca...

micatod

2-3 Retouches pour le faire fonctionner

Bien le tuto ! J'ai juste ramé sur 2 points avec ma Fedora: (Pour l'installation sur Fedora : Yum install proftpd proftp-mysql)

La requête pour donner les droits sur la BD à proftpd c'est :

GRANT SELECT , INSERT , UPDATE , DELETE ON proftpd . * TO proftpd@localhostIDENTIFIED BY 'password'


Pour que le fichier proftpd.conf donné dans le tuto soit reconnu j'ai ajouté les lignes suivantes dans le fichier :

<IfModule mod_dso.c>

  LoadModule mod_sql.c
  LoadModule mod_sql_mysql.c
  LoadModule  mod_quotatab.c
  LoadModule  mod_quotatab_sql.c

</IfModule>


Ensuite j'ai modifié la partie Authentification par:

  1. Mod MySQL
  2. =========
  3. Les mots de passe sont crypté ds la base avec la fct ENCRYPT (MySQL)

SQLBackend mysql SQLAuthTypes Crypt SQLAuthenticate on

Merci pour le tuto !

Ajout d'un utilisateur

Lors de l'ajout d'un user ne pas mettre shell à /bin/false mais /bin/bash car sinon il est impossible de se connecter.

INSERT INTO `ftpuser` ( `id`, `userid`, `passwd`, `uid`, `gid`, `homedir`, `shell`, `count`, `accessed` , `modified`, `LoginAllowed` ) VALUES (, 'test', ENCRYPT('pwd'), '5500', '5500', '/home/ftp/test', '/bin/bash', , , , 'true' );

Voila si ça peut vous aider.

Bd avec le module

ce tuto est top merci, j'ai juste recontré un pb ou le serveur me rejetais immédiatement et cela venais d'un confit dans les modules chargés (voir fichiers /etc/proftpd/modules.conf) ou le module #LoadModule mod_sql_postgres.c n'était pas mis en commentaire et donc proftpd tentait une connexion sur une base type postgres au lieu de mysql. Pb detecté dans les logs via : tail -f /var/log/proftpd/mysql.log message

Home dir

Petit problème, les utilisateurs peuvent ce balader dans tout le serveur, il ne sont pas bloqué dans leur homedir ...