proftp + proftp admin pour gestion des comptes via mysql

proftp + proftp admin pour gestion des comptes via mysql - Logiciels - Linux et OS Alternatifs

Marsh Posté le 30-09-2008 à 13:18:58    

Bonjour,
 
Je suis en train d'installer proftp sur une debian.
 
J'ai tout réussi, mais je n'arrive pas à m'identifier via mon client FTP.
 
J'ai bien le message de bienvenue, mais il ne reconnait pas mon login / mot de passe.
 
J'ai installé proftp afin de pouvoir gérer les comptes via mysql.
J'ai ajouté mon compte pour acceder au ftp via proFTPd Administrator. Ca a fonctionné (qd je regarde dans mysql, je vois le compte que je viens de créer)
Mais dans le log, à chaque tentative de connexion, j'ai l'erreur :
 
Sep 30 12:34:27 proftpd[10758]  (vol75-10-82-244-226-119.fbx.proxad.net[:ffff:]): mod_delay/0.5: delaying for 6 usecs
Sep 30 12:34:27 proftpd[10758]  (vol75-10-82-244-226-119.fbx.proxad.net[:ffff:]): no such user 'monlogin'
Sep 30 12:34:27 proftpd[10758]  (vol75-10-82-244-226-119.fbx.proxad.net[:ffff:]): USER monlogin: no such user found from vol75-10-.fb$
Sep 30 12:34:27 proftpd[10758] (vol75-10-82-244-226-119.fbx.proxad.net[:ffff:]): FTP session closed.
S
 
J'en conclus que proftp ne voit pas mes comptes mysql.
 
Si je fais un  proftpd -l, j'ai la liste suivante :
 
  mod_core.c
  mod_xfer.c
  mod_auth_unix.c
  mod_auth_file.c
  mod_auth.c
  mod_ls.c
  mod_log.c
  mod_site.c
  mod_delay.c
  mod_dso.c
  mod_auth_pam.c
  mod_readme.c
  mod_cap.c
  mod_ctrls.c
 
et dans cette liste il n'y a pas les mod_sql .
 
Pourtant, si j'édite modules.conf :  
 
LoadModule mod_ctrls_admin.c
LoadModule mod_tls.c
LoadModule mod_sql.c
#LoadModule mod_ldap.c
LoadModule mod_sql_mysql.c
#LoadModule mod_sql_postgres.c
LoadModule mod_quotatab.c
LoadModule mod_quotatab_file.c
LoadModule mod_quotatab_ldap.c
LoadModule mod_quotatab_sql.c
LoadModule mod_radius.c
LoadModule mod_wrap.c
LoadModule mod_rewrite.c
 
# keep this module the last one
LoadModule mod_ifsession.c
 
Pourquoi les mod sql ne seraient pas chargés??
 
MErci pour votre aide !

Reply

Marsh Posté le 30-09-2008 à 13:18:58   

Reply

Marsh Posté le 21-03-2009 à 18:50:53    

C'est quoi ton proftpd.conf ?

Reply

Marsh Posté le 22-03-2009 à 20:25:46    

Voici le mien, j'ai mis en place la même chose que toi et ça fonctionne.
 

