Vielfach braucht man verschiedene Verzeichnisse für jeden User.
Da ich eine private Domain mit mehreren Subdomains betreibe, wollte
ich jedem User die Möglichkeit geben, seine Subdomain selbst zu gestalten.
Dazu war es erforderlich, einen FTP Zugang für jeden User einzurichten und
jedem User sein eigenes Directory zu geben.
Nun, ich mache es kurz - es gibt einige Lösungswege - ich wollte jedoch nach
Möglichkeit den bereits eingebauten VSFTPD von Oleg nutzen. Nach vielen
Versuchen habe ich letztendlich einen sehr stabilen und einfachen Weg
gefunden.
Noch ein paar Worte zu meiner Konfiguration:
Ich habe lighttpd laufen, um meine Webseiten lokal zu sammeln und probieren zu
können. Das Verzeichnis (document_root) von lighttpd liegt wie üblich in
/opt/share/www - die jeweiligen Unterverzeichnisse direkt darunter, also
Die startseite z.Bspl. auf /opt/share/www/index.html und im Unterordner
/opt/share/www/linux/index.html eine komplette Linux-Seite.
Der Vorteil liegt darin, dass man auf den Server von aussen mit
http://bespieluser.dyndns.org/linux sofort die Startseite unter dem jeweiligen
Ordner aufrufen kann. Genau so werden alle Ornder später auf den grossen Server
kopiert. Am grossen Server ist auf der Hauptseite ein Link auf die Unterseiten
und natürlich am DNS-Server die Subdomain direkt eingetragen. Deshalb brauche
ich nur alle Subordner unter document_root auf den Grossen Server kopieren um
den kleinen und grossen Server auf dem gleichen Stand zu halten. Das erleichtert
z.Bspl. die ganze Backup-Geschichte ganz wesentlich und ist zudem sehr einfach
zu realisieren. Weiters kann jeder User seine Seite beliebig testen, da ein
Upload nur alle 2 Tage durchgeführt wird.

VORBEDINGUNG:
- installierten und laufenden http Server (kein muss, ftp geht auch ohne)
- Olegs FW in der Version=>9 (mit VSFTP - VSFTPD muss funktionieren!)
- Die üblichen Kenntnisse und Installationen mit vi, putty, winscp

1.) User anlegen: legen sie alle User im Webif einfach an und read/write
Zugriff geben. Den Ftp Server eingeschaltet lassen. Abschließend noch
apply und finish.

2.) Mit winscp auf dem Router einloggen und aus /tmp/etc folgende Files auf den
PC kopieren:
- vsftpd.conf
- vsftpd.passwd
- den ganzen Ordner vsftpd.users
Winscp schliessen

3.) Im Webif vom Router den FTP einfach ausschalten, apply und finish

4.) Nochmals winscp starten und alle Files von Pkt. 2.) wieder an den
gleichen Ort zurück kopieren. Winscp schliessen.

5.) Nun mit Putty am Router einloggen und einen Ordner anlegen:

(bei mir) mkdir /tmp/mnt/disc0_3/Z_VSFTP_USERS
dann darunter alle gewünschten Ordner anlegen, z. Bspl.
mkdir /tmp/mnt/disc0_3/Z_VSFTP_USERS/linux (ist ein Beispieluser)
mkdir /tmp/mnt/disc0_3/Z_VSFTP_USERS/anderesbeispiel
usw. - bis alle Ordner angelegt sind

6.) Nun noch die wesentliche, kleine Änderung:

vi /tmp/etc/vsftpd.users/linux (mit i in den insert mode)
und als erste Zeile einfügen:
local_root=/tmp/mnt/disc0_3/Z_VSFTPD_USERS/linux
mit ESC:wq speichern

den gleichen Vorgang für jeden User durchführen, also

vi /tmp/etc/vsftpd.users/anderesbeispiel
local_root=/tmp/mnt/disc0_3/Z_VSFTP_USERS/anderesbeispiel
usw. usw., bis alle User ein eigenes Directory als local_root haben.

7.) Nun noch die geänderten Files (mit vi) in /tmp/local/.files eintragen

/etc/fstab
/etc/vsftpd.conf
/etc/vsftpd.users
/etc/vsftpd.passwd

8.) Jetzt muss nur noch der vsftpd beim booten gestartet werden:
In die /tmp/local/sbin/post-mount unmittelbar vor rc.unslung eintragen

#vsftpd starten, wegen eigener User-Config
/usr/sbin/vsftpd

9.) Wenn der Ordner des Users auch über das Web erreichbar sein soll,
einfach einen symbolischen Link legen:

ln -s /tmp/mnt/disc0_3/Z_FTP_USERS/linux /opt/share/www/linux


10.) Naja und was denn sonst noch - natürlich das berühmte:

flashfs save && flashfs commit && flashfs enable && reboot


Falls man den symbolischen Link entfernen will/muss:

unlink /opt/share/www/linux

Bitte niemals zur Linkentfernung rm -f /opt/share/www/linux benutzen,
das kann bei einer falschen Option (-f) sehr böse Folgen haben, ist mir
leider einmal passiert! (Leider ein r anstatt f erwischt) Und auch kein
unlink /opt/share/www/linux/ (/), die Fehlermeldung war für mich der
Grund, warum ich ein rm -r /opt/share/www/linux/ versuchte (unabsichtlich),
leider ist es bei einem einzigen Versuch geblieben, denn danach war das
gesamte Directory weg. (Aber aus Schaden wird man klug!)

Spielereien: natürlich kann man als local_root jedes beliebige Directory angeben, bei vielen Users wird das aber schnell sehr unübersichtlich - und noch etwas - verbieten sie root und anonymus als ftp, das stellt ein sehr grosses Sicherheitsrisiko dar!

Fehler: bis jetzt keine bekannt, lediglich ein nicht Linux-konformer Editor war Schuld für eine längere Fehlersuche. Seither nehme ich nur mehr den Editor von Winscp oder vi, von mc oder nano.

Viel Spass