In vsFTP das überschreiben von Dateien verbieten

Dann klingt das für mich, wie die einfachste und beste Lösung. Leider habe ich davon sowas von keine Ahnung :-(. Könntest du mir dabei Hilfestellung geben oder zumindest Links, wo ich mir das benötigte Wissen anlesen kann? Oder kannst du das machen und als Datei zur Verfügung stellen? Ich habe keine Ahnung, wie aufwändig das ist...

LG und Danke
Joe82
 
Irgendwo muss es die Funktion geben, mit der die neue Datei erstellt wird.

Dafür gibt es zwei gängige Möglichkeiten:

Verwendung von open, es muss nicht genau so aussehen, aber O_CREAT sollte dabei sein. Zu den Optionen wird dann O_EXCL hinzugefügt.
Code:
  fd = open (name, O_WRONLY|O_CREAT|0666);
->
  fd = open (name, O_WRONLY|O_CREAT|O_EXCL|0666);

Verwendung von fopen, hier wird die Option x angehängt.
Code:
  fp = fopen (name, "w");
->
  fp = fopen (name, "wx");
 
Du kannst ja mal versuchen, dies als "make/vsftpd/patches/100-force-exclusive-files.patch" abzuspeichern:

Code:
--- postlogin.c.ori	2014-02-14 19:36:22.824527302 +0100
+++ postlogin.c	2014-02-14 19:38:47.556526234 +0100
@@ -1047,7 +1047,8 @@
   else
   {
     /* For non-anonymous, allow open() to overwrite or append existing files */
-    new_file_fd = str_create(p_filename);
+    /* ******* changed to force exclusive also to non-anonymous users  ****** */
+    new_file_fd = str_create_exclusive(p_filename);
     if (!is_append && offset == 0)
     {
       do_truncate = 1;
danach ein "make vsftpd-precompiled" und das entstandene vsftpd nutzen (oder eine neue FW bauen)

EDIT: So siehts aus:
Code:
joerg@joerg-Ubuntu:/run/shm/freetz-trunk$ ftp fritz.box
Connected to x.x.x.x.
220 "Welcome"
Name (x.x.x.x:joerg): mytestuser
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> put testfile.01
local: testfile.01 remote: testfile.01
200 PORT command successful. Consider using PASV.
150 Ok to send data.
226 Transfer complete.
10 bytes sent in 0.00 secs (263.9 kB/s)
ftp> put testfile.01
local: testfile.01 remote: testfile.01
200 PORT command successful. Consider using PASV.
[B]553 Could not create file.
[/B]ftp> put testfile.02
local: testfile.02 remote: testfile.02
200 PORT command successful. Consider using PASV.
150 Ok to send data.
226 Transfer complete.
10 bytes sent in 0.00 secs (976.6 kB/s)
ftp> put testfile.02
local: testfile.02 remote: testfile.02
200 PORT command successful. Consider using PASV.
[B]553 Could not create file.
[/B]ftp>
 
Zuletzt bearbeitet:
Boah, total gut. Ich habe es noch nicht ausprobiert, aber ich werde mich die Tage damit mal näher beschäftgen. Aber da es bei dir funktioniert, wird es das bestimmt bei mir auch. Jetzt schonmal vielen lieben Dank dafür. Du hast mir wirklich sehr geholfen. Natürlich auch an sf3978.

Lieben Gruß
Joe82
 
Hallo MaxMuster,

entschuldige das es so lange bis zu einer Rückmeldung gedauert hat, aber ich war Beruflich sehr eingespannt. Ich habe nun deine Anmerkungen umgesetzt und bisher scheint es problemlos zu funktionieren.
Vielen vielen Dank für deine Hilfe.

LG Joe
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.