Code :
  1. ##
  2. # CWD Pour changer de répertoire courant
  3. # CDUP Pour remonter d'un niveau de répertoire
  4. # RETR Permet de demander l'envoie d'une copie du fichier passé en argument.
  5. # STOR Permet d'envoyer un fichier à stocker sur le serveur FTP distant.
  6. # RNFR Spécifie l'ancien nom du fichier à renommer. Doit être immédiatement suivit par la commande RNTO.
  7. # RNTO Spécifie le nouveau nom du fichier. Ces deux commandes permettent de renommer un fichier.
  8. # DELE Permet d'effacer un fichier.
  9. # DELE Permet d'effacer un fichier.
  10. # RMD Permet d'effacer un répertoire.
  11. # MKD Permet de créer un répertoire.
  12. # PWD Permet d'obtenir le nom du répertoire courant.
  13. # LIST Permet d'obtenir la liste des fichiers du répertoire en paramètre, ou des détails sur le fichier dont le nom a été passé en paramètre.
  14. # NLST Idem LIST, mais ne retourne pas d'informations sur les fichiers, seulement leur nom.
  15. #
  16. ### Section 1: Global Environment
  17. #
  18. # Nom du serveur FTP.
  19. #
  20. ServerName "FTP Server"
  21. #
  22. # Exécution avec des droits restreinds.
  23. #
  24. User nobody
  25. Group nogroup
  26. #
  27. # On inclut les modules.
  28. #
  29. Include /etc/proftpd/modules.conf
  30. #
  31. # Type du serveur Daemond ou indépendant.
  32. #
  33. ServerType standalone
  34. #
  35. # Désactive l'IPv6.
  36. #
  37. UseIPv6 off
  38. #
  39. # Utile si vous faites des virtualhost, si vous n'utilisez qu'un "server config" sans virtualhost alors ce n'est pas utile de l'indiquer.
  40. # En fait cette directive vérifie qu'elle configuration du serveur sera prise en compte (soit server config ou un des virtual hosts, ou anonyme....)
  41. # Si il n'y aucune configuration de prévue, "l'inconnu" aura le message suivant : "no server available to service your request" et déconnecté.
  42. #
  43. DefaultServer on
  44. <Global>
  45. #
  46. # Limite le user à son home directory, si son home directory est par exemple /home/user, il pourra se ballader dedans,
  47. # mais ne pourra remonter plus haut, il ne pourra pas aller dans /home par exemple et quand il se connecte,
  48. # le user voit comme path dans son client FTP le chemin /
  49. #
  50. DefaultRoot ~
  51. #
  52. # Permet de remplacer d'anciens fichiers par les nouveaux (option inutile si vous interdisez l'écriture).
  53. #
  54. AllowOverwrite on
  55. #
  56. # Nombre de connections.
  57. # Nombre de transferts par utilisateur.
  58. #
  59. MaxClients 10 "Trop de connections veuillez réessayer plus tard merci"
  60. MaxClientsPerHost 10 "Une IP par connection SVP - One IP per connect please"
  61. UseFtpUsers on
  62. #
  63. # Masque info du serveur.
  64. #
  65. ServerIdent Off
  66. # Umask 022 is a good standard umask to prevent new dirs and files from being group and world writable.
  67. Umask 022
  68. #
  69. # On reprend où le transfert a été interrompu aprés une déconnexion.
  70. #
  71. AllowStoreRestart on
  72. AllowRetrieveRestart on
  73. #
  74. # Permet de déconnecter un client au bout de X secondes
  75. # s'il n'y a pas d'activité de son côté.
  76. #
  77. TimeoutIdle 600
  78. #
  79. # Secondes en la saisie du login et du mot de passe.
  80. #
  81. TimeoutLogin 30
  82. #
  83. # Déconnexion après X secondes si aucun transfert.
  84. #
  85. TimeoutNoTransfer 300
  86. #
  87. # Déconnexion après X secondes si il a stoppé le transfert.
  88. #
  89. TimeoutStalled 3600
  90. </Global>
  91. #
  92. # Mode de transfert par defaut.
  93. #
  94. DefaultTransferMode binary
  95. #
  96. # Port par défaut.
  97. #
  98. Port 2121
  99. #
  100. # Nombre maximum de connexions simultanées.
  101. #
  102. MaxInstances 10
  103. #
  104. # Include directive should point to place where FTP Virtual Hosts configurations preserved
  105. #
  106. ScoreboardFile /var/log/scoreboard
  107. #
  108. # Limite en download (du serveur vers le client), après avoir downloader 3 Mo (3145728 Octets),
  109. # on limite la bande passante à 20 Ko/s.
  110. #
  111. TransferRate RETR 20:3145728
  112. #
  113. # Limite en upload (du client vers le serveur), après avoir uploader 10 Mo (10485760 Octets),
  114. # on limite la bande passante a 512 Ko/s.
  115. #
  116. TransferRate APPE,STOR 512:10485760
  117. #
  118. # Active l'authentification PAM.
  119. #
  120. AuthPAM on
  121. AuthPAMConfig proftpd
  122. #
  123. # Connaitre quel client se connecte.
  124. #
  125. IdentLookups off
  126. UseReverseDNS off
  127. #
  128. # Messages.
  129. #
  130. AccessDenyMsg "Connection échouée - Connection refused"
  131. AccessGrantMsg "Connection OK bienvenue - Connection OK welcome"
  132. #
  133. # On autorise à réécrire les fichiers déjà présent.
  134. #
  135. AllowOverwrite on
  136. #
  137. # On nettoie ce qui a pas été fini.
  138. #
  139. DeleteAbortedStores on
  140. #
  141. # Afficher les fichiers cachés.
  142. #
  143. HiddenStor on
  144. #
  145. # Empeche Root de se connecter.
  146. #
  147. RootLogin off
  148. #
  149. # Après trois tentatives de connexions si pas loggé on ban.
  150. #
  151. MaxLoginAttempts 3
  152. #
  153. # Pas de Shell.
  154. #
  155. RequireValidShell off
  156. #
  157. # Ne pas donner d'info sur le serveur.
  158. #
  159. DeferWelcome on
  160. PathDenyFilter "\\.ftp)|\\.ht)[a-z]+$"
  161. #
  162. # Empèche de remonter (../../) hors du chroot.
  163. #
  164. DenyFilter \*.*/
  165. #
  166. # Message de connexion pour les utilisateurs.
  167. #
  168. DisplayLogin welcome.msg
  169. #
  170. # Affiche un petit monitoring lors de la saisie de "ftpstats" dans une shell.
  171. #
  172. TransferLog /var/log/proftpd.xferlog
  173. #
  174. # On n'affiche pas les permissions des fichiers.
  175. #
  176. DirFakeUser on nobody
  177. DirFakeGroup on nobody
  178. ### Section 2 : MySQL
  179. #
  180. # Les mots de passes dans la base sont chiffrés.
  181. #
  182. AuthOrder mod_sql.c
  183. SQLAuthTypes Backend
  184. SQLAuthenticate users* groups
  185. SQLConnectInfo proftpd_admin@localhost login mdp
  186. #
  187. # On donne à ProFTPD le nom des colonnes de la table usertable.
  188. #
  189. SQLUserInfo usertable userid passwd uid gid homedir shell
  190. SQLUserWhereClause "disabled=0 and (NOW()<=expiration or expiration=-1 or expiration=0)"
  191. #
  192. # On donne à ProFTPD le nom des colonnes de la table "grouptable".
  193. #
  194. SQLGroupInfo grouptable groupname gid members
  195. #
  196. # Met à jour les compteurs à chaque connection d'un utilisateur.
  197. #
  198. SQLLog PASS counter
  199. SQLNamedQuery counter UPDATE "lastlogin=now(), count=count+1 WHERE userid='%u'" usertable
  200. #
  201. # Log de déconnexion.
  202. #
  203. SQLLog EXIT time_logout
  204. SQLNamedQuery time_logout UPDATE "lastlogout=now() WHERE userid='%u'" usertable
  205. #
  206. # Affiche le temps du dernier login quand PASS est tapé.
  207. #
  208. SQLNamedQuery login_time SELECT "lastlogin from usertable where userid='%u'"
  209. SQLShowInfo PASS "230" "Last login was: %{login_time}"
  210. #
  211. # Log de transfert.
  212. #
  213. SQLLog RETR,STOR transfer1
  214. SQLNamedQuery  transfer1 INSERT "'%u', '%f', '%b', '%h', '%a', '%m', '%T', now(), 'c', NULL" xfer_stat
  215. SQLLOG ERR_RETR,ERR_STOR transfer2
  216. SQLNamedQuery  transfer2 INSERT "'%u', '%f', '%b', '%h', '%a', '%m', '%T', now(), 'i', NULL" xfer_stat
  217. QuotaLimitTable sql:/get-quota-limit
  218. QuotaTallyTable sql:/get-quota-tally/update-quota-tally/insert-quota-tally
  219. #
  220. # Enregistre les requêtes SQL dans /var/log/proftpd/mysql.log
  221. #
  222. SQLLogFile /var/log/proftpd.mysql
  223. #
  224. # Enregistre les authentifications.
  225. #
  226. LogFormat auth "%v [%P] %h %t \"%r\" %s"
  227. ExtendedLog /var/log/proftpd.auth_log AUTH auth
  228. #
  229. # Enregistre les accès aux fichiers.
  230. #
  231. LogFormat write "%h %l %u %t \"%r\" %s %b"
  232. ExtendedLog /var/log/proftpd.access_log WRITE,READ write
  233. ### Section 3 : SSL
  234. #
  235. # Active le SSL.
  236. #
  237. TLSEngine off
  238. #
  239. # Force l'utilisation du SSL.
  240. #
  241. TLSRequired on
  242. #
  243. # Log du SSL ProFTPd.
  244. #
  245. TLSLog /var/log/proftpd/proftpd.tls_log
  246. #
  247. # Protocole.
  248. #
  249. TLSProtocol SSLv23
  250. #
  251. #
  252. #
  253. TLSOptions NoCertRequest
  254. #
  255. # Certificats et clefs.
  256. #
  257. TLSRSACertificateFile /etc/apache-ssl/certs/apache.pem
  258. #TLSRSACertificateKeyFile /etc/apache-ssl/certs/proftpd.key.pem
  259. #
  260. # Vérifie le certificat SSL proposé par le client.
  261. #
  262. TLSVerifyClient off
  263. ### Section 4 : Virtual Host
  264. #
  265. <VirtualHost 10.1.1.100>
  266. ServerName "toto.domaine.tld"
  267. Port 21
  268. PassivePorts 5000 5100
  269. MasqueradeAddress toto.domaine.tld
  270. MaxClients 10
  271. #
  272. # Limite le nombre de tentatives de login.
  273. #
  274. MaxLoginAttempts 1
  275. #
  276. # Permet de chrooter les autres personnes que Seb.
  277. #
  278. DefaultRoot ~ !seb
  279. <Directory />
  280.   #
  281.   # Accepte uniquement le login de Seb et lui donne tout les droits.
  282.   #
  283.   <Limit LOGIN ALL>
  284.  Order Allow,Deny
  285.  AllowUser seb
  286.  Deny from all
  287.   </Limit>
  288.       <Limit ALL>
  289.         DenyAll
  290.       </Limit>
  291. </Directory>
  292. <Directory /home/ftp/seb/private>
  293.   #
  294.   # Accepte uniquement le login de Seb et lui donne tout les droits.
  295.   #
  296.   <Limit LOGIN ALL>
  297.  Order Allow,Deny
  298.  AllowUser seb
  299.  Deny from all
  300.   </Limit>
  301.     </Directory>
  302. <Anonymous /home/ftp/seb/public>
  303.   User anonymous_ftp
  304.   Group nogroup
  305.   UserAlias anonymous anonymous_ftp
  306.   RequireValidShell off
  307.   TLSRequired off
  308.   <Limit LOGIN>
  309.  AllowAll
  310.   </Limit>
  311.   <Directory /home/ftp/seb/public>
  312.  #
  313.  # Cache les fichiers de Root.
  314.  #
  315.  HideUser root
  316.  HideGroup root
  317.  <Limit CWD LIST MDTM READ RETR PWD>
  318.   AllowAll
  319.  </Limit>
  320.  <Limit ALL>
  321.   Order Allow,Deny
  322.   AllowUser seb
  323.   Deny from all
  324.  </Limit>
  325.   </Directory>
  326. </Anonymous>
  327. </VirtualHost>

