Titel: Proftpd ist komisch - Fehler 550 - uid ist falsch Beitrag von: DocMcFly 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 Titel: Re: Proftpd ist komisch - Fehler 550 - uid ist falsch Beitrag von: VolGas 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 Titel: Re: Proftpd ist komisch - Fehler 550 - uid ist falsch Beitrag von: DocMcFly 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ä.) Titel: Re: Proftpd ist komisch - Fehler 550 - uid ist falsch Beitrag von: VolGas am 16. Mai 2006, 12:10:07 Aha, da gibt es schon einiges verbessern und zu beachten.
Berücksichige und probiere zuerst einmal diese Punkte. Ansonsten ist mir jetzt nichts weiter aufgefallen und scheint alles in Ordnung... mfg. VolGas Titel: Re: Proftpd ist komisch - Fehler 550 - uid ist falsch Beitrag von: DocMcFly am 16. Mai 2006, 13:42:37 mmmh... alles gemacht wie Du gesagt hast:
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 Titel: Re: Proftpd ist komisch - Fehler 550 - uid ist falsch Beitrag von: VolGas 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 Titel: Re: Proftpd ist komisch - Fehler 550 - uid ist falsch Beitrag von: VolGas 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 Titel: Re: Proftpd ist komisch - Fehler 550 - uid ist falsch Beitrag von: DocMcFly 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. :) Danke Clemens PS: Ich werde mir die Direktiven auch noch mal ansehen. |