Titel: Mod_Sql Beitrag von: AlphaWolf am 28. Mai 2006, 00:21:54 Hallo,
ich möchte gerne meine User über eine mysql Datenbank verwalten. Ich habe die proftpd mit --with-modules=mod_sql:mod_sql_mysql kompiliert und eingerichtet. Konfiguriert habe ich das ganze dann folgendermaßen: #MYSQL User SQLAuthTypes Plaintext SQLAuthenticate users* SQLConnectInfo proftpd@localhost ftp ************ SQLDefaultGID 65534 SQLDefaultUID 65534 SQLMinUserGID 100 SQLMinUserUID 500 SQLUserInfo ftp username password uid gid homedir shell SQLLOGFILE /var/log/proftpd.sql.log Ich benutze dies Datenbank Layout: http://www.proftpd.de/files/proftpd_sql.sql Jedoch kann man sich trotz SQLAuthenticate users* weiterhin mit normalen System Konten einloggen und über User die ich in die DB mal manuell eingetragen habe kann ich mich auch nicht einloggen. Er sagt einfach Passwort falsch. Was mich dann doch ein Stück weiter bringt ist das SQL Logfile vom proftpd: May 27 23:04:45 mod_sql/4.2.1[10692]: defaulting to 'postgres' backend May 27 23:04:45 mod_sql/4.2.1[10692]: backend module 'mod_sql_postgres/4.02' May 27 23:04:45 mod_sql/4.2.1[10692]: backend api 'mod_sql_api_v2' May 27 23:04:45 mod_sql/4.2.1[10692]: >>> sql_sess_init May 27 23:04:45 mod_sql/4.2.1[10692]: entering postgres cmd_defineconnection May 27 23:04:45 mod_sql/4.2.1[10692]: name: 'default' May 27 23:04:45 mod_sql/4.2.1[10692]: user: 'ftp' May 27 23:04:45 mod_sql/4.2.1[10692]: host: 'localhost' May 27 23:04:45 mod_sql/4.2.1[10692]: db: 'proftpd' May 27 23:04:45 mod_sql/4.2.1[10692]: port: '5432' May 27 23:04:45 mod_sql/4.2.1[10692]: ttl: '0' May 27 23:04:45 mod_sql/4.2.1[10692]: exiting postgres cmd_defineconnection May 27 23:04:45 mod_sql/4.2.1[10692]: entering postgres cmd_open May 27 23:04:45 mod_sql/4.2.1[10692]: exiting postgres cmd_open May 27 23:04:45 mod_sql/4.2.1[10692]: unrecoverable backend error May 27 23:04:45 mod_sql/4.2.1[10692]: error: 'mod_sql_postgres/4.02' May 27 23:04:45 mod_sql/4.2.1[10692]: message: 'could not connect to server: Connection refused Is the server running on host "localhost" and accepting TCP/IP connections on port 5432? Scheinbar nutzt er gar nicht das mysql Modul was extra mit einkompiliert wurde. Hat jemand eine Idee, was ich machen kann? Titel: Re: Mod_Sql Beitrag von: VolGas am 28. Mai 2006, 02:41:23 Hallo!
Man kann dem ProFTPD angeben, in welcher Reihenfolge die Authentifikationsmodule durchlaufen werden sollen. Mit "AuthOrder mod_sql.c" wird dies ausschließlich auf SQL gelegt - das ist das, was Du gesucht hast. Sehr merkwürdig ist aber, daß in Deinem Logfile auf einmal der PostgreSQL-Server steht!?! Ist der überhaupt auf Deinem System installiert? Starte einmal den ProFTPD mit dem Parameter "-l" - das gibt die eincompilierten Module aus. mfg. VolGas Titel: Re: Mod_Sql Beitrag von: AlphaWolf am 28. Mai 2006, 09:43:27 Compiled-in modules:
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_sql.c mod_sql_mysql.c mod_cap.c Und nein ich habe gar keinen Postgree Server installiert *G* Ich habe den Server zunächst mit Apt Installiert, damit ich die Start Stop scripte nicht selber einrichten muss. Dann habe ich den Daemon mit dem aus den sourcen kompilierten ersetzt. Jedoch hat Debian noch eine modules.conf angelegt. Scheinbar kann der Server auch nicht einkompilierte dynamische Bibbliotheken laden, was aber irgendwie nicht geklappt hat: # # This file is used to manage DSO modules and features. # # This is the directory where DSO modules resides ModulePath /usr/lib/proftpd # Allow only user root to load and unload modules, but allow everyone # to see which modules have been loaded ModuleControlsACLs insmod,rmmod allow user root ModuleControlsACLs lsmod allow user * #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 Ich hab die Stelle aber auskommentiert wo die Datei eingebunden wird. Auch mit AuthOrder mod_sql.c kann ich mich immer noch mit SystemKonten einloggen. Da läuft scheinbar irgendwas falsch. Titel: Re: Mod_Sql Beitrag von: VolGas am 28. Mai 2006, 10:58:34 Sehr merkwürdig, das Ganze.
AuthOrder ist doch genau dazu da, um die Reihenfolge der Auth-Module zu definieren. Was Du da gebastelt hast, ist übrigens nicht ganz ungefährlich: wenn der Maintainer des Debianpaketes ein Update auf die Menschheit "losläßt", wird Deine Konfigoration überschrieben. Du kannst aber mit "apt-get remove" den ProFTPD deinstallieren, ohne daß die Startscripte (und alles was dazugehört) gelöscht werden. Dazu fehlt noch der Parameter "--purge". Oder Du installierst einfach nur das Paket "proftpd-common"... Ich habe unseren ProFTPD übrigens so compiliert: ./configure -q \Damit fehlen dem ProFTPD die entsprechenden Module, die er überhaupt benutzen könnte, um Systemuser zuzulassen und zusätzlich werden noch ein paar Dinge (für unsere Zwecke) optimiert. mfg. VolGas Titel: Re: Mod_Sql Beitrag von: AlphaWolf am 28. Mai 2006, 14:55:54 So ich habe das ganze mal neu aufgestzt etc. und nun bin ich schon einen Schritt weiter. Ich weiß nur nicht, warum der Server mir trotzdem den Zugriff verwehrt (falsches Passwort):
May 28 14:35:24 mod_sql/4.2.1[30243]: defaulting to 'mysql' backend May 28 14:35:24 mod_sql/4.2.1[30243]: backend module 'mod_sql_mysql/4.05' May 28 14:35:24 mod_sql/4.2.1[30243]: backend api 'mod_sql_api_v2' May 28 14:35:24 mod_sql/4.2.1[30243]: >>> sql_sess_init May 28 14:35:24 mod_sql/4.2.1[30243]: entering mysql cmd_defineconnection May 28 14:35:24 mod_sql/4.2.1[30243]: name: 'default' May 28 14:35:24 mod_sql/4.2.1[30243]: user: 'ftp' May 28 14:35:24 mod_sql/4.2.1[30243]: host: 'localhost' May 28 14:35:24 mod_sql/4.2.1[30243]: db: 'proftpd' May 28 14:35:24 mod_sql/4.2.1[30243]: port: '3306' May 28 14:35:24 mod_sql/4.2.1[30243]: ttl: '0' May 28 14:35:24 mod_sql/4.2.1[30243]: exiting mysql cmd_defineconnection May 28 14:35:24 mod_sql/4.2.1[30243]: entering mysql cmd_open May 28 14:35:24 mod_sql/4.2.1[30243]: connection 'default' opened May 28 14:35:24 mod_sql/4.2.1[30243]: connection 'default' count is now 1 May 28 14:35:24 mod_sql/4.2.1[30243]: exiting mysql cmd_open May 28 14:35:24 mod_sql/4.2.1[30243]: backend successfully connected. May 28 14:35:24 mod_sql/4.2.1[30243]: mod_sql engine : on May 28 14:35:24 mod_sql/4.2.1[30243]: negative_cache : off May 28 14:35:24 mod_sql/4.2.1[30243]: authenticate : users May 28 14:35:24 mod_sql/4.2.1[30243]: usertable : ftp May 28 14:35:24 mod_sql/4.2.1[30243]: userid field : username May 28 14:35:24 mod_sql/4.2.1[30243]: password field : password May 28 14:35:24 mod_sql/4.2.1[30243]: uid field : NULL May 28 14:35:24 mod_sql/4.2.1[30243]: gid field : NULL May 28 14:35:24 mod_sql/4.2.1[30243]: homedir field : homedir May 28 14:35:24 mod_sql/4.2.1[30243]: shell field : NULL May 28 14:35:24 mod_sql/4.2.1[30243]: homedirondemand : false May 28 14:35:24 mod_sql/4.2.1[30243]: SQLMinUserUID : 500 May 28 14:35:24 mod_sql/4.2.1[30243]: SQLMinUserGID : 100 May 28 14:35:24 mod_sql/4.2.1[30243]: <<< sql_sess_init May 28 14:35:24 mod_sql/4.2.1[30243]: >>> sql_pre_pass May 28 14:35:24 mod_sql/4.2.1[30243]: <<< sql_pre_pass May 28 14:35:24 mod_sql/4.2.1[30243]: >>> cmd_getpwnam May 28 14:35:24 mod_sql/4.2.1[30243]: entering mysql cmd_escapestring May 28 14:35:24 mod_sql/4.2.1[30243]: exiting mysql cmd_escapestring May 28 14:35:24 mod_sql/4.2.1[30243]: cache miss for user 'alex' May 28 14:35:24 mod_sql/4.2.1[30243]: : entering mysql cmd_select May 28 14:35:24 mod_sql/4.2.1[30243]: entering mysql cmd_open May 28 14:35:24 mod_sql/4.2.1[30243]: connection 'default' count is now 2 May 28 14:35:24 mod_sql/4.2.1[30243]: exiting mysql cmd_open May 28 14:35:24 mod_sql/4.2.1[30243]: query "SELECT username, password, homedir FROM ftp WHERE (username='alex') LIMIT 1" May 28 14:35:24 mod_sql/4.2.1[30243]: entering mysql cmd_close May 28 14:35:24 mod_sql/4.2.1[30243]: connection 'default' count is now 1 May 28 14:35:24 mod_sql/4.2.1[30243]: exiting mysql cmd_close May 28 14:35:24 mod_sql/4.2.1[30243]: exiting mysql cmd_select May 28 14:35:24 mod_sql/4.2.1[30243]: cache miss for user 'alex' May 28 14:35:24 mod_sql/4.2.1[30243]: user 'alex' cached May 28 14:35:24 mod_sql/4.2.1[30243]: + pwd.pw_name : alex May 28 14:35:24 mod_sql/4.2.1[30243]: + pwd.pw_uid : 65534 May 28 14:35:24 mod_sql/4.2.1[30243]: + pwd.pw_gid : 65534 May 28 14:35:24 mod_sql/4.2.1[30243]: + pwd.pw_dir : /var/www May 28 14:35:24 mod_sql/4.2.1[30243]: + pwd.pw_shell : May 28 14:35:24 mod_sql/4.2.1[30243]: <<< cmd_getpwnam May 28 14:35:24 mod_sql/4.2.1[30243]: >>> cmd_auth May 28 14:35:24 mod_sql/4.2.1[30243]: entering mysql cmd_escapestring May 28 14:35:24 mod_sql/4.2.1[30243]: exiting mysql cmd_escapestring May 28 14:35:24 mod_sql/4.2.1[30243]: cache hit for user 'alex' May 28 14:35:24 mod_sql/4.2.1[30243]: >>> cmd_check May 28 14:35:24 mod_sql/4.2.1[30243]: checking auth_type Plaintext May 28 14:35:24 mod_sql/4.2.1[30243]: 'Plaintext' auth handler reports success May 28 14:35:24 mod_sql/4.2.1[30243]: cache hit for user 'alex' May 28 14:35:24 mod_sql/4.2.1[30243]: <<< cmd_check May 28 14:35:24 mod_sql/4.2.1[30243]: <<< cmd_auth May 28 14:35:33 mod_sql/4.2.1[30243]: entering mysql cmd_exit May 28 14:35:33 mod_sql/4.2.1[30243]: entering mysql cmd_close May 28 14:35:33 mod_sql/4.2.1[30243]: connection 'default' closed May 28 14:35:33 mod_sql/4.2.1[30243]: connection 'default' count is now 0 May 28 14:35:33 mod_sql/4.2.1[30243]: exiting mysql cmd_close May 28 14:35:33 mod_sql/4.2.1[30243]: exiting mysql cmd_exit Passwort habe ich natürlich mehrmals überprüft. Die Felder, die ich auf NULL gesetzt habe, habe ich auch aus der Datenbank entfernt. Ich vermute, dass es etwas mit der UID zu tun hat, dass die eventuell auf einen nicht vorhandenen User zeigt. Wie heißt noch gleich die User-Datei um die UIds nachzugucken? ^^ Titel: Re: Mod_Sql Beitrag von: VolGas am 28. Mai 2006, 21:36:35 Die Datei heißt "passwd", aber so geht das nicht.
Wenn Du uid/gid bei "SQLUserInfo" auf NULL setzt, dann solltest Du dies zumindest mit SQLDefaultUID/SQLDefaultGID definieren. Die proftpd.conf hast Du hier noch nicht gepostet, aber als Minimum sollte auf jeden Fall hinein (Beispiel): User nobody Group nogroup DefaultRoot ~ RequireValidShell off Empfehlenswert (für Tempo): UseReverseDNS off IdentLookups off SQLNegativeCache on mfg. VolGas Titel: Re: Mod_Sql Beitrag von: AlphaWolf am 28. Mai 2006, 22:47:10 Ok ich hab das mit der ValidShell vergessen daran lag es (Der user in der DB hat natürlich keine Shell sonst würde ich es ja nicht benutzen :P). Ich dachte das wäre schon drin danke endlich läuft es :).
Es gibt ja diese Tabelle Xfer Stats. Gibt es dafür ein PHP Script oder sowas um das übersichtlich darzustellen oder muss man sich da selber was basteln? Titel: Re: Mod_Sql Beitrag von: VolGas am 29. Mai 2006, 03:22:44 Ehrlich gesagt: keine Ahnung.
Ich finde die Idee sowieso schlecht, (my)SQL mit der Erfassung von Statistiken oder Logs zu belasten. Jede FTP-Session bedingt dann gleichzeitig eine SQL-Sesson - das ist ein unnötiger Resourcenfresser. Zumal sind Log-Einträge fortlaufende Daten, also hervorragend geeignet, um in Dateien weggeschrieben zu werden. Programme zur Logfile-Analyse lesen ihre Daten i.d.R. ja auch aus Logfiles, so z.B. "awstats", das auch Statistiken aus FTP-Logs erstellen kann. mfg. VolGas |