PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : proftpd und /srv/www/htdocs



westerjork83
13.06.05, 20:49
Hallo,

ich habe einen vserver mit SuSE 9.0. Auf diesem läuft proftpd. Jeder user kann sich auch in seinem home Verzeichnis anmelden. Was aber muß man machen, damit ich per ftp auf das Verzeichnis /srv/www/htdocs des http daemons komme?

Gruß Arne

Tomek
13.06.05, 21:25
Das Homeverzeichnis des Users auf dieses Verzeichnis einstellen, oder VHosts [1] oder das Modul Userdir [2] benutzen.

Links:
[1] http://httpd.apache.org/docs-2.0/vhosts/
[2] http://httpd.apache.org/docs-2.0/mod/mod_userdir.html

Jesaja
13.06.05, 21:27
Ich habs bei mir so geregelt, dass ich mit mount --bind die Verzeichnisse verlinkt hab.

patator
14.06.05, 09:01
Hallo,
ich setzte Linux 9.2 und das Paket LAMPP mit PROFTPD ein.
FTP klappt.
Benuter sind nach dem anmelden direkt in ihren Verzeichnissen.
Leider können die User i höhere Verzeichnisse wechsel, das möchte ich verhindern.
Eingestellt ist in der proftpd.conf:

DefaultRoot ~ !ftpuser # das sind die user die reindürfen

Verzeichnisstruktur:
/home/ # und halt die einzelnen Userverzeichnisse.
Die USer habe als Shell /bin/false.
Leider können die bis ins root wechseln.
Habt ihr vielleicht einen Tip?
Danke schon mal im voraus.

marce
14.06.05, 09:08
irgendwo in de conf müsste es eine Einstellung dafür geben, dass die Benutzer in ihr Home-Verz. gechrooted werden...

Tomek
14.06.05, 09:19
http://www.proftpd.de/Direktiven.54.0.html#38

patator
14.06.05, 09:28
Die direktiven hab ich ja laut der Anleitung eingetragen.
Wie gesagt, der User kommt aus dem Verzeichnis wieder raus.
Es gibt oben noch ne Einstellung von Username und Usergruppe, da steht aber die ftpuser Gruppe drin.

marce
14.06.05, 09:30
... den Server dann auch neu gestartet?

patator
14.06.05, 09:30
..klar nach jeder Einstellung mach ich das.

patator
14.06.05, 09:34
Hier der Inhalt von proftpd.conf:


# /etc/proftpd.conf
# created by bitworld
# Proftpd
# Date: 20.03.2004

#------------------------------------------------------------------------------
# Allgemeine Informationen
#------------------------------------------------------------------------------

# Installation unter SuSE:

# 1. Unter www.proftpd.de die aktuelle Version downloaden.
# 2. Entpacken mit "tar -zxf <Paketname>"
# 3. ./configure --enable shadow --prefix=/usr/local/ --sysconfdir=/etc
# 4. make
# 5. make install
# 6. Kopieren von dieser Datei nach "/etc"
# 7. Wenn man den ftpd über die inetd.conf starten möchte, deaktiviert man
# alle anderen Zeilen mit ftp am Anfang mit einem "#". Dann fügt man
# folgende Zeile ein:
# ftp stream tcp nowait root /usr/local/sbin/proftpd proftpd
# Danach den inetd neu starten mit: /etc/init.d/inetd restart.
# 8. Ansonsten in der proftpd.conf den ServerType auf standalone stellen.

#------------------------------------------------------------------------------

# Folgende Ports müssen freigeschaltet werden.

# TCP:

# UDP:


#================================================= =============================
# Grundeinstellungen
#================================================= =============================

# Gibt den Namen des Servers an, den der User sieht.
# Standard: "ProFTPD Server [version]"
ServerName "PATATORs FTP-Server"

#------------------------------------------------------------------------------

# Gibt die E-Mail Adresse des Admins an.
# Standard: root@[ServerName]
ServerAdmin patator@patator.de

#------------------------------------------------------------------------------

# Gibt an, auf welche Weise der Server gestartet wird. Als "standalone" wird
# der Server manuell oder per Script über den Runlevel, oder als Dienst der in
# der "inet.d" eingetragen ist.
# Standard: standalone
ServerType standalone

#------------------------------------------------------------------------------

# Gibt an, auf welchen Port der Server im Standalone auf ankommende Verbindung
# lauscht. Die Anweisung hat keine Funktion im inetd Modus. Diese Anweisung
# kann auch in Verbindung mit <VirtualHost> benutzt werden, um verschiedene
# FTP Server auf einer IP, jedoch auf verschiedene Ports, zu betreiben.
# Standard: 21
Port 21

#------------------------------------------------------------------------------

# Schränkt den Antwortkanal ein
# PassivePorts restricts the range of ports from which the server will select
# when sent the PASV command from a client. The server will randomly choose a
# number from within the specified range until an open port is found. Should
# no open ports be found within the given range, the server will default to a
# normal kernel-assigned port, and a message logged. The port range selected
# must be in the non-privileged range (eg greater than or equal to 1024); it
# is STRONGLY RECOMMENDED that the chosen range be large enough to handle many
# simultaneous passive connections (for example, 49152-65534, the IANA-
# registered ephemeral port range.
#PassivePorts 5000 5100
PassivePorts 5000 5100

#------------------------------------------------------------------------------

