www.ProFTPD.de
13. März 2007, 19:55:33 *
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: Zeitstempel bei hochgeladenen Dateien falsch  (Gelesen 128 mal)
0 Mitglieder und 1 Gast betrachten dieses Thema.
polonius
ProFTPD
*
Offline Offline

Beiträge: 4


Profil anzeigen
« am: 10. November 2006, 12:24:06 »

Hallo,

mir ist aufgefallen, dass alle hochgeladenen Dateien und Verzeichnisse nicht mehr den ursprünglichen Zeitstempel tragen, sondern mit der aktuellen Zeit (zum Zeitpunkt des Hochladens) modifiziert werden.

Beispiel:

Eine Datei hat unter WinXP das Zeitattribut 'Geändert am': 26.10.2006. Nach dem Hochladen auf den FTP Server ist der Zeitstempel auf das aktuelle Datum geändert worden.

Im Prinzip wäre mir das egal, wenn die Datei einen neuen timestamp bekommt, aber ich möchte zwei Verzeichnisse synchronisieren und die zu synchronisierenden Dateien/Verzeichnisse sollen anhand des Datums erkannt werden. Und dafür ist es notwendig, dass der FTP-Server die ursprünglichen Zeitstempel der Dateien genau übernimmt. Ansonsten funktioniert das ganze ja nicht...

Das Problem habe ich schon mit verschiedenen FTP-Clients (FileZilla, PSftp Pro, psftp, CoreFTP, etc.) von einem Windows XP Pro Rechner aus reproduzieren können. Daher gehe ich davon aus, dass das Problem bei den Servereinstellungen liegt.  Mit SSh Secure File Transfer und dem gleichen Benutzer tritt das Problem übrigens nicht auf - aber nun gut, ssh ist auch ne andere Geschichte als FTP...
Bei dem PSftp Pro Client funktioniert eine automatische Synchronisation z.B. nur, wenn man explizit MDTM in den Ooptionen des Programms deaktiviert. Ansonsten wird die Synchronisation mit Fehlermeldung abgebrochen:


Code:
"Nr","SYNC_ID","Message","DateTime"
"0","2","Verbindung wird hergestellt. Server: lagerschuppen.dyndns.org, Port: 21","10.11.2006 11:34:28"
"1","2","220 ProFTPD 1.2.10 Server (Debian) [192.168.1.2]","10.11.2006 11:34:38"
"2","2","USER polonius","10.11.2006 11:34:38"
"3","2","331 Password required for polonius.","10.11.2006 11:34:38"
"4","2","Passwort wird gesendet","10.11.2006 11:34:38"
"5","2","230 User polonius logged in.","10.11.2006 11:34:38"
"6","2","FEAT","10.11.2006 11:34:38"
"7","2","211-Features:","10.11.2006 11:34:38"
"8","2","211-MDTM","10.11.2006 11:34:38"
"9","2","211-REST STREAM","10.11.2006 11:34:38"
"10","2","211-SIZE","10.11.2006 11:34:38"
"11","2","211-AUTH TLS","10.11.2006 11:34:38"
"12","2","211-PBSZ","10.11.2006 11:34:38"
"13","2","211-PROT","10.11.2006 11:34:38"
"14","2","211 End","10.11.2006 11:34:38"
"15","2","Die Synchronisierung wurde abgebrochen. Bitte MDTM Optionen prüfen","10.11.2006 11:34:38"
"16","2","Synchronisierung beendet.","10.11.2006 11:34:38"


Ich benutze ProFTPD 1.2.10 auf einem Debian 3.1 Sarge Sytem. Hier die ProFTPD Conf:

Code:
#
# /etc/proftpd.conf -- This is a basic ProFTPD configuration file.
# To really apply changes reload proftpd after modifications.
#

ServerName ******************
ServerType standalone
DeferWelcome off

#UseReverseDNS off
#IdentLookups off

debugLevel 6
ServerLog /var/log/proftpd.debug.log

#MultilineRFC2228 on
DefaultServer on
ShowSymlinks on

TimeoutNoTransfer 600
TimeoutStalled 600
TimeoutIdle 1200

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

DenyFilter \*.*/

DefaultRoot ~

#AllowForeignAddress on

PassivePorts 50000 50500

# Uncomment this if you are using NIS or LDAP to retrieve passwords:
#PersistentPasswd off

# Uncomment this if you would use TLS module:
TLSEngine on

# Uncomment this if you would use quota module:
#Quotas on

# Uncomment this if you would use ratio module:
#Ratios on

# Port 21 is the standard FTP port.
Port 21

#TimesGMT on

# To prevent DoS attacks, set the maximum number of child processes
# to 30.  If you need to allow more than 30 concurrent connections
# at once, simply increase this value.  Note that this ONLY works
# in standalone mode, in inetd mode you should use an inetd server
# that allows you to limit maximum number of processes per service
# (such as xinetd)
MaxInstances 30

# Set the user and group that the server normally runs at.
User nobody
Group nogroup

# Umask 022 is a good standard umask to prevent new files and dirs
# (second parm) from being group and world writable.
Umask 022  022
# Normally, we want files to be overwriteable.
AllowOverwrite on

# Delay engine reduces impact of the so-called Timing Attack described in
# http://security.lss.hr/index.php?page=details&ID=LSS-2004-10-02
# It is on by default.
#DelayEngine off

# A basic anonymous configuration, no upload directories.

