In vsFTP das überschreiben von Dateien verbieten

Joe82

Aktives Mitglied
Mitglied seit
22 Mrz 2007
Beiträge
1,114
Punkte für Reaktionen
0
Punkte
36
Hallo,

ich habe ein Problem, welches ich auch mit langem googlen nicht lösen konnte. Deshalb frage ich hier, in der Hoffnung, dass mir jemand helfen kann.

Ich habe schon lange einen vsftp im Einsatz und bin sehr zufrieden damit. Nun bin ich in die Situation gekommen einen User anzulegen, der hochladen und runterladen können soll, allerdings keine Dateien umbenennen oder löschen können soll. Das konnte ich mit den Befehlen:

cmds_denied=DELE,RMD,RNTO,RNFR,XRMD

auch erfolgreich erreichen. Jedoch verhindert dies nicht, dass jemand einfach eine leere Datei hochläd um die alte zu überschreiben und dann doch ein Löschen zu erreichen. Gibt es einen Befehl um ein Überschreiben von Dateien zu verbieten?

Vielen Dank
Joe 82
 
Nur weil das Programm (wie viele andere) mit Freetz erstellt werden kann, heißt es nicht, dass wir jedes einzelne Programm bis ins Detail kennen. Ein besserer Ansatz wäre beim Autor nachzufragen.
 
Hallo Ralf,

danke für deine Antwort. Ich bin mir des von dir angesprochenen Problems durchaus bewusst. Wie solltet ihr auch einen Überblick über sooooo viele Programme haben. Das kann niemand leisten. Da vsFTP jedoch ein recht häufig genutztes Paket ist, hatte ich gehofft jemand wüsste es. Da das Orginalprogramm sich doch etwas anders konfiguriert als die Freetz Version. Trotzdem finde ich die Funktionen sehr cool und möchte den Entwicklern nochmal auf diesem Weg meinen Dank ausdrücken.

LG Joe82