# The ServerIdent directive sets the default message displayed when a new
# client connects. Setting this to off displays "[hostname] FTP server ready."
# If set to on, the directive can take an optional string argument, which will
# be displayed instead of the default text. Sites desiring to give out minimal
# information will probably want a setting like ServerIdent on "FTP Server
# ready.", which won't even reveal the hostname.
# Standard: ProFTPD [version] Server (server name) [hostname]

ServerIdent on

#------------------------------------------------------------------------------

# Gibt an, welche Server Konfiguration verwendet wird, wenn eine ankommende
# Verbindung für eine IP Adresse bestimmt ist, die weder die Primäre IP Adresse
# vom Rechner ist, noch in einem <VirtualHost> Block angegeben ist.
# Normalerweise wird solchen unbekannten Verbindungen eine "no server available
# to service your request" Nachricht geschickt und die Verbindung unterbrochen.
# Wenn "DefaultServer" gesetzt ist (sei es in der normalen Server konfiguration
# oder in einem virtuellen Server), so werden alle unbekannten Verbindung von
# diesem Standard Server bearbeitet. Es kann nur ein Server als Default gesetzt
# werden.
# Standard: off
DefaultServer on

#------------------------------------------------------------------------------

# Gibt die Standard Datei-Rechte für neu erstellte Dateien oder Ordner an.
# Standard: None
Umask 022
ListOptions "-A"


#------------------------------------------------------------------------------

# Gibt an, unter welchem User der Server normalerweise läuft. Standardmäßig
# läuft der Server unter "Root", was natürlich unerwünscht ist. Die "User" An-
# weisung in Verbindung mit der "Group" Anweisung gibt an, daß der Server
# schnellstmöglich nach dem Start zu diesen User/Gruppe wechselt.
# Standard: root
User ftp

#------------------------------------------------------------------------------

# Die "Group" Anweisung gibt an, unter welcher Gruppe der Server normalerweise
# läuft.
# Standard: root
Group ftpuser

#------------------------------------------------------------------------------

# Normalerweise, wird bei eingehenden aktiven Datenverbindungen und ausgehen-
# den passiven Datenverbindungen eine DNS Abfrage (reverse DNS) gemacht, um
# die IP aufzulösen. In einer chrooten Umgebung (wie z.B. <Anonymous> oder
# DefaultRoot), ist die /etc/hosts Datei nicht erreichbar und die einzigste
# Möglichkeit ist die Auflösung per DNS Abfrage. Sollte aus gewissen Gründen
# diese Abfrage nicht möglich sein, wird proftpd solange blockiert, bis ein
# Timeout signalisiert wird. Hier sollte dann die Abfrage disabled werden.
# Standard: on
UseReverseDNS off

#------------------------------------------------------------------------------

# Normally, when a client initially connects to proftpd, the ident protocol
# (RFC1413) is used to attempt to identify the remote username. This can be
# controlled via the IdentLookups directive.
# Standard: on
IdentLookups off

#------------------------------------------------------------------------------

# Normalerweise erlaubt ProFTPD keine Anmeldung als Root. Sollte ein Client
# dieses Versuchen und dabei das richtige Password benutzen, wird per syslog
# eine Meldung verschickt, die Anmeldung aber (natürlich) verweigert. Mit
# dieser Anweisung kann man nun root erlauben, sich ebenfalls per FTP anzumelden.
# Anmerkung: Bei FTP wird das Passwort unverschlüsselt übertragen. Wer
# dieses ernsthaft bei einem Server erlaubt, kann genauso gut wieder auf
# Windows 98 umsteigen und alle Verzeichnisse freigeben.
# Standard: off
RootLogin off

#------------------------------------------------------------------------------

# Definiert eine alternatives "passwd" Datei, die das gleiche Format wie das
# normale "/etc/passwd" file hat. Diese Datei kann dann zur Authentifizierung
# der User herangezogeb werden. "AuthUserFile" kann pe virtuellen Host an-
# gegeben werden, so dass fuer jeden viruellen Host eine Users Verwaltung
# moeglich ist. Ausserdem kann so die Userverwaltung fuer FTP relativ einfach
# von den normalen Systemusern getrennt werden.
# Das File muss NICHT innerhalb der chroot()ed directory Verzeichnisstruktur
# liegen, da es waehrend der gesamten Verbindungszeit offen bliebt.
AuthGroupFile /etc/group

#------------------------------------------------------------------------------

# Die "DeleteAbortedStores" Anweisung bestimmt, ob PROFTPD abgebrochende
# Uploads wieder löschen soll.
# Standard: off
DeleteAbortedStores off

#------------------------------------------------------------------------------

# Die "ShowSymlinks" Anweisung bestimmt ob symbolische Links ünterstützt werden.
# Standard: on
ShowSymlinks on

#------------------------------------------------------------------------------

# Die "DeferWelcome" Direktive verzögert für einen Master oder Virtuellen
# Server die Übermittlung vom Server Namen und Adressen, bis der Client sich
# erfolgreich angemeldet hat. Ist diese Direktive aktiv, wird die anfängliche
# Willkommensnachricht keine Informationen über Server etc. preisgeben.
# Standard: off
DeferWelcome on


#================================================= =============================
# Meldungen
#================================================= =============================

