www.ProFTPD.de
13. März 2007, 20:55:22 *
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 ist komisch - Fehler 550 - uid ist falsch  (Gelesen 475 mal)
0 Mitglieder und 1 Gast betrachten dieses Thema.
DocMcFly
ProFTPD
*
Offline Offline

Beiträge: 4


Profil anzeigen
« am: 15. Mai 2006, 21:00:17 »

Hallo,

Ich hab Proftpd + MySQL installiert. es funktioniert teilweise.

Ich kann mit meinem Client mich einloggen, in Verzeichnisse wechseln, auch Dateien herunterladen und mit 0 Byte anlegen. Seltsam wird es nur wenn ich eine Datei hochladen möchte (zB im PS-Pad-Editor speichern). Nach einer Weile geht dann garnix mehr... mit einem anderen Client (Smartftp) brach proftp immer wieder mitten drin ab.

Ich bekomme dann einen Fehler 550. Ich habe aber im Dateisystem die Rechte, denn die Dateien werden ja angelegt.

Also ich mir das MySQL-Log angesehen hab, sah ich folgendes -- Das machte mich stutzig...

Code:
...
46427 Query       SELECT name, passwd, uid, gid, homedir FROM users WHERE (uid = 33) LIMIT 1
46427 Query       SELECT name, passwd, uid, gid, homedir FROM users WHERE (uid = 33) LIMIT 1
46427 Query       SELECT name, passwd, uid, gid, homedir FROM users WHERE (uid = 0) LIMIT 1
46427 Query       SELECT name, passwd, uid, gid, homedir FROM users WHERE (uid = 0) LIMIT 1
46427 Query       SELECT name, passwd, uid, gid, homedir FROM users WHERE (uid = 33) LIMIT 1
46427 Query       SELECT name, passwd, uid, gid, homedir FROM users WHERE (uid = 33) LIMIT 1
46427 Query       SELECT name, passwd, uid, gid, homedir FROM users WHERE (uid = 0) LIMIT 1
46427 Query       SELECT name, passwd, uid, gid, homedir FROM users WHERE (uid = 0) LIMIT 1
46427 Query       SELECT name, passwd, uid, gid, homedir FROM users WHERE (uid = 0) LIMIT 1
46427 Query       SELECT name, passwd, uid, gid, homedir FROM users WHERE (uid = 33) LIMIT 1
46427 Query       SELECT name, passwd, uid, gid, homedir FROM users WHERE (uid = 0) LIMIT 1
46427 Query       SELECT name, passwd, uid, gid, homedir FROM users WHERE (uid = 0) LIMIT 1
46427 Query       SELECT name, passwd, uid, gid, homedir FROM users WHERE (uid = 0) LIMIT 1
46427 Query       SELECT name, passwd, uid, gid, homedir FROM users WHERE (uid = 0) LIMIT 1
46427 Query       SELECT name, passwd, uid, gid, homedir FROM users WHERE (uid = 0) LIMIT 1
46427 Query       SELECT name, passwd, uid, gid, homedir FROM users WHERE (uid = 0) LIMIT 1
46427 Query       SELECT name, passwd, uid, gid, homedir FROM users WHERE (uid = 0) LIMIT 1
46427 Query       SELECT name, passwd, uid, gid, homedir FROM users WHERE (uid = 33) LIMIT 1
...

Also recherierte ich weiter und fand folgendes im SQL-Log von Proftd:

Code:
...
May 15 20:23:36 mod_sql/4.11[20448]: cache miss for uid '0'
May 15 20:23:36 mod_sql/4.11[20448]: : entering         mysql cmd_select
May 15 20:23:36 mod_sql/4.11[20448]: entering   mysql cmd_open
May 15 20:23:36 mod_sql/4.11[20448]: connection 'default' count is now 2
May 15 20:23:36 mod_sql/4.11[20448]: exiting    mysql cmd_open
May 15 20:23:36 mod_sql/4.11[20448]: query "SELECT name, passwd, uid, gid, homedir FROM users WHERE (uid = 0) LIMIT 1"
May 15 20:23:36 mod_sql/4.11[20448]: entering   mysql cmd_close
May 15 20:23:36 mod_sql/4.11[20448]: connection 'default' count is now 1
May 15 20:23:36 mod_sql/4.11[20448]: exiting    mysql cmd_close
May 15 20:23:36 mod_sql/4.11[20448]: exiting    mysql cmd_select
May 15 20:23:36 mod_sql/4.11[20448]: <<< cmd_uid2name
May 15 20:23:36 mod_sql/4.11[20448]: >>> cmd_uid2name
...

Was meint proftp mit : "cache miss for uid '0'" und warum immer uid=0 oder uid=33? (ich verwende  UID = 6001 und GID auch 6001!)

Kann mir jemand helfen, wo ich suchen soll? Ich poste gerne die Configs - auf Anfrage. Ich möchte nur nicht alles mit lauter Auszügen voll spammen. Wird dann unübersichtlich.