# <Anonymous ~ftp>
#   User ftp
#   Group nogroup
#   # We want clients to be able to login with "anonymous" as well as "ftp"
#   UserAlias anonymous ftp
#   # Cosmetic changes, all files belongs to ftp user
#   DirFakeUser on ftp
#   DirFakeGroup on ftp
#
#   RequireValidShell off
#
#   # Limit the maximum number of anonymous logins
#   MaxClients 10
#
#   # We want 'welcome.msg' displayed at login, and '.message' displayed
#   # in each newly chdired directory.
#   DisplayLogin welcome.msg
#   DisplayFirstChdir .message
#
#   # Limit WRITE everywhere in the anonymous chroot
#   <Directory *>
#     <Limit WRITE>
#       DenyAll
#     </Limit>
#   </Directory>
#
#   # Uncomment this if you're brave.
#   # <Directory incoming>
#   #   # Umask 022 is a good standard umask to prevent new files and dirs
#   #   # (second parm) from being group and world writable.
#   #   Umask 022  022
#   #            <Limit READ WRITE>
#   #            DenyAll
#   #            </Limit>
#   #            <Limit STOR>
#   #            AllowAll
#   #            </Limit>
#   # </Directory>
#
# </Anonymous>

#TLS
<IfModule mod_tls.c>
TLSEngine on
TLSLog /var/log//proftpd_tls.log
TLSProtocol TLSv1
TLSRequired off
TLSRSACertificateFile /usr/local/etc/ftpcert/host.cert
TLSRSACertificateKeyFile /usr/local/etc/ftpcert/host.key
</IfModule>


Ich hab bis jetzt auch schon einige Zeit mit Recherche im Internet zu diesem Problem verbracht. Allerdings nicht wirklich fündig geworden...

Vielleicht weiß hier ja jemand Rat?!

Viele Grüße,
polonius
Gespeichert
VolGas
Moderator
ProFTPD
*****
Offline Offline

Beiträge: 771



Profil anzeigen
« Antwort #1 am: 10. November 2006, 13:20:55 »

Hallo polonius,

an Deiner proftpd.conf ist mir nichts nachteiliges aufgefallen, nur die beiden Anweisungen
"UseReverseDNS off" und "IdentLookups off" solltest Du aus Performancegründen wieder
reaktivieren.

Zum Thema: beim FTP wird bei jedem Upload eine neue Datei im Filesystem angelegt. Die einzige
"Information", die das Filesystem zu dem File erhält, ist der Dateiname - sonst nichts. Daher hat
jedes File folgerichtig das Erstellungsdatum gleich dem Uploaddatum.

Der FTP-Standard wurde später um den Befehl "MDTM" (MoDification TiMe) erweitert - damit kann
man dem Upload quasi eine Zeitinformation mit einer zusätzlichen Anweisung hinterherschicken.
Das ist allerdings die Sache des FTP-Clients, dies auch immer zu tun. Das FT-Protokoll bietet
einfach keine Möglichkeiten, weitere Dateiattribute mit zu übertragen - ein entsprechendes Setting
eines FTP-Servers ist damit sinnlos und gibt es also auch nicht.

D.h.: Du hast mit Deiner Vermutung recht: FTP ist zum Synchronisieren von Dateien nur bedingt tauglich.
Solange die Dateien auf dem Server nicht verändert werden, kann der FTP-Client zumindest erkennen,
ob eine lokale Datei ein neueres Modifikationsdatum hat, als die entsprechende Datei auf dem Server.
Das ist aber auch schon alles - wird die Datei auf dem Server modifiziert, dann ist dies nicht mehr
sicher zu erkennen.

Zur Synchronisation gibt es andere Protokolle, Dienste/Server/Clients. Unter Unix/Linux ist immer
noch das alt-bewährt/berüchtigte "rsync" das populärste System zum Replizieren von Dateien und
Verzeichnisstrukturen.

Es gibt Protierungen für Windows von scp, rsync und unison, so daß es möglich ist, genau die gleichen
Methoden anzuwenden wie unter Unix. Einen etwas Windows-ähnlichere Lösung ist der "winscp"-Client
von http://winscp.sourceforge.net/eng/. Er bietet zur Übertragung von Daten eine Oberfläche ähnlich
der des Explorers.

Zu diesen Programmen kann ich Dir weiter keine Auskunft geben - ich habe mit µ$ nix am Hut und
hier in diesem ProFTPD-Forum wäre auch der falsche Ort dafür.

Ich hoffe dennoch, daß ich Dir mit meinen Infos weiterhelfen konnte.

mfg.
  VolGas
« Letzte Änderung: 10. November 2006, 13:47:12 von VolGas » Gespeichert
polonius
ProFTPD
*
Offline Offline

Beiträge: 4


Profil anzeigen
« Antwort #2 am: 10. November 2006, 15:59:04 »

Hallo VolGas,

vielen Dank für Deine ausführliche Antwort. Damit bin ich doch schon ein ganzes Stück weiter...

Aber noch eine kleine Nachfrage:
Wenn ich Dich richtig verstanden habe, muß der MDTM-Befehl ja auch von FTP-Server angeboten/unterstützt werden.
Ist dies bei ProFTPD standardmäßig der Fall, oder muß das explizit aktiviert werden?

Nochmals Danke + viele Grüße,

polonius
Gespeichert
VolGas
Moderator
ProFTPD
*****
Offline Offline

Beiträge: 771



Profil anzeigen
« Antwort #3 am: 10. November 2006, 16:47:06 »

Freut mich, daß ich Dir weiterhelfen konnte.

Der ProFTPD ist ein "moderner" FTP-Server: MDTM beherrscht er natürlich -
ganz ohne "Konfigurations-Bedarf" für dieses Feature. Wenn man sich z.B.
per Telnet auf dem FTP-Server einloggt (Port 21), kann man mit dem Befehl
"FEAT" die zusätzlichen FTP-Features abfragen.

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.059 Sekunden mit 16 Zugriffen.