# Gibt die ASCII-Text Datei an, das dem User sofort nach seinem Login angezeigt
# bekommt. Der Filenamen kann entwerder absolut oder relativ angegeben werden.
# Im Falle eines relativen Filenamen wird das erste Verzeichnis durchsucht, in
# dem sich der Benutzer nach dem Login befindet.
# ACHTUNG: bei chroot(ed) Verzeichnissen, bei denen also der User in ein
# Verzeichnis eingesperrt ist, muss das Textfile innerhalb dieses Verzeichnis
# erreichbar sein. Bei unterschiedlichen Verzeichnisse (z.B. User in /home,
# Gast in /net) muß man ggf. mit Links arbeiten.
# Wenn das File nicht gefunden wird, dann wird nichts anzeigt, auch keine
# Fehlermeldung wird geloggt.
# Folgende Platzhalter können in dem Textfile benutzt werden:
# %T aktuelle Zeit
# %F verfügbarer Platz auf dem Dateisystem
# %C aktuelles Verzeichnis
# %R Remote Rechner Name
# %L Lokaler Rechner Name
# %u Benutzername, der vom ident Protokoll übergeben wurde
# %U Benutzername, der beim Login übergeben wurde
# %M maximale Anzahl von Verbindungen
# %N aktuelle Anzahl von Verbindungen
# %E Email Adresse vom Admin
# %x der Name der Benutzer Klasse
# %y aktuelle Anzahl der Verbindung in der Klasse des Users
# %z maximale Anzahl der Verbindung in der Klasse des Users
# Standard: None
DisplayLogin .login

#------------------------------------------------------------------------------

# Gibt die ASCII-Text Datei an, die dem User beim ersten Wechsel in ein Ver-
# zeichnis per FTP Verbindung angezeigt wird. Die Datei wird außerdem angezeigt,
# wenn PROFTPD erkennt, daß das Verzeichnis seit dem letzten Besuch geändert
# wurde. Wenn der Dateiname relativ angeben wurde, wird zuerst das Verzeichnis
# durchsucht, in das der User wechselt. Es gelten die gleichen Beschränkungen
# und Variablen, die unter "DisplayLogin" angegeben sind.
# Standard: None
DisplayFirstChdir .firstchdir

#------------------------------------------------------------------------------

# Gibt die ASCII-Text Datei an, die dem User angzeigt wird, nachdem er zum
# Server connected hat, jedoch bevor er einloggt.
# Die angegebene Datei kann entweder relativ oder absolut angeben werden. Im
# Falle einer relativen Angabe, wird die Datei zuerst im Homeverzeichnis des
# unter "User" angegebenen Benutzers gesucht. Da dieses zu Unklarheiten führen
# kann, wird empfohlen mit absoluten Pfadangaben zu arbeiten. Es gelten die
# Variablen, die unter "DisplayLogin" angegeben sind.
# Standard: None
DisplayConnect .connect

#------------------------------------------------------------------------------

# Gibt die ASCII-Text Datei an, das dem User angezeigt wird, wenn er die
# Verbindung beendet. Die Angabe kann wie immer relativ oder absolut erfolgen.
# Bei relativer Angabe wird die Datei im Verzeichnis gesucht, in dem sich der
# User gerade befindet. Daher sind absolute Pfadangaben im Normalfall zu
# bevorzugen. Es gelten die gleichen Beschränkungen und Variablen, die unter
# "DisplayLogin" angegeben sind.
# Standard: None
DisplayQuit .quit

#------------------------------------------------------------------------------

# Gibt die ASCII-Text Datei an, die dem User angezeigt wird, wenn von seiner
# Klasse zu viele Benutzer eingeloggt sind und sein Login abgelehnt wird.
# Es gelten die gleichen Beschränkungen und Variablen, die unter "DisplayLogin"
# angegeben sind.
# Standard: None
DisplayGoAway .goaway

#------------------------------------------------------------------------------

# Unterrichtet den User von der letzten Änderung einer (oder mehrerer) Dateien.
# Pro Konfiguration darf nur eine "DisplayReadme" Anweisung benutzt werden.
# Beispiel 1: "DisplayReadme README" ergibt:
# Please read the File README it was last modified on SUN Oct 17 10:36:14 1999
# - 0 days ago
# Beispiel 2: "DisplayReadmePattern README*" ergibt:
# Please read the file README it was last modified on Tue Jan 25 04:47:48 2000
# - 0 days ago. Please read the file README.first it was last modified on Tue
# Jan 25 04:48:04 2000 - 0 days ago
# Standard: None
# DisplayReadme README


#================================================= =============================
# Beschränkungen
#================================================= =============================

# Gibt einen regulären Ausdruck an, der nicht als Kommando gesendet werden
# darf. Wird der reguläre Ausdruck gefunden, so wird ein "Forbidden Command" an
# den Client gesendet. Dieses ist u.a. sinnvoll um gewisse Befehlskombinationen
# zu verbieten.
# Standard: None
DenyFilter "%"

#------------------------------------------------------------------------------

# Gibt an, wie viele Child Prozesse vom Haupt PROFTPD Prozess im Standalone
# Modus erzeugt werden können. Diese Anweisung hat keine Auswirkung, wenn man
# den Server im Inetd Modus betreibt. Da jeder Tochterprozess auch eine
# einzelne Verbindung mit einem Client darstellt, kontrolliert diese Anweisung
# auch die maximale Anzahl gleichzeitiger Verbindungen. Über diese Anzahl
# hinausgehende Verbindungen werden mit syslogd protokolliert und ohne Meldung
# beendet. Diese Anweisung kann dazu verwendet werden, Denial-Of-Service
# Attacken zu verhindern, die durch eine Unmenge von Verbindungsaufrufen eine
# "Fork-Bomb" erzeugen wollen.
# Standard: None
MaxInstances 10

