Xmlftp: Unterschied zwischen den Versionen
Pegro (Diskussion | Beiträge) K (alle Überschriften eins größer gemacht, sieht besser aus) |
Pegro (Diskussion | Beiträge) K (→Unter Windows) |
||
Zeile 248: | Zeile 248: | ||
#Starten Sie das Script | #Starten Sie das Script | ||
== Unter Windows == | == Unter Windows == | ||
− | {{Vorlageninfo | text = XmlftpC.Net befindet sich noch in der Entwicklungsphase und ist deshalb noch nicht verfügbar. }} | + | {{Vorlageninfo | text = '''XmlftpC.Net befindet sich noch in der Entwicklungsphase und ist deshalb noch nicht verfügbar.''' }} |
=== Installation und Download === | === Installation und Download === | ||
'''Hinweis:''' Zum Ausführen von XmlftpC.Net wird das Microsoft .NET 2 Framework benötigt. | '''Hinweis:''' Zum Ausführen von XmlftpC.Net wird das Microsoft .NET 2 Framework benötigt. |
Version vom 23. November 2006, 23:05 Uhr
Die Idee
Es gibt bereits viele verschiedene FTP Server für Linux, die alle ihre Vorteile und Nachteile haben. Aber einige Sachen sind ihnen allen gemeinsam:
- schlecht und unübersichtliche Konfigurationsdateien
- Virtuelle Benutzer können gar nicht oder nur mit hohem Aufwand angelegt werden
- Sie Arbeiten nur auf realen Verzeichnissen
- Symlinks werden nicht verfolgt
- Man kann entweder die ganze Festplatte freigeben oder einen Verzeichnisszweig aber nicht verschiedene Verzeichnisse in unterschiedlichen Verzeichnisspfaden
Genau an diesen Kritikpunkten setzt das XMLFTP Projekt an
Aktuelle Umsetzung der Idee
Der Server ist zur Zeit in C geschrieben und unter Linux lauffähig.
Bis jetzt wurden keine nicht standardmäßigen Bibliotheken genutzt, was eine hohe Kompatibilität und Portierbarkeit ermöglichen soll. Auch wenn der Server vorrangig für Linux gedacht wahr und ist, so ist eine Umsetzung auf ein anderes Betriebssystem durchaus machbar und denkbar.
Die aktuelle Entwicklung geschieht zur Zeit unter Linux mit der Softwareumgebung KDevelop und dem freien Kompiler gcc.
Geplante Features
Feature | Implementiert | Komentar |
---|---|---|
|
Ja | Passwörter sind noch im Klartext gespeichert |
|
Ja | Nach dem Upload von Dateien wird der Verzeichnisbaum noch nicht erneuert |
|
Ja |
Die Idee ist es dynamisch generrierte Dateien anzubieten. Das ganze wird realisiert über eine Pluginarchitektur so kann man selber entscheiden wie diese Datei erstellt werden soll. |
|
Ja | Features wie Benutzer,Verzeichnisbäume und virtuelle Dateien sind bereits in den Konfigurationsdateien. |
|
Ja | Berechtigungen werden überprüft und angewendet. |
|
Nein |
Implementierte FTP Kommandos
Kommando | Implementiert | Kommentar |
---|---|---|
ABOR | Ja | |
ACCT | Nein | |
APPE | Nein | |
CDUP | Ja | |
CWD | Ja | |
DELE | Ja | |
LIST | Ja | |
HELP | Nein | |
MDTM | Nein | |
MKD | Ja | |
MODE | Ja | |
NLST | Nein | |
NOOP | Ja | |
PASS | Ja | |
PASV | Ja | |
PORT | Ja | |
PWD | Ja | |
QUIT | Ja | |
RETR | Ja | |
REIN | Nein | |
RMD | Ja | |
RNFR | Ja | |
RNTO | Ja | |
STAT | Nein | |
SITE | Nein | |
SIZE | Ja | |
STOR | Ja | |
STOU | Nein | |
STRU | Nein | |
SYST | Ja | |
TYPE | partiell | Wird angenommen hat aber noch keine Auswirkungen auf den Dateitransfer |
USER | Ja |
Quickstart
Unter Linux
Installation und Download
- Um den FTP Server benutzen zu können, muss man ihn natürlich zu nächst erst einmal herunterladen. Da sich das Projekt in der Betatestphase befindet, geschieht das in dem man mich per Mail,ICQ oder IRC kontaktiert.
- Daraufhin verschicke ich das Installationspaket. In diesem Installationspaket sind bereits kompilierte Versionen des Servers und des Konfigurationstool sowie die passenden Quelldateien enthalten.
- Das Paket entpacken und eventuell neue Binaries kompilieren, falls die vorgefertigten nicht gehen sollten.
- Die Binaries in das gewünschte Verzeichnis kopieren
- Da dem Server momentan nur ein Startscript beiliegt um ihn in der Konsole zu starten muss, falls ein starten per init.d gewünscht ist, ein solches Script selbst verfasst werden. (Das Script kommt noch :) )
- Damit währe die Installation auch schon abgeschlossen
Konfiguration des Servers
- Starten Sie das Konfigurationstool
- Wechseln Sie auf die Seite "Benutzer" und klicken Sie auf den Button "Neuer Benutzer" und geben Sie einen Benutzernamen an. Dabei ist darauf zu achten das nicht alle FTP Clients mit Leerzeichen und Sonderzeichen in Benutzernamen klarkommen. Also am beste keine dieser Zeichen im Benutzernamen verwenden
- Klicken Sie im Fenster den Benutzer an und geben Sie ein Passwort an oder wählen Sie Anonymous
- Wechseln Sie nun auf das Register "Dirfiles"
- Wählen Sie "Neues Dirfile anlegen" und geben Sie einen Namen ein. Es macht sich gut viel sagende Namen zu vergeben.
- Wählen Sie das Dirfile aus und wählen Sie unter Verzeichnisse das "Stammverzeichnis"
- Klicken Sie auf den Button "Neues Verzeichnis" und geben Sie einen Namen ein
- Wählen Sie den Button "..." und suchen Sie das Verzeichnis das Sie freigeben wollen
- Legen Sie die Berechtigungen fest (Achtung: Zum Uploaden ist meist "Umbenennen" mit erforderlich da viele FTP Clients erst eine .part Datei anlegen diese später umbenennen)
- Weisen Sie nun unserem Benutzer das Dirfile zu, in dem Sie das Dirfile auswählen und "Bearbeiten" unter der Benutzertabelle klicken oder in dem Sie den Benutzerauswählen und auf Bearbeiten unter der Dirfiletabelle klicken.
- Ziehen Sie das Dirfile oder den Benutzer auf die "Verwendet" Seite
- Wechseln Sie nun auf den Reiter "Globale Einstellungen" und passen Sie den Prozess Benutzer an den auf ihrem System eingerichteten FTP Benutzer an
- Tippen Sie noch eine kleine Begrüßungsnachricht ein (Darauf achten das die Nachricht kleiner als die MTU der Netzwerkschnittstelle ist meist 1500 Zeichen.)
- Wählen Sie nun Datei->Konfiguration Speichern und geben Sie einen Dateinamen an(am besten userdb dann brauchen Sie das Script nicht zu ändern)
- Damit ist die Konfiguration abgeschlossen
Starten des FTP Servers
- Öffnen Sie eine Konsole und wechseln Sie zu SuperUser
- Schauen Sie nach ob das Script ihrer Konfiguration entspricht (zum testen am besten das -l xmlftp.log entfernen)
- Starten Sie das Script
Unter Windows
XmlftpC.Net befindet sich noch in der Entwicklungsphase und ist deshalb noch nicht verfügbar. |
Installation und Download
Hinweis: Zum Ausführen von XmlftpC.Net wird das Microsoft .NET 2 Framework benötigt.
- Download und Installation im FeM-Net unter Xmlftp. Getestet ist das ganze mit Internet Explorer 6/7 und Opera 8.5/9.
- Die Installation basiert auf der ClickOnce-Technologie von Microsoft. Der eigentlich FTP-Server wird Bestandteil des Pakets werden.
Updates
Beim Start von XmlftpC.Net wird automatisch geprüft, ob Updates verfügbar sind. Dies ist nur möglich, wenn eine Verbindung zu Xmlftp besteht.
Konfiguration des Servers
Die Konfigurations-Anleitung folgt noch...
Start des Servers
Der FTP Server wird unter Windows am besten durch XmlftpC.Net gestartet. Alle Logging-Ausgaben des Servers werden an XmlftpC.Net gesendet. Ein automatischer Start des Servers beim Systemstart wird durch den Startparamater /autostart initialisiert. Zu beachten ist, dass der Server erst nach der Anmeldung am System startet, da er nicht als Dienst realisiert ist.
Details
Konfiguration
Die Konfiguration des XMLFTP Servers soll, wie in der Einleitung bereits erwähnt, so einfach wie möglich werden. Um diesen Anspruch gerecht zu werden gibt es bereits ein grafisches Konfigurationstool namens XMLFTP Konfiguration.
Für anspruchsvollere Anwender gibt es natürlich auch die Möglichkeit die Konfigurationsdateien mit der Hand zu editieren.
Die Konfigurationsdateien unterteilen sich in zwei Gebiete. Einmal die Datei welche die Information über die Benutzer enthält und welche im weiteren auch die allgemeine Serverkonfiguration enthalten wird. Die anderen Konfigurationsdateien, die im Weiteren als DirFiles bezeichnet werden, enthalten die verschiedenen Verzeichnisstruckturen.
Alle Konfigurationsdateien sind, um sie übersichtlicher zu machen, in einer XML ähnlichen Syntax gehalten.
Die Allgemeine und Benutzerkonfiguration
Befehl | Funktion |
---|---|
<userdb> </userdb> | Diese Tag-Kombination umschließt eine ganze Benutzerkonfigurationsdatei und markiert sie damit als solche. |
<user> </user> | Hiermit wird ein neuer Benutzer angelegt. |
<name> </name> | Hiermit wird der Name des Benutzers festgelegt. Dieses Tag darf pro Benutzer nur einmal verwendet werden. |
<password> </password> | Dies legt das Benutzerpasswort fest. Wird dieses Tag für diesen Benutzer nicht angegeben dann handelt es sich bei diesem Benutzer um einen Anonymousbenutzer. Auch dieser Befehl darf pro Benutzer nur einmal benutzt werden. |
<dirfile> </dirfile> | Hiermit legt man den Dateinamen für des oder der DirFiles fest die die Verzeichnisstruktur für den Benutzer definieren sollen. |
<global> </global> | Dieses Tag leitet die globalen Einstellungen ein |
<interface> </interface> | Dies legt fest auf welcher Netzwerkkarte der FTP Server lauschen soll. 0.0.0.0 sind dabei alle Netzwerkkarten |
<user_name> </user_name> | Diese Einstellung gibt an unter welchem Benutzer der FTP Server laufen soll. Dieser Benutzer muss natürlich real im System existieren. |
<welcome_message> </welcome_message> | Dies legt die Wilkommensnachricht fest die der FTP server an den Client senden soll. Dabei ist auf die FTP spezifikation zu achten für diese Nachricht. Desweiteren darf die Nachricht keine Zeilenumbrüche enthalten. Um trozdem eine neue Zeile der Nachricht hinzuzufügen kann man "\n" verwenden. Jede Zeile muss mit "220-" beginnen. Der Server fügt automatisch das abschließende "220 " ein. |
<timeout> </timeout> | Zwischen diesen Tags kann man die Zeit in Sekunden angeben, die zwischen zwei Befehlen verstreichen muss, bis ein Timeout auftritt. Die Minimale hier einzustellende Zeit beträgt 20s. Ausserdem garantiert der Server kein hartes Timing. Das Timout trit, bei wenig Last auf dem Server, spätestens nach der doppelten Timeoutzeit auf. Bei hoher Last auf dem Server kommt es zum Timeout bereits nach dem Ablaufen der angegebenen Zeit. Wird das Tag nicht angegeben so nimmt der Server 20s Timeout an. |
Beispiel für eine Konfigurationsdatei
<userdb> <user> <name>test</name> <password>strenggeheim</password> <dirfile>dirfile.xml</dirfile> <dirfile>test.xml</dirfile> <dirfile>upload.xml</dirfile> </user> <user> <name>anonymous</name> <dirfile>anonymous.xml</dirfile> <dirfile>upload.xml></dirfile> </user> <global> <interface>0.0.0.0</interface> <user_name>ftp</user_name> <welcome_message>220-Testversion\n</welcome_message> <timeout>120</timeout> </global> </userdb>
Die Dirfiles
Befehl | Funktion |
---|---|
<dirfile> </dirfile> | Diese Tag-Kombination umschließt eine ganze DirFiledatei und markiert sie damit als solche. |
<dir> </dir> | Mit diesem Tag erstellt man ein Verzeichnis. Diese Tags können verschachtelt werden um Verzeichnisbäume zu repräsentieren |
<file> </file> | Hiermit definiert man virtuelle Dateien |
<name> </name> | Mit diesem Tag legt man den Namen des Verzeichnisses oder der Datei fest. |
<path> </path> | Hiermit kann man ein Virtuellesverzeichnis auf ein beliebiges Realesverzeichnis mappen.
Das heißt das der real existierende Verzeichnisbaum an dieser Stelle in den virtuellen Verzeichnisbaum eingebunden wird. Wird diese Tag angegeben wenn es sich um eine virtuelle Datei handelt dann gibt diese Tag das Plugin an welches verwendet werden soll. |
<perm_read/> | Das erlaubt es das Verzeichnis zu lesen (anzeigen und Dateien Downloaden) |
<perm_write/> | Hiermit kann man das Hochladen der Dateien erlauben |
<perm_delete/> | Das erlaubt das Löschen von Dateien. Das Recht ist nur wirksam wenn auch gleichzeitig <perm_write/> mit angegeben wurde |
<perm_rename/> | Hiermit kann das umbenennen von Dateien erlaubt werden. Auch dieses Recht ist nur wirksam wenn zusätzlich auch <perm_write/> mit angegeben wurde. |
<perm_csub/> | Dieses Recht erlaubt es Unterverzeichnisse zu erstellen. Diese Unterverzeichnisse haben dann alle Rechte wie das Verzeichnis in dem sie erstellt wurden. Diese Recht ist nur gültig wenn auch <perm_write/> mit angegeben wurde. |
Beispiel für ein DirFile
<dirfile> <dir> <name>Bilder</name> <path>/home/benutzer/bilder</path> <perm_read/> </dir> <dir> <name>Upload</name> <path>/home/ftp/upload</path> <perm_read/> <perm_write/> <perm_rename/> <perm_csub/> </dir> <dir> <name>Virtuelles_Verzeichniss1</name> <perm_read/> <dir> <name>Unterverzeichniss</name> <perm_read/> <dir> <name>Sub1</name> </dir> </dir> <dir> <name>Unterverzeichniss2</name> </dir> </dir> <dir> <name>VirtualFiles</name> <perm_read/> <file> <name>rcon_plugin</name> <perm_read/> <path>plugins/rcon.so</path> </file> </dir> </dirfile>
Die Startparameter des FTP Servers
Befehl | Funktion |
---|---|
-u [Name der Konfigurationsdatei] | Mit diesem Parameter kann man den Server mit einer anderen Konfigurationsdatei starten. Windowsbenutzer müssen diesen Parameter angeben. |
-l [Name des Logfile] | Mit diesem Parameter leitet man die Ausgabe des FTP-Logs in eine Datei um. Wird dieser Parameter nicht angegeben so erscheint der Log im Stdout. |