Titel: Proftpd 1.2.10 mit mod_sql Beitrag von: mad_moses am 08. Juli 2006, 12:24:07 Hi,
seit einigen Tagen probier ich es nun mit mod_sql, leider komm ich garnicht voran, als Authentifizierungs Methode benutzt ProFTPD immer PAM und MySQL, ich möchte aber das er nur die Benutzer aus meiner MySQL Datenbank benutzt. Desweiteren Funkioniert das auslesen anscheinend nicht, hab schon alles probiert, hab ich irgend was vergessen? Meine Config: ServerName "SERVERNAME" ServerType standalone ServerAdmin admin@proftpd.de ServerIdent on "ftp.xyz.de" DeferWelcome on DefaultServer on Port 21 Umask 022 RequireValidShell off ExtendedLog /var/log/proftpd.paranoid_log ALL default SQLAuthTypes Plaintext SQLAuthenticate users* SQLConnectInfo ftpdb@localhost proftpd MEINPW SQLDefaultGID 65534 SQLDefaultUID 65534 SQLMinUserGID 100 SQLMinUserUID 500 SQLUserInfo users userid passwd uid gid homedir shell Das SQL querry was in der Log datei drinn steht funktioniert und listet auch alles richtig auf wenn ich es in PHPMYADMIN teste. (SELECT userid, passwd, uid, gid, homedir, shell FROM users WHERE (userid='madmoses') LIMIT 1) Nur kann ich mich mit dem user madmoses und meinen passwort was als plaintext in der Datenbank steht nicht anmelden? Titel: Re: Proftpd 1.2.10 mit mod_sql Beitrag von: VolGas am 08. Juli 2006, 15:56:44 Hi,
Deine proftpd.conf ist ja sehr "übersichtlich"... ;) Füge in Deine profptd.conf noch ein: "AuthOrder mod_sql.c" - das sorgt dafür, daß alle anderen Auth-Module (außer SQL natürlich) nicht weiter verwendet werden. Was mir noch aufgefallen ist: wenn Du unterschiedliche UID und/oder GID benutzen möchtest, dann verbietet sich analog dazu die Benutzung von "SQLDefaultUID" / "SQLDefaultGID". Dann kannst Du bei "SQLUserInfo" die entsprechenden Werte auch auf "NULL" setzen. Das/die Datenfeld(er) in der SQL-Tabelle wird/werden dann nicht weiter berücksichtigt und kann/können damit auch gelöscht werden. Das setzen von "RequireValidShell off" ist sehr gut, bei "SQLUserInfo" kannst Du noch "shell" durch "NULL" ersetzen und brauchst damit in Deiner SQL-Tabelle auch dieses Feld nicht mehr. Ich hoffe, ich konnte Dir damit weiterhelfen... mfg. VolGas Titel: Re: Proftpd 1.2.10 mit mod_sql Beitrag von: mad_moses am 08. Juli 2006, 16:51:04 Hi VolGas,
erstmal DANKE! für deine Antwort, der Tip mit dem AuthOrder mod_sql.c funktioniert denk ich mal soweit, weil über PAM kann ich nicht mehr connecten, aber das problem mit der SQL Datenbank hab ich immernoch, den user und das passwort hab ich eingetragen aber es will einfach nicht, ich will erstmal eine minimale konfiguration die nur den user und das pw prüft in der SQL Datenbank um Fehlerquellen zu verkleinern, hab jetzt meine config so angepasst. Zitat ServerName "SERVERNAME" ServerType standalone ServerAdmin admin@proftpd.de ServerIdent on "ftp.xyz.de" DeferWelcome on DefaultServer on Port 21 Umask 022 RequireValidShell off AuthOrder mod_sql.c SQLAuthTypes Plaintext #SQLAuthenticate users* SQLConnectInfo ftpdb@localhost proftpd s900s900 SQLUserInfo users userid passwd NULL NULL NULL NULL SQLUserInfo users userid passwd NULL NULL NULL NULL Ist diese zeile so gültig? und brauch ich den eintrag SQLGroupInfo dringend? ich möchte nähmlich keine gruppen. Vieleicht liegt das Problem ja an der SQL Tabelle, hier der auszug: -- phpMyAdmin SQL Dump -- version 2.6.2-Debian-3sarge1 -- http://www.phpmyadmin.net -- -- Host: localhost -- Erstellungszeit: 08. Juli 2006 um 16:45 -- Server Version: 4.0.24 -- PHP-Version: 4.3.10-16 -- -- Datenbank: `ftpdb` -- -- -------------------------------------------------------- -- -- Tabellenstruktur für Tabelle `users` -- CREATE TABLE `users` ( `userid` varchar(30) NOT NULL default '', `passwd` varchar(80) NOT NULL default '', `uid` int(11) default NULL, `gid` int(11) default NULL, `homedir` varchar(255) default NULL, `shell` varchar(255) default NULL, UNIQUE KEY `uid` (`uid`) ) TYPE=MyISAM; -- -- Daten für Tabelle `users` -- INSERT INTO `users` VALUES ('philipp', 'test', NULL, NULL, '/var/www/', NULL); Hier noch die SQL log Zitat Jul 08 17:28:25 mod_sql/4.11[28211]: backend module 'mod_sql_mysql/4.04' Jul 08 17:28:25 mod_sql/4.11[28211]: backend api 'mod_sql_api_v1' Jul 08 17:28:25 mod_sql/4.11[28211]: >>> sql_getconf Jul 08 17:28:25 mod_sql/4.11[28211]: warning: no homedir field and no default specified. User authentication is OFF Jul 08 17:28:25 mod_sql/4.11[28211]: entering mysql cmd_defineconnection Jul 08 17:28:25 mod_sql/4.11[28211]: name: 'default' Jul 08 17:28:25 mod_sql/4.11[28211]: user: 'proftpd' Jul 08 17:28:25 mod_sql/4.11[28211]: host: 'localhost' Jul 08 17:28:25 mod_sql/4.11[28211]: db: 'ftpdb' Jul 08 17:28:25 mod_sql/4.11[28211]: port: '3306' Jul 08 17:28:25 mod_sql/4.11[28211]: ttl: '0' Jul 08 17:28:25 mod_sql/4.11[28211]: exiting mysql cmd_defineconnection Jul 08 17:28:25 mod_sql/4.11[28211]: entering mysql cmd_open Jul 08 17:28:25 mod_sql/4.11[28211]: connection 'default' opened Jul 08 17:28:25 mod_sql/4.11[28211]: connection 'default' count is now 1 Jul 08 17:28:25 mod_sql/4.11[28211]: exiting mysql cmd_open Jul 08 17:28:25 mod_sql/4.11[28211]: backend successfully connected. Jul 08 17:28:25 mod_sql/4.11[28211]: mod_sql status : on Jul 08 17:28:25 mod_sql/4.11[28211]: negative_cache : off Jul 08 17:28:25 mod_sql/4.11[28211]: authenticate : groups userset groupset Jul 08 17:28:25 mod_sql/4.11[28211]: group table : groups Jul 08 17:28:25 mod_sql/4.11[28211]: groupname field : groupname Jul 08 17:28:25 mod_sql/4.11[28211]: grp gid field : gid Jul 08 17:28:25 mod_sql/4.11[28211]: grp members field : members Jul 08 17:28:25 mod_sql/4.11[28211]: SQLDefaultUID : 65533 Jul 08 17:28:25 mod_sql/4.11[28211]: SQLDefaultGID : 65533 Jul 08 17:28:25 mod_sql/4.11[28211]: <<< sql_getconf Jul 08 17:28:28 mod_sql/4.11[28211]: >>> cmd_endpwent Jul 08 17:28:28 mod_sql/4.11[28211]: <<< cmd_endpwent Jul 08 17:28:28 mod_sql/4.11[28211]: >>> cmd_endgrent Jul 08 17:28:28 mod_sql/4.11[28211]: <<< cmd_endgrent Jul 08 17:28:28 mod_sql/4.11[28211]: >>> cmd_getgroups Jul 08 17:28:28 mod_sql/4.11[28211]: <<< cmd_getgroups Jul 08 17:28:29 mod_sql/4.11[28211]: >>> cmd_endpwent Jul 08 17:28:29 mod_sql/4.11[28211]: <<< cmd_endpwent Jul 08 17:28:29 mod_sql/4.11[28211]: >>> cmd_endgrent Jul 08 17:28:29 mod_sql/4.11[28211]: <<< cmd_endgrent Jul 08 17:28:29 mod_sql/4.11[28211]: >>> cmd_getgroups Jul 08 17:28:29 mod_sql/4.11[28211]: <<< cmd_getgroups Titel: Re: Proftpd 1.2.10 mit mod_sql Beitrag von: VolGas am 08. Juli 2006, 17:54:08 Hi,
was ich bei meiner ersten Antwort übersehen habe, aber unbedingt vorhanden sein muß: "DefaultRoot ~" Nur damit wird der User in sein Verzeichnis "gebeamt" und dort eingesperrt (chroot). Generell zum Verständnis: der ProFTPD wird nach dem Einloggen quasi zur Shell des einloggende Users mit genau den selben Rechten und Beschränkungen wie dieser. Sollte das nicht funktionieren (falsches Verzeichnis oder keine Berechtigung) schlägt der Login fehl. Daher kann eine "minimale Konfiguration" nur mit Username und PW so niemals funktionieren. Nun weiter zu Deinem Posting:
Wenn Du das beachtest hast, sollte es jetzt aber funktionieren. mfg. VolGas Titel: Re: Proftpd 1.2.10 mit mod_sql Beitrag von: mad_moses am 08. Juli 2006, 18:29:14 DANKE DANKE DANKE, jetzt gehts auch
Zitat ServerName "SERVERNAME" ServerType standalone ServerAdmin admin@proftpd.de ServerIdent on "ftp.xyz.de" DeferWelcome on DefaultServer on DefaultRoot ~ Port 21 Umask 022 RequireValidShell off AuthOrder mod_sql.c SQLAuthTypes Plaintext SQLAuthenticate users* SQLConnectInfo ftpdb@localhost proftpd s900s900 SQLUserInfo users userid passwd NULL NULL homedir NULL SQLMinUserGID 100 SQLMinUserUID 100 SQLLOGFILE /var/log/proftpd.sql.log Was ich aber nicht verstehe wozu brauch ich eine UID? und eine GID? was bewirkt das, die UID hat doch nicht mit den systembenutzern zu tun oder? Titel: Re: Proftpd 1.2.10 mit mod_sql Beitrag von: VolGas am 08. Juli 2006, 19:03:25 Prima, daß das nun klappt.
Aber die UID/GID für alle FTP-User gleich zu setzen ist ein echtes Sicherheitsproblem. Zudem ist UID/GID 100 zu klein und damit in den für das System reservierten Bereichen. Ich würde empfehlen, für jeden User eine eigene UID zu verwenden und für alle eine gemeinsame Gruppe (am besten die des Webservers). Die UID ist die User-ID und GID die Group-ID für das Filesystem. Diese ID's haben tatsächlich etwas mit der User- und Rechteverwaltung zu tun, aber das Filesystem benötigt keine User-Einträge im System um Zugriffsrechte zu realisieren und zu nutzen. Das ganze Thema gehört zum absolut untersten Unix-Grundwissen! Ich kann Dir daher nur allerwärmstens und dringend z.B. das Standardwerk, den "Kofler" (http://www.amazon.de/exec/obidos/ASIN/3827321581/ref=ase_deutscheinlon-21/302-4395941-9435229), zum Lesen ans Herz legen! mfg. VolGas Titel: Re: Proftpd 1.2.10 mit mod_sql Beitrag von: mad_moses am 08. Juli 2006, 19:29:52 Das mit den UID/GID versteh ich, aber weiter oben hast du geschrieben das es nicht mit dem Filesystem zu tun hat, also ambesten nehm ich einfach die gruppe nobody und als uid einfach einen breich zwischen 10000-10100 oder sowas oder?
Titel: Re: Proftpd 1.2.10 mit mod_sql Beitrag von: VolGas am 08. Juli 2006, 21:24:07 Zitat aber weiter oben hast du geschrieben das es nicht mit dem Filesystem zu tun hat Habe ich - wo ??? Wenn die hochgeladenen Files mit dem Apache dargestellt werden sollen, dann sollte die GID für die FTP-User die selbe sein, wie für den Apache-User. (entsprechend ist "Umask" zu setzen!) Für die UID's kannst Du alles ab 1000 setzen. So könnte z.B. die SQL-Konfiguration in Deiner proftpd.conf aussehen: AuthOrder mod_sql.cWas Du noch zur Beschleunigung des Logins tun könntest: "UseReverseDNS off" und "IdentLookups off" Sodele, viel Spaß noch - ich mache nun Feierabend! mfg. VolGas Titel: Re: Proftpd 1.2.10 mit mod_sql Beitrag von: mad_moses am 10. Juli 2006, 14:02:55 Noch eine letze frage hab ich, also mein apache läuft under der GID 33, also muss ich bei umask 033 eingeben
SQLDefaultGID 65534 <= muss ich hier denn auch nicht dann 033 angeben? Titel: Re: Proftpd 1.2.10 mit mod_sql Beitrag von: VolGas am 10. Juli 2006, 14:37:48 Au weia - Du meine Güte!
Nein, natürlich nicht! Die "umask" weist keine Gruppe zu, sondern ist eine Maske für Default Datei- und Verzeichnisrechte! Normalerweise lauft der Apache nicht mit so einer kleinen Gruppen-ID, sondern z.B. unter der Gruppe "nobody" (= 65534 = Standard). Das solltest Du vielleicht noch ändern. Aber es stimmt - wenn die Gruppe für den Apache die ID 33 hat (und behält), dann müßtest Du "SQLDefaultGID 33" setzen. Wie umask funktioniert, werde ich hier nicht beschreiben. (das wäre wie das Rad neu erfunden und auch hier nicht angebracht - Du solltest wirklich unbedingt das Linux-Buch vom Kofler lesen!) Aber eine -meiner Meinung nach- sinnvolle Einstellung für FTP-User mit "Apache-Anschluß" gebe ich Dir noch gerne mit: "umask 117 007" Nochmal: lies das Linux-Buch von Kofler oder suche Dir zumindest im Internet ein paar gute Quellen für das notwendige Grundwissen. (z.B. http://www.faqs.org/docs/lnag/lnag_basics.html) mfg. VolGas |