#------------------------------------------------------------------------------

# Gibt die maximale Anzahl der angemeldeten Clients (inklusive anonymen Zugang)
# an Server an. Ist dieses Limit erreicht, werden neuen Verbindungen beim
# Anmelden unterbrochen. Die spezielle Angabe "none" entfernt alle Verbindungs-
# beschränkungen. Es kann eine optionale Nachricht übergeben werden, die dem
# Client unmittelbar vor dem Abbruch der Verbindung angezeigt wird, falls der
# Maximalwert erreicht wird. Als Platzhalter kann "%m" in der Nachricht
# übergeben werden, die die maximale Anzahl enthält. Wird keine Nachricht über-
# geben, so wird die Standard Meldung benutzt.
# Standard: None
MaxClients 15 "Sorry, es sind bereits %m User verbunden! Bitte probier es später nocheinmal."

#------------------------------------------------------------------------------

# Die "MaxClientsPerHost" Anweisung konfiguriert die Maximale Anzahl von
# Clients, die sich von einem Rechner einloggen können. Optional kann an-
# gegeben werden, welche Nachricht dem Client geschickt werden soll, falls die
# maximale Anzahl erreicht ist. Wenn keine Nachricht angegeben wird, wird die
# Systemweite Standardnachricht benutzt.
# Standard: none
MaxClientsPerHost 20 "Bitte nicht öfters als 20x verbinden!"

#------------------------------------------------------------------------------

# Die "MaxClientsPerUser" Anweisung konfiguriert die Maximale Anzahl von
# Clients, die sich gleichzeitig mit einem Usernamen einloggen können.
# Optional kann angegeben werden, welche Nachricht dem Client geschickt werden
# soll, falls die maximale Anzahl erreicht ist. Wenn keine Nachricht angegeben
# wird, wird die Systemweite Standardnachricht benutzt.
# Standard: none
MaxClientsPerUser none "Sorry, es sind bereits %m User verbunden! Bitte probier es später nocheinmal."

#------------------------------------------------------------------------------

# Die "MaxLoginAttempts" Anweisung gibt an, wie oft ein Benutzer versuchen kann
# sich anzumelden. Nachdem die Anzahl (erfolglos) erreicht ist, wird der
# Benutzer getrennt und eine Mitteilung wird mittels syslog protokolliert.
# Standard: 3
MaxLoginAttempts 10

#------------------------------------------------------------------------------

# "AllowFilter" erlaubt die Erstellung regulärer Ausdrücke, die allen über-
# mittelten Kommandos an proftpd entsprechen müssen. Dieses ist sehr sinnvoll,
# um zu verhindern, daß mittels übermittelter Zeichenfolgen eventuelle Angriffe
# gegen PROFTPD geführt werden. Der reguläre Ausdruck wird gegen den gesamten
# übermittelten Befehl ausgeführt, daher sollte man bei der Erstellung der
# Ausdrücke sehr sorgfältig sein. Sollte der übermittelte Befehl den Test
# nicht bestehen, so wird dem Client ein "Forbidden Command" übersendet. Die
# Übermittlung von Passwörtern (PASS Befehl) wird NICHT geprüft! Sollte der
# reguläre Audruck Leerzeichen enthalten, so sind diese in Anführungszeichen
# zu setzen.
# AllowFilter

#------------------------------------------------------------------------------

# Normalerweise, erlaubt PROFTPD nicht, daß Clients in Verbindung mit dem
# "PORT" Befehl eine andere als deren eigene Adresse (die Source Adresse von
# der FTP Controll Verbindung) verwendet. Außerdem werden keine priviligierten
# Ports erlaubt. Dem Client wird ein "Invalid Port" Fehler übermittelt und eine
# Meldung wird mittels "syslog" protokolliert (entweder "Adress Mismatch" oder
# "Bounce Attack"). Wird diese Anweisung freigegeben, erlaubt PROFTPD Daten-
# adressen, die nicht mit der Client Adresse übereinstimmt. Dieses erlaubt
# u.a. FXP Filetransfer, die es erlaubt zwischen zwei FTP Servern Daten zu
# übertragen, ohne direkt in den Transfer involviert zu sein. Aus Sicherheits-
# gründen ist dieses jedoch nicht zu empfehlen.
# Standard: off
AllowForeignAddress on

#------------------------------------------------------------------------------

# Standardmäßig überprüft ProFTPD, ob das Verzeichnis in das geloggt wird ein
# symbolischer Link ist. Ist das der Fall, verweigert der Server das loggen
# sofern dieses durch diese Direktive nicht ausdrücklich erlaubt ist.
# Anmerkung zur Sicherheit: Dieser Verhalten sollte aus Sicherheitsgründen
# nicht erlaubt werden. Wenn man dem Server erlaubt symbolische Links mit Root
# Privilegien zu öffnen, risikert man ggf. symlink Attacken, wobei der Server
# ausgetrickt wird und ggf. wichtige Systemfiles überschreibt.
# Standard: off
AllowLogSymlinks on
# VRootEngine on
# VRootOptions allowSymlinks

#------------------------------------------------------------------------------

