Gleich vorweg: Ja, ich habe die Dokumentation gelesen und auch das Forum durchsucht, hat aber nicht geholfen.
Ich habe gestern erfolgreich die neuste Version von ProFTPD mit MySQL-Unterstützung kompiliert/installiert und (zu meiner Überraschung) funktioniert auch alles wieder. Aber ich weiß leider nicht wie ich das mit dem SQL einrichten muss.
Was ich erreichen möchte: Alle FTP-Benutzer sollen vollkommen unabhängig vom System sein. Alle FTP-Benutzer können sich nur innerhalb eines Verzeichnisses (und dessen Unterverzeichnisse) bewegen (/srv/www/htdocs/). Es gibt einen Anonymous-Benutzer, der auf das meiste in diesem Ordner Lesezugriff hat (einen Teil habe ich direkt in der Konfiguration gesperrt in dem <anonymous>-Block, ein anderen Teil mit .ftpaccess). Soweit funktioniert auch alles, das ist meine Konfiguration bis jetzt (ich habe einen großteil kopiert und abgeändert, deswegen passen die Kommetare nicht mehr überall):
ServerName ftp.meindomain.de
ServerType standalone
ServerAdmin meine@email.de
ServerIdent on "FTP Server ready."
DefaultServer on
# Port 21 is the standard FTP port.
Port 21
# Umask 022 is a good standard umask to prevent new dirs and files
# from being group and world writable.
Umask 022
# To prevent DoS attacks, set the maximum number of child processes
# to 30. If you need to allow more than 30 concurrent connections
# at once, simply increase this value. Note that this ONLY works
# in standalone mode, in inetd mode you should use an inetd server
# that allows you to limit maximum number of processes per service
# (such as xinetd)
MaxInstances 30
# Set the user and group that the server normally runs at.
User nobody
#Group nogroup
DenyFilter "%" # Hier gibt man an, welche Ausdrücke der Client nicht benutzen darf
UseReverseDNS off # DNS Auflösung abschalten
IdentLookups off # Ident Lookup ausschalten
TimeoutStalled 300 # Zeit bis zur Trennung ohne Datenverkehr
TimeoutLogin 30 # Zeit für Login
TimeoutIdle 120 # Zeit bis zur Trennung ohne Datenverkehr (Daten und Kontrollleitung)
TimeoutNoTransfer 300 # Maximale Zeit ohne eine Datenverbindung
RootLogin off # Nur kein Root Login!!
MaxLoginAttempts 3 # Maximale Anzahl der Loginversuche
RequireValidShell off
<Global>
DefaultRoot /srv/www/htdocs # Hiermit erzwinge ich die User in das benannte Verzeichnis
AllowRetrieveRestart on # Erlaube das Fortsetzen eines abgebrochenen Downloads
AllowForeignAddress on # Erlaube FXP
AllowStoreRestart on # Erlaube das Fortsetzen eines abgebrochenen Uploads
HiddenStor off # Muß ausbleiben, wenn AllowStoreRestart On
MaxClients 10 "Sorry, to many users online! Please try again later" # Maximale Anzahl
# der Clients mit Meldung
MaxClientsPerHost 2 "Max 2 Login per Host!!" # Maximale Anzahl der Clients/IP mit Meldung
DeleteAbortedStores off # Abgebrochene Uploads löschen AUS
ShowSymlinks on # Unterstützung von symbolischen Links
#DisplayLogin hello.txt # Datei mit Begrüßungstext
#DisplayQuit ""Bye Bye"" # Text beim Beenden
#DeferWelcome on # Servername und Adresse wird erst n. erfolgreichem Login angezeigt
</Global>
<Anonymous /srv/www/htdocs>
User ftp # After anonymous login, daemon runs as user ftp
Group ftp # After anonymous login, daemon runs as group ftp
UserAlias anonymous ftp # Client login as 'anonymous' is aliased to 'ftp'
<Directory *>
<Limit WRITE> # Alle Schreibzugriffe unter dem root-Verzeichnis verbieten
DenyAll # Standard ist "erlauben", daher brauchen wir kein
</Limit> # <Limit> für Lesezugriffe erlauben
</Directory>
<Directory /srv/www/htdocs/myadmin>
<Limit ALL> # Alle Schreibzugriffe unter dem root-Verzeichnis verbieten
DenyAll # Standard ist "erlauben", daher brauchen wir kein
</Limit> # <Limit> für Lesezugriffe erlauben
</Directory>
<Directory /srv/www/htdocs/ssl>
<Limit ALL> # Alle Schreibzugriffe unter dem root-Verzeichnis verbieten
DenyAll # Standard ist "erlauben", daher brauchen wir kein
</Limit> # <Limit> für Lesezugriffe erlauben
</Directory>
</Anonymous>
UseFtpUsers off
Nun möchte ich noch Gruppen wie die anonymous-Gruppe in der Konfiguration einrichten. In der SQL-Datenbank sollen die Benutzerdaten (Name/Passwort) der Gruppenmitglieder stehen, so das ich Benutzer einfach mit einem Webfrontend hinzufügen/löschen/verändern kann. Alle Benutzer sollen desweiteren den gleichen Systembenutzer benutzen.
Die einzelnen Rechte dieser Benutzergruppen sollten aber in der proftpd.conf bleiben, am besten wäre es wenn ich die so einrichten kann wie den <anonymous>-Block. Wie mache ich das?
Ich auch schon im englischen Forum gepostet, bevor ich dieses Forum gefunden habe, das scheint jedoch nur sehr wenig besucht zu sein und die deutsche Sprache fällt mir doch einfacher.