Reply

Marsh Posté le 21-04-2009 à 14:31:27    

Quelqu'un sait comment on fait pour gérer les comptes anonyme quand on utilise une authentification sql ? Parce que le compte anonyme n'est pas le même selon l'OS ou la navigateur...

Reply

Marsh Posté le 28-08-2009 à 12:19:51    

Salut.
Moi aussi j'ai des soucis avec proftpd admin et mysql
Pour ce qui est de ton proftpd -l voici le mien :

Code :
  1. # proftpd -l
  2. Compiled-in modules:
  3.   mod_core.c
  4.   mod_xfer.c
  5.   mod_auth_unix.c
  6.   mod_auth_file.c
  7.   mod_auth.c
  8.   mod_ls.c
  9.   mod_log.c
  10.   mod_site.c
  11.   mod_delay.c
  12.   mod_dso.c
  13.   mod_auth_pam.c
  14.   mod_readme.c
  15.   mod_cap.c
  16.   mod_ctrls.c


Tu remarquera que le module SQL et Mysql n'y sont pas non plus.
je pense simplement que cette liste est la liste des modules qui ont été compilés avec proftpd, et non pas la liste des modules chargés.
Quoi qu'il en soit, si proftpd ne te renvoie pas d'erreur sur les instructions SQL de son fichier de conf, c'est qu'il a pu les interpréter, et donc qu'il a bel et bien chargé le module au redémarrage.
 