# Normalweise sucht ProFTPD in den ausgewählten Verzeichnissen nach
# ".ftpaccess" Files und versucht diese auszuwerten. Diese Files entsprechen
# in etwa den Apache ".htaccess" files und sind eine Art Mini Config Files,
# die nur für ein bestimmtes Verzeichnis gelten. Mit dieser Direktive kann man
# nun einstellen, ob ProFTPD diese Files auswertet oder nicht.
# Die optionale Angaben können benutzt werden, um die Auswertung von .ftpaccess
# Files auf gewisse User, Gruppen oder Klassen zu limitieren.
# Standard: on
AllowOverride off

#------------------------------------------------------------------------------

# Die "AllowOverwrite" Anweisung erlaubt mit neu übertragenden Files bereits
# existierende zu überschreiben. Standardmäßig ist es FTP Clients nicht
# erlaubt existierende Dateien zu überschreiben.
# Standard: off
AllowOverwrite off

#------------------------------------------------------------------------------

# Die "AllowRetrieveRestart" Anweisung erlaubt bzw. verbietet es FTP clients
# einen abgebrochenden FTP download mittels dem "FTP REST" Befehl wieder aufzu-
# nehmen. Sandardmäßig ist es den Clients erlaubt, abgebrochende Downloads
# wieder aufzunehmen.
# Standard: on
AllowRetrieveRestart on

#------------------------------------------------------------------------------

# Die "AllowStoreRestart" Anweisung erlaubt bzw. verneint das wiederaufnehmen
# von abgebrochenen Uploads (mittels der "REST" Anweisung. Standardmäßig ist
# dieses nicht erlaubt. Speziell bei anonymen FTP muß man aufpassen, da hier
# ggf. Clients erlaubt wird, bestehende Files zu vergrössern und sie somit
# zu zerstören.
# Standard: off
AllowStoreRestart off


#================================================= =============================
# Timeouts
#================================================= =============================

# Zeit bis zur Trennung ohne Datenverkehr
TimeoutStalled 300

#------------------------------------------------------------------------------

# Zeit für Login
TimeoutLogin 30

#------------------------------------------------------------------------------

# Zeit bis zur Trennung ohne Datenverkehr (Daten und Kontrollleitung)
TimeoutIdle 300

#------------------------------------------------------------------------------

# Maximale Zeit ohne eine Datenverbindung
TimeoutNoTransfer 600


#================================================= =============================
# Logging
#================================================= =============================

# In dieser Datei werden aktuelle Verbindungen gespeichert
# ScoreboardFile /var/log/proftpd/proftpd.scoreboard

#------------------------------------------------------------------------------

# In dieser Datei werden die transferierten Dateien protokolliert
TransferLog /var/log/proftpd/xferlog

#------------------------------------------------------------------------------

# Standardformat der Default-Logdatei
LogFormat default "%h %a %l %u %U %t \"%r\" %s %b %f"

#------------------------------------------------------------------------------

# Standardformat der Authentifizierungs-Logdatei
LogFormat auth "%v [%P] %h %t \"%r\" %s"

#------------------------------------------------------------------------------

# Standardformat der Zugriffs-Logdatei
LogFormat access "%h %a %l %u %U %t \"%r\" %s %b %f"

#------------------------------------------------------------------------------

# Ort der Zugriffs-Logdatei
ExtendedLog /var/log/proftpd/log_access ALL default #access

#------------------------------------------------------------------------------

# Ort der Authentifizierungs-Logdatei
ExtendedLog /var/log/proftpd/log_auth AUTH auth

# ExecEngine on
# ExecLog /var/log/proftpd/exec.log
# ExecBeforeCommand user /250gb/ftp/t
# ExecOptions logStderr sendStdout logStdout


#================================================= =============================
# Global-Abschnitt
#================================================= =============================
# Der <Global>-Konfigurationsblock beinhaltet die Anweisungen, die sowohl für
# den Hauptserver, als auch für alle <VirtualHost>-Server gilt. Die meisten
# Anweisungen, jedoch nicht alle, können innerhalb des <Global>-Konfigurations-
# blockes verwendet werden. Es können in einer Konfiguration mehrere <Global>-
# Blöcke enthalten sein. Diese werden beim Start des Servers zu einem Block
# zusammengefügt. Der <Global>-Konfigurationsblock wird mit <Global> begonnen
# und muss mit </Global> geschlossen werden.

<Global>
</Global>


#================================================= =============================
# Anonymous-Abschnitt
#================================================= =============================
# Der "Anonymous" Block in der Konfiguration wird benutzt, um einen anonymen
# FTP Zugang einzurichten. Er wird mit </Anonymous> beendet. Das übergebene
# Root Directory gibt an, in welches Verzeichnis der PROFTPD-Dämon zuerst
# wechseln - und unmittelbar nach dem Login "chrooten" wird. Nachdem die
# Chroot-Operation erfolgreich beendet ist, sind höhere Verzeichnisebenen für
# den Benutzer nicht mehr sichtbar. Standardmäßig vermutet PROFTPD einen
# anonymen Login, wenn der Benutzer versucht sich mit demselben Benutzernamen
# anzumelden, unter dem der Server läuft. (außer root, hier ist ein anonymer
# Zugang nicht erlaubt). Um PROFTPD zu zwingen, den anonymen Zugang einem
# anderen Benutzer zuzuordnen, siehe Dir bitte die "USER" & "GROUP" Anweisung
# an. Sollte im anonymen Konfigurationsblock eine "USER" oder "GROUP" Anweisung
# stehen, wird der Dämon auf diesen Werte wechseln, bevor er den "Chroot"
# Vorgang ausführt. Normalerweise wird beim anonymen Zugang kein Passwort
# benötigt. Vielmehr wird erwartet, dass eine gültige Email-Adresse statt eines
# Passwortes angegeben wird (diese wird auch protokolliert). Wenn dieses
# Verhalten nicht gewünscht ist, kann dies im <Anonymous>-Konfigurationsblock
# durch die Anweisung "AnonRequirePassword" geändert werden.
# Anmerkung: "Chrooted" Anonyme Verzeichnisse benötigen keine gesonderten
# Systemfiles bzw. irgendeine Verzeichnisstruktur. Dieses liegt daran, dass
# PROFTPD so programmiert wurde, die nötigen Systeminformationen vor dem Chroot
# anzufragen und diese Dateien offen zu lassen.