Danke fürs Lesen und Anworten

Clemens
Gespeichert
VolGas
Moderator
ProFTPD
*****
Offline Offline

Beiträge: 771



Profil anzeigen
« Antwort #1 am: 15. Mai 2006, 22:45:50 »

Hallo!

Das ist sehr löblich, da sich sonst kaum einer darum schert, aber ohne die .conf kommen wir wohl nicht weiter.
Das geschilderte Verhalten ist wirklich sehr rätselhaft - mal sehen, ob wir etwas finden.

mfg.
  VolGas
Gespeichert
DocMcFly
ProFTPD
*
Offline Offline

Beiträge: 4


Profil anzeigen
« Antwort #2 am: 16. Mai 2006, 09:37:18 »

Danke, für das offene Ohr. Ich dachte, ich hätte verstanden wie es funktioniert - naja - wieder eines besseren belehrt. Also hier meine .conf:

Code:
ServerName                      "ftp.cynox.net"
ServerType                      standalone
DeferWelcome                    off

MultilineRFC2228                on
DefaultServer                   on
ShowSymlinks                    on

TimeoutNoTransfer               6000
TimeoutStalled                  6000
TimeoutIdle                     12000

DisplayLogin                    welcome.msg
DisplayFirstChdir               .message
ListOptions                     "-l"

DenyFilter                      \*.*/

ServerAdmin webmaster@cynox.net
ServerName "FTP Server"

AllowRetrieveRestart on
AllowStoreRestart on
IdentLookups off

DefaultRoot ~
RequireValidShell off
RootLogin off

LogFormat default "%h %l %u %t \"%r\" %s %b"
LogFormat auth "%v [%P] %h %t \"%r\" %s"
LogFormat write "%h %l %u %t \"%r\" %s %b"

# Log file/dir access
ExtendedLog /var/log/proftpd.access_log WRITE,READ write
# Record all logins
ExtendedLog /var/log/proftpd.auth_log AUTH auth
# Paranoia logging level....
ExtendedLog /var/log/proftpd.paranoid_log ALL default

SQLConnectInfo proftpd@localhost proftpd ***********************
SQLAuthTypes Crypt
SQLAuthenticate users*
SQLDefaultGID 65534
SQLDefaultUID 65534
SQLMinUserGID 6001
SQLMinUserUID 6001
SQLUserInfo users name passwd uid gid homedir null
SQLLog PASS updatecount
SQLNamedQuery updatecount UPDATE "count=count+1 WHERE name='%u'" users
# SQL - Logging:
SQLLOGFILE /var/log/proftpd.sql.log
QuotaEngine on
QuotaDirectoryTally on
QuotaDisplayUnits Kb
QuotaShowQuotas on

SQLNamedQuery get-quota-limit SELECT "name, 'user', per_session, limit_type, bytes_in_avail, bytes_out_avail, bytes_xfer_avail, files_in_ava$

SQLNamedQuery get-quota-tally  SELECT "name, quota_type, bytes_in_used, bytes_out_used, bytes_xfer_used, files_in_used, files_out_used, file$

SQLNamedQuery update-quota-tally UPDATE "bytes_in_used = bytes_in_used + %{0}, bytes_out_used = bytes_out_used + %{1}, bytes_xfer_used = byt$

SQLNamedQuery insert-quota-tally  INSERT "%{0}, %{1}, %{2}, %{3}, %{4}, %{5}, %{6}, %{7}" quotatallies

QuotaLimitTable sql:/get-quota-limit
QuotaTallyTable sql:/get-quota-tally/update-quota-tally/insert-quota-tally

Port                  21

MaxInstances     30

Dann habe ich noch zwei Tabellen in der DB eine "users" (mit den Nutzern) eine Tabelle names "quotatallies" (dem Quotaangaben)

In der "user"-Tabelle steht unteranderem ein Nutzer namens "clemens". Das sieht so aus...
Code:
name passwd uid gid homedir count per_session limit_type bytes_in_avail bytes_out_avail bytes_xfer_avail files_in_avail files_out_avail files_xfer_avail
clemens ******* 6001 6001 /var/www/pub/theGame/clemens 102 false soft 2.07374e+09 2.07374e+09 2.18112e+09 1024 1024 2048

Im System gibt es einen Nutzer und eine Gruppe namens "ftp-www" in der /etc/passwd steht:
Code:
ftp-www:x:6001:6001::/var/proftpd:/bin/sh

und in der "/etc/group":
Code:
# Apache soll auch auf die ftp-dateien zugreifen können:
www-data:x:33:ftp-www
# der virtuelle ftp-Nutzer
ftp-www:x:6001:

Ich hoffe darin steckt schon der Fehler. Wieder danke fürs Lesen und Antworten...
Clemens