/edit
Wenn man der Info von hier glauben darf, ist es nicht möglich. Damit ist dann der vsFTP für mich unbrauchbar geworden :-(.
http://viki.brainsware.org/forum/thread/10
 
Zuletzt bearbeitet:
Das ist ärgerlich. Hab das zum Glück noch nicht gehabt.
 
Ich beschreibe mal, was ich machen möchte. Vielleicht kennt einer von euch eine Lösungsmöglichkeit für mein Projekt.

Ich bin Referendar an einer Schule und möchte nun für einen kleinen Kollegenkreis einen FTP einrichten, damit Unterrichtsmaterialen gemeinsam erarbeitet werden und getauscht werden können. Dazu ist es natürlich voraussetzung, dass jeder Dateien hochladen und runterladen kann. Allerdings möchte ich vermeiden, dass die Nutzer auch Dateien löschen können, um Probleme zu vermeiden.
Soweit klappt das halt auch alles, aber ich bekomme es eben nicht hin, ihnen das Überschreiben zu verbieten. Kann man den FTP irgendwie anderes strukturieren? Ordnerstruktur? Pfade? Was weiß ich. Um zu dem gleichen Ergebnis zu kommen?

LG Joe82
 
Bei mir gibt es für jeden User einen sep. Ordner für upload und einen readonly für alle zum download. Ist etwas arbeit, aber schützt mich vor versehentlichem überschreiben der originaldateien. In dem userordner darf nur der user selber schreiben, aber alle lesen. Löschen darf nur ich.
 
Was weiß ich. Um zu dem gleichen Ergebnis zu kommen?
Ich denke, mit inotify & Co. könntest Du nach dem upload, dem user den Zugriff auf die Datei entziehen, so dass er diese nicht mehr überschreiben kann: http://freetz.org/wiki/packages/inotify-tools
inoticoming is a daemon to watch a directory with Linux's inotify
framework and trigger actions once files with specific names are placed
in there.
http://svn.freetz.org/trunk/make/inotify-tools/Config.in
 
Dazu ist es natürlich voraussetzung, dass jeder Dateien hochladen und runterladen kann. Allerdings möchte ich vermeiden, dass die Nutzer auch Dateien löschen können, um Probleme zu vermeiden.

Solange es nur darum geht, Dateien von anderen nicht löschen zu können, kannst Du für jeden einen eigenen Benutzer anlegen und im Verzeichnis die rechte auf 1777 setzen. Außerdem muss der FTP Server so konfiguriert werden, dass er die Dateien mit den Rechten 644 (oder 640) anlegt.
 
@sf3978 und Ralf

Hallo,
vielen Dank für eure Antworten. Ich werde mir erstmal inotify ansehen. Allerdings steht im WIKI dazu, dass es Probleme geben kann wenn man Dateiberechtigungen ändert. Die Idee von Ralf ist nicht schlecht, beinhatet allerdings wieder mehrere Benutzer und da es um die 30 werden, weiß ich nicht, ob die Fritte dabei nicht in die Knie geht.
Aber trotzdem Danke.

LG Joe82
 
Allerdings steht im WIKI dazu, dass es Probleme geben kann wenn man Dateiberechtigungen ändert.
Evtl. ist das Wiki für inotify auch nicht mehr auf dem neuesten Stand. Evtl. musst Du nicht die Dateiberechtigungen, sondern den Besitzer der Datei (sofort nach dem upload) ändern, damit diese Dateien weiter für den Download zur Verfügung stehen, aber nicht mehr überschrieben werden können. Weiter gibt es einige weitere tools (z. B. inoticoming) die auf inotify basieren bzw. mit inotify arbeiten, aber für die es in Freetz noch kein Paket gibt. Wenn Du auch ein Linux außerhalb von der FritzBox hast, dann könntest diese tools, für deinen Anwendungsfall evtl. testen.
 
Die Idee von Ralf ist nicht schlecht, beinhatet allerdings wieder mehrere Benutzer und da es um die 30 werden, weiß ich nicht, ob die Fritte dabei nicht in die Knie geht.

Die melden sich aber doch nicht alle gleichzeitig an? Und wenn doch, ist die Belastung genauso groß wie wenn 30 Zugriffe unter dem gleichen Benutzer laufen.
Mit vsFTP kann man (auf normalen Linux Systemen) auch eine Benutzerliste anlegen, die unabhängig von den System Benutzern in /etc/passwd ist.
 
... möchte ich vermeiden, dass die Nutzer auch Dateien löschen können, um Probleme zu vermeiden.
... ich bekomme es eben nicht hin, ihnen das Überschreiben zu verbieten. ...
Ich verstehe das so, dass ein Nutzer auch seine eigene Datei, die er einmal hochgeladen hat, nicht mehr löschen bzw. nicht mehr überschreiben/ändern soll.
Wenn er an der Datei nachträglich etwas geändert bzw. ergänzt hat, dann muss er diese Datei mit einem anderen Namen hochladen. Die "alte", bereits hochgeladene Datei kann von ihm und den anderen usern, nur noch runtergeladen werden. Ist das so gemeint?
 
Genau so ist das gemeint. Was einmal hochgeladen wurde, sollen die Nutzer nicht mehr löschen können. Angeblich gibt es auch in vsFTP eine Funktion dafür, allerdings nur bei virtuellen Benutzern, die wir auf der Box wohl nicht nutzen und nur bei vsFTP auf einem richtigen Rechner zum Einsatz kommt. Allerdings gebe ich zu, dass ich das noch nicht ganz durchblickt habe.

LG Joe82
 
Genau so ist das gemeint. Was einmal hochgeladen wurde, sollen die Nutzer nicht mehr löschen können.
Evtl. geht das auch mit vsftpd und nichtvirtuellen Benutzern und zwar wenn der upload mit dem FTP-Befehl STOU (Store Unique) gemacht wird bzw. nur mit diesem STOU-Befehl gemacht werden darf.
D. h., der Benutzer kann keinen Einfluss auf den endgültigen Namen der hochgeladenen Datei haben. Der Dateiname im upload-Verzeichnis muss immer einmalig (unique, ein Unikat) sein (... durch eine Dateiendung auf die der user/client keinen Einfluss hat) und somit sollte eine Datei die einmal hochgeladen worden ist, nicht überschrieben werden können.
 
Hi,

STOU ist der richtige Befehl, wird allerdings von vsFTP nicht angewendet. Wenn ich STOU unter cmds_denied= packe, ändert sich nichts. Ich kann genauso arbeiten wie immer. Mit überschreiben. Packe ich es in die cmds_allowed= bekomme ich keinen Zugriff mehr auf den Server.

LG
 
STOU ist der richtige Befehl, wird allerdings von vsFTP nicht angewendet.

Der Befehl wird vom Client nicht angewendet. Du müsstest dafür einen Client finden, den man dazu bringen kann, diesen Befehl zu verwenden, und alle Benutzer müssten das auch tun.

Wie kann man das denn auf einem normalen System mit virtuellen Benutzern erreichen?

Mit einem kleinen Eingriff am Quelltext wäre es recht einfach, man müsste nur beim Erstellen der Datei die Option O_EXCL mit angeben. Wenn Du den Server nicht auch für etwas anderes verwendest, könntest Du das ändern, ohne Dir um Konfiguration und ähnliches Gedanken zu machen.
 
Angeblich geht es mit virtuellen Benutzern. Ich werde das nochmal raussuchen und hier posten. Bin gerade etwas unter Zeitdruck. Danke schonmal für die sehr gute Hilfe.

Wenn Du den Server nicht auch für etwas anderes verwendest,...
Was für Auswirkungen hätte das? Nur das grundsätzlich keine Dateien mittels vsftp überschrieben werden dürfen oder betrifft das auch Dinge wie Samba etc.
 
Kannst du nach dem Beenden der Session was ausführen?
Dann vielleicht eine Idee: ggf. chmod verbieten und nach dem Abmelden per Skript alle Dateien auf 444 setzen (halt für alle, auch den Eigentümer, auf nur lesen).
Ich hoffe, dass das FTP das berücksichtigt?!?
Dann könnte man in der FTP-Session noch einen Fehler per Überschreiben korrigieren, aber danach könnte das nicht mehr erfolgen.

Oder kann man das Anlegen aller Dateien mit "readonly" (444) erzwingen?
 
Ich hoffe, dass das FTP das berücksichtigt?!?
Leider ist das nicht so:
Code:
-r--r--r--    1 xxx     xxx            68 Feb 12 22:47 terra.txt
Code:
-r--r--r--    1 xxx     xxx            68 [color=red]Feb 14 09:24[/color] terra.txt
 
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.