# <Anonymous /~>

# </Anonymous>


#================================================= =============================
# VirtualHost-Abschnitt
#================================================= =============================
# Der "VirtualHost" Block in der Konfiguration wird benutzt, um eine
# unabhängige Konfiguration für eine spezielle IP bzw. für einen speziellen
# Hostnamen zu erstellen. Es wird oft benutzt in Verbindung mit System
# basierten IP Aliasing oder Dummy Netzwerk Schnittstellen, um einen oder
# mehrere "virtuelle" Server auf einem Server laufen zu lassen. Mittels der
# "Port" Anweisung innerhalb eines "VirtualHost" Blockes kann man mehrere
# virtuelle Server unter einer IP auf einem Server laufen lassen, die durch
# verschiedene Ports angesprochen werden. Dieses ist jedoch nur im Standalone
# Modus möglich! Ein "VirtualHost" Block beginnt mit "<VirtualHost>" und wird
# mittels " </VirtualHost>" beendet.

# <VirtualHost>

# </VirtualHost>

#================================================= =============================
# Freigaben
#================================================= =============================

#------------------------------------------------------------------------------
# Die "<Directory>" Anweisung erstellt einen Block von Anweisungen, die ein
# spezielles Verzeichnis und seine Unterverzeichnisse betreffen. Der Block
# endet mit </Directory>. Jede <Directory> Anweisung wird zur Laufzeit
# ausgewertet und die Verzeichnisangabe, die am ehesten passt, wird verwendet.
# Das bedeutet, dass jede <Directory> Angabe die Unterverzeichnisse mit ein-
# schließt, bis ggf. eine weitere <Directory> Anweisung ein Unterverzeichnis
# näher definiert.
# Anmerkung: Dieses trifft nicht auf die <LIMIT> Blocks zu, die durch alle
# Unterverzeichnisse vereerbt werden, solange kein <LIMIT> Block gefunden
# wird, der besser passt.
#
# Ein Schrägstrich und ein Wildcard ("/*") können dem Verzeichnis angehangen
# werden und geben an, dass der Konfigurationsblock nur auf den Inhalt dieses
# Verzeichnisses und seine Unterverzeichnisse zutrifft, nicht aber auf das
# Verzeichnis selbst. Solche Wildcard-<Directory>-Blöcke haben eine höhere
# Priorität als normale <Directory>-Konfigurationsblöcke.
# <Directory>-Blöcke können nicht ??nested?? werden (sie werden automatisch
# während der Laufzeit ??nested?? die auf ihren Namen basiert). Die Namen
# müssen immer absolut sein (ausgenommen sind Angaben innerhalb eines
# <Anonymous>-Block) und sollten sich nicht auf symbolische Links beziehen.
# Namen innerhalb eines <Anonymous>-Blockes können im Verhältnis zu der Wurzel
# des PROFTPD-Servers sein.
# Anmerkungen für ProFTPD 1.1.3 und höher: Pfadangaben, die mit dem Sonder-
# zeichen '~' beginnen und unmittelbar danach keinen Benutzernamen enthalten,
# werden in einen speziellen zurückgestellten Modus gesetzt. Wenn sich ein
# Benutzer anmeldet, wird das ~ durch sein Heimatverzeichnis ersetzt. Dieses
# ermöglicht einen globalen <Directory>-Block, der auf die Heimatverzeichnisse
# oder Unterverzeichnisse aller Benutzer zutrifft.
# Kontext: Server config, <Global>, <VirtualHost>, <Anonymous>
#------------------------------------------------------------------------------