Si tu as un déni d'accès au login, ça n'est pas nécessairement dû au fait que PROFTPD ne trouve pas le bon couple user/password, ça peut être dû à tout plein d'autres chose, genre un shell pas valide (ce qui n'est pas ton cas vu que tu est en RequireValidShell off) ou alors un répertoire de connexion utilisateur qui n'existe pas, et c'était mon cas. (vérifie dans /ftp/ ou le répertoire que tu a config par défaut)
 
Dans la version 1.x de Proftpd admin, tu trouvera dans le /var/www/proftpdadmin/misc/user_script/create_user.sh les commandes qui sont balancées au shell lors de la création d'utilisateur. là tu verra qu'il n'y a pas de create dir...un exemple est donné dans le create_user_example.sh.
 
Problème, comme c'est Apache (ou ton serveur web) qui va lancer le script, il n'aura probablement pas les droits de mkdir et de chown.
Pour le MKDIR, on peut simplement faire un chown 777 sur le répertoire du ftp (par défaut /ftp/).
Sauf que là, ben on l'as dans le c*l parce qu'on a toujours le soucis que l'utilisateur ne pourra pas modifier son répertoire...Mais au moins il peut se connecter.
 
Voilà, je suis bloqué là et a moins de faire tourner Apache en root je vois pas comment faire.........(et j'ai pas vraiment envie de mettre apache en root quoi......)

Reply

Marsh Posté le 28-08-2009 à 13:06:14    

Bon, j'avance à tâtons...
Pour plus de sécu, j'ai fait un petit chgrp www-data /ftp et un chmod 775 /ftp, ça évite que tout le monde ait accès au dossier.
Ensuite, j'ai tenté de faire un chmod 4755 /bin/chown, du coup le script arrive bien à créer le répertoire et à modifier les droits utilisateurs.
 
Par contre, l'utilisateur n'as toujours pas les droits d'écrire dans son dossier :s


Message édité par Sn4kY le 31-08-2009 à 12:29:27
Reply

Marsh Posté le 28-08-2009 à 16:19:18    

Voilà, j'ai résolu tous mes problèmes.

 

Pour ce qui est de la création du répertoire de l'utilisateur, je me suis penché sur ProFTPd et j'ai trouvé ceci à rajouter dans la conf :
SQLHomedirOnDemand              on
Spécifique pour SQL, ou plus globalement (semble fonctionner même sans SQL) :
CreateHome on

 

Le répertoire sera créé a la première connexion de l'utilisateurs avec les bon droits.

 

Par la suite, il m'a fallu un peu de temps pour comprendre pourquoi mes utilisateurs n'avaient pas les droits WRITE, en fouinant mon proftpd je me suis apperçu qu'il y avait des saloperies dedans, il était configuré pour que personne sauf les admins puissent uploader et que les autres ne pouvaient que downloader. comme cette conf n'était pas dans ce que je souhaitais, j'ai commenté toute cette partie.

 

Le dernier problème qui restait était que Proftpd Admin devait pouvoir supprimer l'arborescence complète de l'utilisateur que l'on souhaitait supprimer, je m'en suis sorti avec un petit sudo, dans /etc/sudoers :
www-data ALL=NOPASSWD: /bin/rm

 

ainsi que dans /var/www/misc/user_script/delete_user.sh en ajoutant sudo /bin/rm -vfr /ftp/$USER dans le script.

 

A présent, tout semble bien se dérouler, même si je n'aime pas vraiment qu'on donne le droit à www-data de supprimer tout ce dont il aurait envie...

 



Message édité par Sn4kY le 28-08-2009 à 16:21:21
Reply

Marsh Posté le 03-12-2009 à 12:09:50    

Tient, une qpetite question sur ce topic sympa.
 
Je n'arrive pas à utiliser la commande CHMOD avec ProFTP. J'ai pourtant placé :
 
<Limit SITE_CHMOD>
AllowAll
</Limit>
 
Dans <global> et même plus spécifiquement dans un <directory> mais la commande refuse de se faire depuis un client. Petit détail j'utilise MySQL pour l'authentification des utilisateurs. Ça a peu être une incidence.
 
Vous avez des idées ?

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed