Большинство инструкций по настройке ftp сервера ограничивается базовой установкой.
Вот например — как установить:
В базовом варианте — сервер работает, пускает зарегистрированных в системе пользователей в их домашние папки. А анонимных в какую нибудь другую.
Мне же необходимо было сделать доступ пользователю в глубоко вложенную папку другого пользователя.
Если создавать системного пользователя и ем указывать эту папку — он логинится на ftp сервер, но не может даже перейти в эту директорию, так как где то посередине стоят права 700 на пользователя под которым работает апач. И менять их не было никакого желания.
Описание решения было найдено, оставалось только заставить работать
Создаем нового виртуального ftp-пользователя с логином tester, идентификатором 33, группой 33 и домашним каталогом /var/www/test.ru. (где 33 — id реального пользователя у которого есть доступ к указанной папке)
ftpasswd —passwd —file=/etc/proftpd/ftpd.passwd —name=tester —uid=33 —gid=33 —home=/var/www/test.ru —shell=/bin/false
После выполнения команды система попросит ввести дважды пароль пользователя.
В итоге, у нас появится файл /etc/proftpd/ftp.passwd с записью о пользователе.
Кстати, изменить пароль пользователя можно следующей командой:ftpasswd —passwd —name=tester —change-password
Теперь редактируем /etc/proftpd/proftpd.conf, для подключения виртуального пользователя:
RequireValidShell off
AuthUserFile /etc/proftpd/ftpd.passwd
http://habrahabr.ru/sandbox/26850/
Почему то очень редко все работает, как описанно в советах пользователей. Но откуда начинать копать — уже более менее понятно
Чтобы работала авторизация с использованием созданного файла необходимо указать модули используемые для этого: mod_auth_file.c.
Системные и виртуальные пользователи
AuthUserFile /usr/local/etc/proftpd/ftpd.passwd
AuthGroupFile /usr/local/etc/proftpd/ftpd.group
AuthPAM off
AuthPAMConfig proftpd
AuthOrder mod_auth_pam.c* mod_auth_unix.c mod_auth_file.c
RequireValidShell off #обязательно добавить,иначе авторизация вирт.пользователей не работаетТолько виртуальные пользователи
AuthUserFile /usr/local/etc/proftpd/ftpd.passwd
AuthGroupFile /usr/local/etc/proftpd/ftpd.group
AuthOrder mod_auth_file.c
RequireValidShell off #обязательно добавить,иначе авторизация вирт.пользователей не работает
Подключение стало проходить, но листинг директории — не отдавал, зависал на команде PASV и закрывал соединение не дождавшись ответа.
Попробовал указать директиву с диапазоном портов — без эффекта.
Запретил на клиенте пассивный режим — все равно PASV отправлялась. (видимо надо было закрыть вкладку сервера и открыть заново в FileZilla)
Запретил на сервере пассивный режим — заработало.
<limit EPSV PASV>
DenyAll
</limit>
Полный список директив:
http://www.proftpd.org/docs/directives/configuration_full.html
То что в итоге получилось:
proftpd.conf