PS: Ich habe Debian Sarge 3.1 - alles aktuelle Orginal-Pakete (keine BackPort-Pakete osä.)
Gespeichert
VolGas
Moderator
ProFTPD
*****
Offline Offline

Beiträge: 771



Profil anzeigen
« Antwort #3 am: 16. Mai 2006, 12:10:07 »

Aha, da gibt es schon einiges verbessern und zu beachten.

  • Ich gehe davon aus, daß Du nur SQL zur Authentifikation benutzen möchtest.
    Damit dieses gewährleistet (und eine mögliche Fehlerquelle ausgeschaltet) ist: "AuthOrder mod_sql.c"
    Damit ist es prinzipiell egal, was in "/etc/passwd" oder "/etc/group" steht.
  • Die SQL-Tabellen für die QuotaEngine sind angelegt?
    Wenn Du die Quota nicht wirklich brauchst, schalte sie aus - vielleicht auch nur bis alles funktioniert.
  • Du benutzt bei "SQLUserInfo" sowohl "uid" als auch "gid",
    daher verbietet sich der Einsatz von "SQLDefaultUID" und "SQLDefaultGID"
  • Sollte es mit dem Login Schwierigkeiten geben, so versuche es zuerst einmal
    mit "offenen" Passworten: "SQLAuthTypes Plaintext"
  • Das ist zwar nicht kritisch, beschleunigt aber den Login: "UseReverseDNS off"

Berücksichige und probiere zuerst einmal diese Punkte.
Ansonsten ist mir jetzt nichts weiter aufgefallen und scheint alles in Ordnung...

mfg.
  VolGas
« Letzte Änderung: 16. Mai 2006, 12:13:14 von VolGas » Gespeichert
DocMcFly
ProFTPD
*
Offline Offline

Beiträge: 4


Profil anzeigen
« Antwort #4 am: 16. Mai 2006, 13:42:37 »

mmmh... alles gemacht wie Du gesagt hast:

  • "AuthOrder mod_sql.c" in die /etc/proftpd.conf geschrieben
  • Dann hab ich die QuotaEngine ausgeschaltet:
    QuotaEngine off
  • Login funktioniert tadellos also hab ich "SQLAuthTypes Plaintext"  nicht geändert.
  • Hab aus Spaß rein auch "UseReverseDNS off" gesetzt.

Schön ist, Proftpd nervt die DB nicht mehr mit den Anfragen:
Code:
46427 Query       SELECT name, passwd, uid, gid, homedir FROM users WHERE (uid = 33) LIMIT 1

Ein schöner Fortschritt. Aber ich kann noch immer nicht Dateien löschen oder überschreiben. Anlegen geht - downloaden geht - Verzeichnisse ansehen und wechseln geht - Rechte ändern geht auch!

Aber eine Datei ändern geht nicht!
Ich hab jetzt das Verzeichnis "rwxrwxrwx" gesetzt und auch die Datei, die ich gerade angelegt hatte. Ich kann auch via FTP-Client die Rechte setzen - aber eben nix überschreiben. Wo liegt da der denkfehler...

Im Log steht einfach nur
Code:
xxx.xxx.xxx.xxx UNKNOWN clemens [16/May/2006:13:31:20 +0200] "STOR datei.txt" 550 -


Da noch irgendwie ein gesonderter Schreibschutz? Wo könnte der stecken?

Clemens


Gespeichert
VolGas
Moderator
ProFTPD
*****
Offline Offline

Beiträge: 771



Profil anzeigen
« Antwort #5 am: 16. Mai 2006, 15:41:56 »

Eine Dateiupload funktioniert nun also, nur das Überschreiben nicht?
Das ist ganz einfach: "AllowOverwrite on" - das ist alles!

Guck' Dir doch auch mal die Seite an: http://www.proftpd.de/Direktiven.54.0.html
Vielleicht findest Du da noch ein paar Sächelchen...

mfg.
  VolGas
Gespeichert
VolGas
Moderator
ProFTPD
*****
Offline Offline

Beiträge: 771



Profil anzeigen
« Antwort #6 am: 16. Mai 2006, 16:09:06 »


Nachtrag:

ich möchte Dir noch empfehlen, die Direktiven "User xxx" und "Group yyy" zu verwenden.
Auch "Umask nnn [nnn]" könnte noch für Dich nützlich sein...

mfg.
  VolGas
Gespeichert
DocMcFly
ProFTPD
*
Offline Offline

Beiträge: 4


Profil anzeigen
« Antwort #7 am: 17. Mai 2006, 10:27:45 »

Vielen Dank! - Auf die Idee, dass von Hause aus das Überschreiben verboten ist, bin ich einfach nicht gekommen.
(AllowOverwrite on)

Es funktioniert jetzt auch ganz gut. "user" & "group" hab ich auch gesetzt.  Smiley

Danke Clemens

PS: Ich werde mir die Direktiven auch noch mal ansehen.

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.065 Sekunden mit 15 Zugriffen.