Модуль mod_vdir первоначально задумывался только для того, чтобы у
каждого IP-адреса была своя директория для закачки файлов.
Но после первых версий функциональность была расширена, настройки были
вынесены в proftpd.conf.
Так что теперь это более-менее полноценный модуль для создания
виртуальных директорий.
Настройки
Секция <VDirectory> аналогична секции <Directory>, но
отвечает за настройку виртуальных путей.
VDirEnable [On|Off] -- обрабатывает ли данную <VDirectory> модуль
VDirCreate [On|Off] -- создавать ли виртуальные директории, если их нет
VDirCreateRoot [On|Off] -- создавать ли корневую директорию
VDirName "format-string" -- имя виртуальной директории(не
могут содержать символа '/')
Переменные доступные в VDirName(такие же как и в LogFormat):
%% -- символ %
%a -- IP-адрес пользователя
%g -- группа пользователя
%u -- имя пользователя
Установка
# wget ftp://ftp.proftpd.org/distrib/source/proftpd-1.3.1rc2.tar.bz2
# wget http://ifl.l1557.ru/static/mod_vdir-0.3.tar.bz2
# tar xjf proftpd-1.3.1rc2.tar.bz2
# tar xjf mod_vdir-0.3.tar.bz2
# cd proftpd-1.3.1rc2
# patch -p0 < ../mod_vdir-0.3/mod_vdir.patch
# cp ../mod_vdir-0.3/mod_vdir.c modules/
# ./configure --with-modules=mod_vdir
# make && make install
Настройка
Пример конфигурации двух вложенных друг в друга <VDirectory>.
Первая виртуальная директория -- /upload -- содержит внутри себя директории с IP-адресами.
Вторая -- /upload/test -- содержит внутри себя директории вида "Пользователь-Группа".
ServerName "Default Installation"
ServerType standalone
DefaultServer on
Port 21
User proftpd
Group proftpd
VDirEnable off
<Limit ALL>
DenyAll
</Limit>
<Limit QUIT PORT EPRT PASV EPSV TYPE MODE STOU REST
ABOR SYST HELP NOOP FEAT LANG CWD XCWD CDUP XCUP RETR STOR
APPE RNFR RNTO DELE MDTM RMD XRMD MKD XMKD PWD XPWD SIZE
LIST NLST STAT>
AllowAll
</Limit>
<Anonymous /home/ftp>
User ftp
Group ftp
UserAlias anonymous ftp
<Limit USER PASS ACCT>
AllowAll
</Limit>
<Limit STOU STOR APPE RNFR RNTO DELE RMD XRMD MKD XMKD>
DenyAll
</Limit>
<VDirectory /upload>
VDirEnable on
VDirCreate on
VDirName "%a"
</VDirectory>
<VDirectory /upload/test>
VDirEnable on
VDirCreate on
VDirCreateRoot on
VDirName "%u-%g"
</VDirectory>
<Directory /home/ftp/upload/*/*>
<Limit STOU STOR APPE RNFR RNTO DELE RMD XRMD MKD XMKD>
AllowAll
</Limit>
</Directory>
</Anonymous>