Hallo!
Die Direktive
"DefaultRoot" dient dazu, den User in ein Verzeichnis "einzusperren" (chroot).
Wenn dies nicht sein Homedir ist, dann kann er natürlich innerhalb dieser Verzeichnisstruktur
herumspazieren wie er will und es die Zugriffsrechte erlauben.
Damit der User ausschließlich in seinem Homedir ist (und bleibt!), muß
"DefaultRoot ~"verwendet werden. Andere Verzeichnisse außerhalb davon sind dann eine Sache von entweder
individuellen mount's oder von separaten FTP-Accounts. Es gibt noch eine Möglichkeit,
"DefaultRoot" aufzuweichen - die "VRootEngine". Siehe ->
hier und ->
hier.
Da das Ganze aber darauf beruht, daß Symlinks das chroot-Gefängnis durchbrechen können,
ist diese Methode nur bein reinen FTP-Accounts sicher. Mit Shellzugang oder Scriptsprachen wie
z.B. PHP wäre dann die ganze Absicherung nutzlos und für die Katz.
Meine Meinung: für unterschiedliche Verzeichnisse, die außerhalb des eigenen Homedirs sind,
immer eigene FTP-Accounts anlegen. Das ist zwar nicht so anwenderfreundlich, aber darum
geht es bei Sicherheitsfragen einfach nicht.
Zu den Zugriffsrechten habe ich noch einen Textbaustein für Dich:
Der ProFTPD ist wie eine Usershell zu betrachten: nach dem Einloggen hat der neu gestartete,
individuelle Prozess die selbe User- und Group-ID wie der eingeloggte User - alle Root-Rechte
wurden aufgegeben. Damit hat der ProFTPD nur noch die selben Zugriffsrechte wie der User.
Das kann nicht ausgehebelt oder umgangen, sondern nur weiter ausgebaut werden!
Was mir bei Deiner recht ordentlichen proftpd.conf noch aufgefallen ist:
- Die Direktiven "SQLDefaultUID" und "SQLDefaultGID" überschreiben Deine UID/GID Werte
aus Deiner Datenbank. Das wirst Du wohl nicht wollen: entfernen oder auskommentieren. - Angaben, die Du in der Datenbank nicht führen möchtest, kannst Du bei "SQLUserInfo" durch
"NULL" definieren. Damit kann man z.B. das IMHO absolut überflüssige Feld "shell" abhaken.
Und: wenn alle User die selbe GID haben sollen, kann man dies dem entsprechend auch
einsetzen. Dafür nutzt man dann (!) zusätzlich "SQLDefaultGID"...
Zu Deinen Fragen konnte ich Dir leider nur eine etwas unbequeme Lösung bieten,
aber ich hoffe, Du kommst damit dennoch ein Stück weiter.
mfg.
VolGas