Xmlftp: Unterschied zwischen den Versionen
Zeile 162: | Zeile 162: | ||
|RMD | |RMD | ||
− | !style="background:# | + | !style="background:#7FFF00"|Ja |
| | | | ||
|- | |- |
Version vom 2. November 2006, 11:25 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 |
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. |
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> </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>