Очень странная задача тут возникла.. :)
Нужно дать пользователю через ftp временный доступ к диску его компьютера.
Дано:
- ftp-сервер: proftpd
- ОС на сервере: Debian Lenny
- ОС на компьютере пользователя: Windows Server 2003
- ftp-клиент: filezilla.
_Как реализовано:_
1. Создан пользователь (скажем, user_ftp). У пользователя, соотвественно, есть своя директория. Пользователю даны следующие права на эту директорию:
1) Средствами proftpd:
<Directory /media/ftp/user_pc>
AllowOverwrite on
<Limit MKD STOR RETR DELE XMKD RNRF RNTO RMD XRMD READ>
AllowUser user_ftp
</limit>
</directory>
2) средствами системы: тупо 777
2. На компьютере пользователя создана шара с полным доступом для всех. В директорию user_pc на сервере с помощью mount -t cifs примонтирована эта шара.
Таким образом, подключаясь через ftp к серверу, пользователь видит список файлов, фактически находящийся на другом компьютере.
_Что получается:_
- подключиться к ftp-серверу
- лазить по папкам, видеть их содержимое
- создавать и удалять папки/файлы
- закачивать файлы на сервер
- скачивать обратно те файлы, которые были закачаны через ftp
_Что не получается:_
- скачать с сервера что-нибудь, что уже там лежало.
Что пишет filezilla:
Статус: Начинаю скачивать /user_pc/bigdisk/DCIM/100CANON/IMG_0003.JPG
Команда: PORT 192,168,1,2,138,229
Ответ: 200 PORT command successful
Команда: RETR IMG_0003.JPG
Ответ: 150 Opening BINARY mode data connection for IMG_0003.JPG (54153 bytes)
Ответ: 426 Transfer aborted. Operation not permitted
Ошибка: Передача файла потерпела неудачу
_Вопрос:_ как скачать файл?
_Дополнительно:_
- Если не монтировать шары с удалённой машины, а просто пытаться скачивать файлы, лежащие в директории user_pc на локальном компьютере (сервере, где фактически находится ftp-сервер), всё получается - они скачиваются. Когда поверх монтируем шару с компьютера пользователя, скачать из шары ничего не можем.
- При монтировании права на директорию user_pc изменятся на
drwxrwxrwx 1 root root 0 1980-01-01 00:00 (интересно, откуда такая кривая дата?)
Может быть, проблема в этом? Но, повторяю, подключённый к ftp юзер может делать всё: закачивать, скачивать закачанное, удалять, создавать файлы, но не может только одного: скачивать файлы, бывшие там до монтирования, потому что команда stor не срабатывает.
- В логе фтп-сервера только вот это: «RETR IMG_0001.JPG» 426 0
PS: вариант «сменить на юзерском компе систему на какой-нить Линукс» рассматриваются :) Мне всё равно, что там стоит, и, если это поможет, я могу заменить ОС, ну или подключить диск пользователя к одному из компьютеров с ЛИнуксом, что одно и то же. Не могу я только засунуть пользовательский диск в компьютер, где находится ftp-сервер.