www.ProFTPD.de
13. März 2007, 22:04:43 *
Willkommen Gast. Bitte einloggen oder registrieren.
Haben Sie Ihre Aktivierungs E-Mail übersehen?

Einloggen mit Benutzername, Passwort und Sitzungslänge
News: SMF - Neu installiert!
 
   Übersicht   Hilfe Suche Login Registrieren  
Seiten: [1]   Nach unten
  Drucken  
Autor Thema: Proftpd 1.2.10 mit mod_sql  (Gelesen 348 mal)
0 Mitglieder und 1 Gast betrachten dieses Thema.
mad_moses
ProFTPD
*
Offline Offline

Beiträge: 5


Profil anzeigen
« 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?

« Letzte Änderung: 08. Juli 2006, 17:37:14 von mad_moses » Gespeichert
VolGas
Moderator
ProFTPD
*****
Offline Offline

Beiträge: 771



Profil anzeigen
« Antwort #1 am: 08. Juli 2006, 15:56:44 »

Hi,

Deine proftpd.conf ist ja sehr "übersichtlich"... Zwinkernd

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
Gespeichert
mad_moses
ProFTPD
*
Offline Offline

Beiträge: 5


Profil anzeigen
« Antwort #2 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

« Letzte Änderung: 08. Juli 2006, 17:37:26 von mad_moses » Gespeichert
VolGas
Moderator
ProFTPD
*****
Offline Offline

Beiträge: 771



Profil anzeigen
« Antwort #3 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:
  • reaktiviere unbedingt "SQLAuthenticate users*"!
  • Das alleine geht auch nicht: "SQLUserInfo users userid passwd NULL NULL NULL NULL"
    Zumindest "homedir" sollte vorhanden sein, sonst ist ein Default mit"SQLHomeDIR" zu setzen.
    Analog dazu: für "uid" sollte "SQLDefaultUID" oder zumindest "SQLMinUserUID" und
    für "gid" sollte "SQLDefaultGID" oder zumindest "SQLMinUserGID" gesetzt sein.
    Siehe auch ->Direktive SQLUserInfo
  • Ein "SQLGroupInfo" wird nicht gebraucht.
    Achtung: dort definierte Gruppe(n) haben NICHTS mit den GIDs des Filesystems zu tun,
    sondern sind nur intern zur Gruppendefinition für den ProFTPD!
  • In der SQL-Tabelle ist "uid" als UNIQUE KEY nicht sehr sinnvoll und "userid" als PRIMARY fehlt.
    Um es kurz zu fassen poste ich einfach eine sinnvolle Tabellendefinition:
    CREATE TABLE `users` (
      `userid` varchar(24) binary NOT NULL default '',
      `passwd` varchar(24) binary NOT NULL default '',
      `homedir` varchar(255) NOT NULL default '/var/www/',
      `uid` smallint(6) unsigned NOT NULL default '65534',
      `gid` smallint(6) unsigned NOT NULL default '65534',
      PRIMARY KEY  (`userid`),
    ) TYPE=MyISAM;
  • Bitte lies die Postings und die Supportseiten genau durch - da steht schon alles!

Wenn Du das beachtest hast, sollte es jetzt aber funktionieren.

mfg.
  VolGas
« Letzte Änderung: 08. Juli 2006, 17:58:21 von VolGas » Gespeichert
mad_moses
ProFTPD
*
Offline Offline

Beiträge: 5


Profil anzeigen
« Antwort #4 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?
Gespeichert
VolGas
Moderator
ProFTPD
*****
Offline Offline

Beiträge: 771



Profil anzeigen
« Antwort #5 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", zum Lesen ans Herz legen!

mfg.
  VolGas
« Letzte Änderung: 08. Juli 2006, 19:06:24 von VolGas » Gespeichert
mad_moses
ProFTPD
*
Offline Offline

Beiträge: 5


Profil anzeigen
« Antwort #6 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?
Gespeichert
VolGas
Moderator
ProFTPD
*****
Offline Offline

Beiträge: 771



Profil anzeigen
« Antwort #7 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 Huch

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.c
SQLConnectInfo ftpdb@localhost proftpd s900s900
SQLUserInfo users userid passwd uid NULL homedir NULL
SQLAuthTypes Plaintext
SQLAuthenticate users*
SQLMinUserUID 1000
SQLDefaultGID 65534
SQLLOGFILE /var/log/proftpd.sql.log
Was Du noch zur Beschleunigung des Logins tun könntest:
"UseReverseDNS off" und "IdentLookups off"

Sodele, viel Spaß noch - ich mache nun Feierabend!

mfg.
  VolGas
Gespeichert
mad_moses
ProFTPD
*
Offline Offline

Beiträge: 5


Profil anzeigen
« Antwort #8 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?
Gespeichert
VolGas
Moderator
ProFTPD
*****
Offline Offline

Beiträge: 771



Profil anzeigen
« Antwort #9 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
Gespeichert
Seiten: [1]   Nach oben
  Drucken  
 
Gehe zu:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.2 | SMF © 2006-2007, Simple Machines LLC Prüfe XHTML 1.0 Prüfe CSS
Seite erstellt in 0.078 Sekunden mit 15 Zugriffen.