#------------------------------------------------------------------------------
# Die "<Limit>" Anweisung wird benutzt, um FTP Befehle zu erlauben oder zu
# verbieten. Die <Limit> Blöcke gelten solange, daß innerhalb einer
# Konfiguration alle <Directory> und <Anonyme> Blöcke davon betroffen sind, bis
# sie durch eine weitere <Limit> Anweisung aufgehoben wird. Der übergebende
# Befehl kann grundsätzlich jedes gültige FTP Kommando sein, im Regelfall jedoch
# eine der folgende Befehle:
#
# CWD........(Verzeichnis Wechseln)
# MKD........(Verzeichnis erstellen)
# RTFR.......(Umbenennen von), RNTO (Umbennen zu)
# DELE.......(Datei löschen)
# RMD........(Verzeichnis löschen)
# RETR.......(Client empfängt Datei vom Server)
# STOR.......(Client sendet Datei zum Server)
# SITE_CHMOD.(ändert die Rechte einer Datei auf dem Server)
#
# Außerdem sind folgende Befehlsgruppen möglich. Die haben eine niedrigere
# Priorität als "richtige" Befehle, daß bedeutet, daß "richtige" Befehle im
# Zweifelsfall Vorrang haben.
#
# READ.......(alle lesenden Befehle, jedoch NICHT das Verzeichnis
# auflisten z.B. RETR, STAT)
# WRITE......(alle schreibenden Befehle, wie löschen, erstellen,
# umbenennen)
# DIRS.......(alle Befehle, die mit dem Verzeichnis auflisten zu tun
# haben, z.B. LIST, NLST
# ALL........(alle FTP Befehle, identisch mit READ WRITE DIR. Diese
# Gruppe hat die niedrigste Priorität) ^
#
# Das spezielle Kommando LOGIN ist außerdem erlaubt und kann zur Zugangskontrolle
# verwandt werden. Es betrifft Verbindungen oder Anmeldungen an den Server. Wenn
# ein <Limit> mit diesem virtuellen Kommando verwendet wird, kann es verwendet
# werden, um die Anmeldung zu erlauben oder zu verbieten. Es hat keine Wirkung
# und wird ignoriert, wenn es außerhalb der Server Konfiguration (<VirtualHost>,
# <Anonymous>) benutzt wird. Das bedeutet, dass es in einem <Directory>-Block
# bedeutungslos ist.
# Kontext: Server config, <Global>, <VirtualHost>, <Anonymous>, .ftpaccess, <Directory>
#------------------------------------------------------------------------------

#------------------------------------------------------------------------------
# Die "Allow" Anweisung wird innerhalb der "<Limit>" Anweisung benutzt, um
# ausdrücklich einem Rechner oder einem Netzwerk das Ausführen von gewissen
# Befehlen zu erlauben. "Allow" wird üblicherweise in Verbindung mit "Order"
# und "Deny" verwendet, um anspruchsvolle (oder auch nicht) Zugriffskontrollen
# zu ermöglichen. Das Argument "from" in Verbindung mit "Allow" ist nur
# kosmetischer Natur. Die weiteren Argumente müssen eine Liste von Computern
# und/oder Netzwerken sein, denen ausdrücklich Zugang gewährt werden soll.
# Das Schlüsselwort "all" gibt an, das allen Rechnern Zugang gewährt werden
# soll (wie die "AllowAll" Anweisung, jedoch mit geringerer Priorität).
# Das Schlüsselwort "none" gibt an, das keinem Rechner Zugang gewährt werden
# soll. Dieses verhindert jedoch nicht, daß Rechnern ausdrücklich Zugriff
# gegeben werden kann. Wenn "all" oder "none" benutzt werden, darf kein
# weiterer Rechner/Netzwerk angegeben werden.
# Rechner/Netzwerke können entweder numerisch oder mit Namen angegeben werden.
# Aus Sicherheitsgründen ist die Angabe von IP-Nummern dringenst empfohlen,
# da DNS-Server gehackt werden können. Numerische Adressen, die ein gesamtes
# Netzwerk beschreiben, sollten mit "." enden (z.B. "192.168.0." für das
# gesamte 192.168.0 Subnetz). DNS Namen für Netzwerke sollten mit einem "."
# beginnen, also z.B. ".proftpd.org" für das gesamte proftpd.org Netzwerk.
# Die Auswahl kann negiert werden durch die "!" Anweisung, so daß grosse
# Blöcke selektiert werden können, einzelne Rechner jedoch ausgeschlossen
# werden können.
# Kontext: <Limit>
#------------------------------------------------------------------------------

#------------------------------------------------------------------------------
# Die "AllowAll" Richtlinie gibt explizit (wenn alle impliziten Regeln
# versagen) Zugriff zu folgenden Blöcken: "<Directory>", "<Anonymous>",
# "<Limit>". Obwohl das Standardverhalten von PROFTPD der teilweise Zugriff
# auf Objekte durch die "Allow" Anweisung ist, ist dieses implicit. "AllowAll"
# erzeugt einen explizites Zugriff, der alle anderen Anweisungen überschreibt.
# Kontext: <Anonymous>, <Limit>, .ftpaccess, <Directory>
#------------------------------------------------------------------------------

#------------------------------------------------------------------------------
# "AllowGroup" gibt einen Ausdruck für Gruppen an, die speziell zugelassen
# sind. Das Format ist das gleiche wie bei
# "DefaultRoot". Die zugelassenen Gruppen bzw. nicht zugelassenen Gruppen
# (durch ein vorgestelltes "!") sind durch ein Komma (",") getrennt. Der
# gesamte Ausdruck wird als logisches "UND" betrachtet, das heisst, das alle
# Ausdrücke zutreffen müssen.
# Kontext: <Limit>
#------------------------------------------------------------------------------

#------------------------------------------------------------------------------
# "AllowUser" gibt einen Ausdruck für User an, die speziell zugelassen sind.
# Das Format ist das gleiche wie bei "AllowGroup". Die zugelassenen User bzw.
# nicht zugelassenden User (durch ein vorgestelltes "!") sind durch ein Komma
# (",") getrennt. Der gesamte Ausdruck wird als logisches "UND" betrachtet,
# das heisst das alle Ausdrücke zutreffen müssen.
# Kontext: <Limit>
#------------------------------------------------------------------------------


# Die "DefaultRoot" Anweisung bestimmt das standard Root Verzeichnis für einen
# User bei dem Login. Wenn "Default Root" auf ein anderes Verzeichnis als "/"
# verweist, wird unmittelbar nach dem erfolgten Einloogen ein "chroot" durch-
# geführt. So kann ein Benutzer vom übrigen Dateisystem isoliert werden. Das
# genannte Verzeichnis muß mit "/" beginnen oder kann den Platzhalter "~" ent-
# halten, der für das Heimatverzeichnis des Users steht. Dieses kann auch ein
# weiteres Unterverzeichnis enthalten, wie z.B. "~/html". Sollte das
# "DefaultRoot" Verzeichnis auf ein Verzeichnis verweisen, daß für den User
# nicht zugänglich ist, wird er auf das aktuelle Arbeitsverzeichnis gesetzt
# und nicht auf das normale Homeverzeichnis. "DefaultRoot" kann nicht im
# Anonymen Anweisungsblock verwendet werden, da er hierfür eine spezielle
# Anweisung gibt. Die optionale Gruppenangabe kann dazu benutzt werden,
# "DefaultRoot" auf eine oder mehrere Gruppen zu beschränken. Der Ausdruck
# hat folgendes Format: [!]group-name1[,[!]group- name2[,...]]. Der Ausdruck
# wird als logische "UND"-Verknüpfung abgearbeitet, so jeder Ausdruck muss
# WAHR ergeben, um die "DefaultRoot" Anweisung zu gestatten. Die Vorzeichen
# "!" negiert die Gruppenzugehörigkeit. Achtung: Grundsätzlich ist dieses
# keine 100% Sicherheit, da es Wege geben kann, als User aus diesem "root"
# auszubrechen.
# Standard: /

# DefaultRoot /250gb/ftp !root
# DefaultRoot /home/patator/ftp
DefaultRoot ~ !ftpuser

#------------------------------------------------------------------------------

# Gibt an, in welchem Verzeichnis sich der User nach dem Login befindet.
# Standardmäßig ist es das Home-Verzeichnis des Users. Das angegebene Ver-
# zeichnis kann relativ zum Userverzeichnis angegeben werden.
# Achtung: Wenn das angegebene Verzeichnis nicht verfügbar ist, kann der User
# sich nicht einloggen.
# Standard: ~

#DefaultChdir ~
#------------------------------------------------------------------------------

marce
14.06.05, 09:42
1. bitte Code-Tags verwenden.

2. DefaultRoot ~ !ftpuser

kenne proftp nicht 100% aber nach dem was da steht heisst das: nimm für alle User, die der Gruppe ftpuser angehören nicht deren Home-Verzeichnis - und damit / und damit kein chroot - ich gehe mal davon aus, dass die Benutzer in der ftpuser-Gruppe drin sind...

patator
14.06.05, 09:46
Die user sind alle in der gruppe ftpuser.
Problem ist, wenn ich das ~ !ftpuser weglasse dann stehen die user nach dem login im root und nicht in seinem userverzeichnis.

patator
14.06.05, 10:49
..ich bekomms nicht hin, weis nicht was ich falsch mache.
Is halt blöd wenn die anderen die Ordner der anderen User sehen können.
Die sollten nur in Ihren Verzeichnissen wechseln können und nur innerhalb dieser.
Will nicht, dass die tiefer als ihr eigenes Verzeichnis kommen.

marce
14.06.05, 10:51
Die user sind alle in der gruppe ftpuser.
Problem ist, wenn ich das ~ !ftpuser weglasse dann stehen die user nach dem login im root und nicht in seinem userverzeichnis.

mach doch einfach mal nur ein ~ hin - oder das auch schon probiert? Dann sollte er im home-VZ landen...

patator
14.06.05, 10:53
... das ist ja auch das Problem was ich nicht verstehe, wenn ich nur ~ mache dann ist der User nach dem Login im ROOT wo er alle Ordner wie ETC ... sehen kann.
Er kann dann auch nicht ins HOME und sein Userverzeichnis mehr wechseln.
Jeder User hat als Home Verzeichnis /home/ + seinen Usernamen stehen.

marce
14.06.05, 10:55
was steht denn in der /etc/passwd als Home-VZ des Users drin?

$kuLL
14.06.05, 10:58
Bei

DefaultRoot ~
landet der User sicher nicht in /, es sei denn das ist sein Heimatverzeichnis.

patator
14.06.05, 10:59
... da steht immer jeweils pro User /home/ + sein benutzername drin.

patator
14.06.05, 11:03
.. danke Leute für eure Unterstützung.
Mittlerweile klappts, kann euch aber nicht sagen warum.
Aufeinmal hat ers geschnallt.

$kuLL
14.06.05, 11:04
Ein ganz einfaches

DefaultRoot ~
genügt.

Wenn du nur

DefaultRoot
schreibst, landet man in /

Hast du dir überhaupt schonmal die Kommentare deiner Config durchgelesen, oder die Doku? :rolleyes:

marce
14.06.05, 11:07
Hast du dir überhaupt schonmal die Kommentare deiner Config durchgelesen, oder die Doku? :rolleyes:

Allgemein sind existieren die Worte Doku und Lesen nur in Paralleluniversen und sind in Verbindung nicht Gegenstand dieser Realitätsebene. ,-)