Для чего нужен анонимный FTP? Ну например для того, чтобы поделиться своими файлами с другими людьми без регистрации на сервере.
В этой заметке я опишу, как я настраивал анонимный FTP сервер Proftpd.
Цель у меня была такая, у меня есть много электронной литературы, я хочу ей поделиться с людьми. Для этих целей я придумал использовать FTP. Еще учел возможность того, чтобы люди могли не только скачивать литературу, но и добавлять свою. Дальше все описано как это сделать.
Установка:
# aptitude install proftpd
Во время установки появится окно выбора режима работы сервера, выбираем standalone, т.к. не используем inetd (если что, это можно поменять позже).
После установки создается пользователь ftp.
Так выглядит дефолтный конфиг (я убрал комментарии):
# cat /etc/proftpd/proftpd.conf
Include /etc/proftpd/modules.conf
UseIPv6 on
IdentLookups off
ServerName "Debian"
ServerType standalone
DeferWelcome off
MultilineRFC2228 on
DefaultServer on
ShowSymlinks on
TimeoutNoTransfer 600
TimeoutStalled 600
TimeoutIdle 1200
DisplayLogin welcome.msg
DisplayChdir .message true
ListOptions "-l"
DenyFilter \*.*/
Port 21
<IfModule mod_dynmasq.c>
</IfModule>
MaxInstances 30
User proftpd
Group nogroup
Umask 022 022
AllowOverwrite on
TransferLog /var/log/proftpd/xferlog
SystemLog /var/log/proftpd/proftpd.log
<IfModule mod_quotatab.c>
QuotaEngine off
</IfModule>
<IfModule mod_ratio.c>
Ratios off
</IfModule>
<IfModule mod_delay.c>
DelayEngine on
</IfModule>
<IfModule mod_ctrls.c>
ControlsEngine off
ControlsMaxClients 2
ControlsLog /var/log/proftpd/controls.log
ControlsInterval 5
ControlsSocket /var/run/proftpd/proftpd.sock
</IfModule>
<IfModule mod_ctrls_admin.c>
AdminControlsEngine off
</IfModule>
Include /etc/proftpd/conf.d/
Вся настройка сервера состоит в правке этого конфига, этим мы и займемся.
Далее следует содержимое работающего конфига с комментариями:
# cat /etc/proftpd/proftpd.conf
Include /etc/proftpd/modules.conf
# Выключаем ipv6
UseIPv6 off
IdentLookups off
# Имя сервера, тип и адрес администратора
ServerName "Мой FTP сервер"
ServerType standalone
ServerAdmin [email protected]
DeferWelcome off
# Запрет логина руту
RootLogin off
MultilineRFC2228 on
DefaultServer on
ShowSymlinks on
# Отключить определение имени хоста по ip, (ускоряем доступ)
UseReverseDNS off
TimeoutNoTransfer 600
TimeoutStalled 600
TimeoutIdle 1200
DisplayLogin welcome.msg
DisplayChdir .message true
ListOptions "-l"
DenyFilter \*.*/
# Удалять недогруженные файлы
DeleteAbortedStores on
RequireValidShell off
Port 21
# Максимальное количество процессов
MaxInstances 10
# Юзер и группа, от которой запускается сервер
User nobody
Group nogroup
# Права на создаваемые файлы и каталоги
Umask 022 022
# Разрешаем перезаписывать файлы
AllowOverwrite on
# Пути к логам
TransferLog /var/log/proftpd/xferlog
SystemLog /var/log/proftpd/proftpd.log
# Ограничение размера загружаемого и скачиваемого файлов
MaxStoreFileSize 100 Mb
MaxRetrieveFileSize 100 Mb
<IfModule mod_quotatab.c>
QuotaEngine off
</IfModule>
<IfModule mod_ratio.c>
Ratios off
</IfModule>
<IfModule mod_delay.c>
DelayEngine on
</IfModule>
<IfModule mod_ctrls.c>
ControlsEngine off
ControlsMaxClients 2
ControlsLog /var/log/proftpd/controls.log
ControlsInterval 5
ControlsSocket /var/run/proftpd/proftpd.sock
</IfModule>
<IfModule mod_ctrls_admin.c>
AdminControlsEngine off
</IfModule>
# Непосредственная настройка анонимного FTP сервера
<Anonymous /raid/ftp>
User ftp
Group nogroup
# Алиас на anonymous
UserAlias anonymous ftp
DirFakeUser on ftp
DirFakeGroup on ftp
RequireValidShell off
# Максимальное количество анонимов
MaxClients 10
DisplayLogin welcome.msg
DisplayChdir .message
# Запрет закачки файлов в окружении анонима
<Directory *>
<Limit WRITE>
DenyAll
</Limit>
</Directory>
# Настройка каталога, в которую аноним может закачивать файлы
# но не удалять их
<Directory "Сюда можете залить свои книги"/*>
Umask 022 022
<Limit STOR MKD>
AllowAll
</Limit>
</Directory>
</Anonymous>
Include /etc/proftpd/conf.d/
Создадим каталоги, в которых будут наши файлы:
# mkdir /raid/ftp
# mkdir /raid/ftp/"Сюда можете залить свои книги"
Назначим владельца юзера ftp:
# chown -R ftp:nogroup /raid/ftp/
Перезапустим сервис:
# /etc/init.d/proftpd restart
Проверка:
1. Пробуем скачать файл (все должно работать нормально):
2. Пробуем залить файл в корень (у нас ничего не выйдет, ведь так задумано):
3. Пробуем залить файл в "Сюда можете залить свои книги" (тут уже можно заливать файлы, мы так настроили, но удалять их нельзя):
4. Пробуем залогиниться под рутом (мы запретили логин под рутом):
6. Логинимся под разрешенным пользователем (amet13) (мы окажемся в домашнем каталоге пользователя:
Все работает, быстро, надежно, просто.
В скором времени на фтпшнике будет лежать очень много книг.
В качестве ftp-клиента рекомендую использовать FileZilla, безусловно лучший FTP-клиент.
[ссылки]:
http://www.dc.volia.com/articles-notes/215-proftpd
http://www.adm-blog.ru/view/ustanovka_i_nastrojka_proftpd_na_debian.html
http://www.proftpd.org/docs/configs/anonymous.conf
http://www.proftpd.org/docs/directives/linked/
http://pclinuxos.su/index.php/server/ftp-server/137-nastrojka-ftp-servera-ispolzuem-proftpd
В этой заметке я опишу, как я настраивал анонимный FTP сервер Proftpd.
Цель у меня была такая, у меня есть много электронной литературы, я хочу ей поделиться с людьми. Для этих целей я придумал использовать FTP. Еще учел возможность того, чтобы люди могли не только скачивать литературу, но и добавлять свою. Дальше все описано как это сделать.
Установка:
# aptitude install proftpd
Во время установки появится окно выбора режима работы сервера, выбираем standalone, т.к. не используем inetd (если что, это можно поменять позже).
После установки создается пользователь ftp.
Так выглядит дефолтный конфиг (я убрал комментарии):
# cat /etc/proftpd/proftpd.conf
Include /etc/proftpd/modules.conf
UseIPv6 on
IdentLookups off
ServerName "Debian"
ServerType standalone
DeferWelcome off
MultilineRFC2228 on
DefaultServer on
ShowSymlinks on
TimeoutNoTransfer 600
TimeoutStalled 600
TimeoutIdle 1200
DisplayLogin welcome.msg
DisplayChdir .message true
ListOptions "-l"
DenyFilter \*.*/
Port 21
<IfModule mod_dynmasq.c>
</IfModule>
MaxInstances 30
User proftpd
Group nogroup
Umask 022 022
AllowOverwrite on
TransferLog /var/log/proftpd/xferlog
SystemLog /var/log/proftpd/proftpd.log
<IfModule mod_quotatab.c>
QuotaEngine off
</IfModule>
<IfModule mod_ratio.c>
Ratios off
</IfModule>
<IfModule mod_delay.c>
DelayEngine on
</IfModule>
<IfModule mod_ctrls.c>
ControlsEngine off
ControlsMaxClients 2
ControlsLog /var/log/proftpd/controls.log
ControlsInterval 5
ControlsSocket /var/run/proftpd/proftpd.sock
</IfModule>
<IfModule mod_ctrls_admin.c>
AdminControlsEngine off
</IfModule>
Include /etc/proftpd/conf.d/
Вся настройка сервера состоит в правке этого конфига, этим мы и займемся.
Далее следует содержимое работающего конфига с комментариями:
# cat /etc/proftpd/proftpd.conf
Include /etc/proftpd/modules.conf
# Выключаем ipv6
UseIPv6 off
IdentLookups off
# Имя сервера, тип и адрес администратора
ServerName "Мой FTP сервер"
ServerType standalone
ServerAdmin [email protected]
DeferWelcome off
# Запрет логина руту
RootLogin off
MultilineRFC2228 on
DefaultServer on
ShowSymlinks on
# Отключить определение имени хоста по ip, (ускоряем доступ)
UseReverseDNS off
TimeoutNoTransfer 600
TimeoutStalled 600
TimeoutIdle 1200
DisplayLogin welcome.msg
DisplayChdir .message true
ListOptions "-l"
DenyFilter \*.*/
# Удалять недогруженные файлы
DeleteAbortedStores on
RequireValidShell off
Port 21
# Максимальное количество процессов
MaxInstances 10
# Юзер и группа, от которой запускается сервер
User nobody
Group nogroup
# Права на создаваемые файлы и каталоги
Umask 022 022
# Разрешаем перезаписывать файлы
AllowOverwrite on
# Пути к логам
TransferLog /var/log/proftpd/xferlog
SystemLog /var/log/proftpd/proftpd.log
# Ограничение размера загружаемого и скачиваемого файлов
MaxStoreFileSize 100 Mb
MaxRetrieveFileSize 100 Mb
<IfModule mod_quotatab.c>
QuotaEngine off
</IfModule>
<IfModule mod_ratio.c>
Ratios off
</IfModule>
<IfModule mod_delay.c>
DelayEngine on
</IfModule>
<IfModule mod_ctrls.c>
ControlsEngine off
ControlsMaxClients 2
ControlsLog /var/log/proftpd/controls.log
ControlsInterval 5
ControlsSocket /var/run/proftpd/proftpd.sock
</IfModule>
<IfModule mod_ctrls_admin.c>
AdminControlsEngine off
</IfModule>
# Непосредственная настройка анонимного FTP сервера
<Anonymous /raid/ftp>
User ftp
Group nogroup
# Алиас на anonymous
UserAlias anonymous ftp
DirFakeUser on ftp
DirFakeGroup on ftp
RequireValidShell off
# Максимальное количество анонимов
MaxClients 10
DisplayLogin welcome.msg
DisplayChdir .message
# Запрет закачки файлов в окружении анонима
<Directory *>
<Limit WRITE>
DenyAll
</Limit>
</Directory>
# Настройка каталога, в которую аноним может закачивать файлы
# но не удалять их
<Directory "Сюда можете залить свои книги"/*>
Umask 022 022
<Limit STOR MKD>
AllowAll
</Limit>
</Directory>
</Anonymous>
Include /etc/proftpd/conf.d/
Создадим каталоги, в которых будут наши файлы:
# mkdir /raid/ftp
# mkdir /raid/ftp/"Сюда можете залить свои книги"
Назначим владельца юзера ftp:
# chown -R ftp:nogroup /raid/ftp/
Перезапустим сервис:
# /etc/init.d/proftpd restart
Проверка:
1. Пробуем скачать файл (все должно работать нормально):
В скором времени на фтпшнике будет лежать очень много книг.
В качестве ftp-клиента рекомендую использовать FileZilla, безусловно лучший FTP-клиент.
[ссылки]:
http://www.dc.volia.com/articles-notes/215-proftpd
http://www.adm-blog.ru/view/ustanovka_i_nastrojka_proftpd_na_debian.html
http://www.proftpd.org/docs/configs/anonymous.conf
http://www.proftpd.org/docs/directives/linked/
http://pclinuxos.su/index.php/server/ftp-server/137-nastrojka-ftp-servera-ispolzuem-proftpd
Норм статья, очень понятно и читабельно оформлено, приятно было настраивать.
ОтветитьУдалитьИспользовал ваш конфиг, поменял только путь на /srv/ftp вместо /raid/ftp
ОтветитьУдалитьgateway:~ # telnet localhost 21
Trying ::1...
telnet: connect to address ::1: Connection refused
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 ProFTPD 1.3.4d Server ( FTP ) [127.0.0.1]
CWD
530 Please login with USER and PASS
Почему просит логин и пароль для чтения каталога?
# ftp localhost
ОтветитьУдалитьConnected to localhost.localdomain.
220 ProFTPD 1.3.4a Server (Amet13's FTP) [127.0.0.1]
Name (localhost:root): anonymous
331 Анонимное подключение, укажите ваш e-mail адрес в качестве пароля
Password: [email protected]
230 Анонимное подключение, ограничения применены
Remote system type is UNIX.
Using binary mode to transfer files.
Разобрался - надо было пассивный режим отключить в клиенте. Спасибо за статью.
ОтветитьУдалитьУ вас правда опечатку нашёл:
в команде "# chown -R ftp.nogroup /raid/ftp/" между ftp и nogroup должно быть двоеточие вместо точки.
Спасибо. Исправлено.
ОтветитьУдалитьСпасибо а то замучался pure-ftpd настраивать, снёс к чёрту и поставил Pro и теже грабли логин пароль спрашивает - пока у вас не увидел
ОтветитьУдалитьDirFakeUser on ftp
DirFakeGroup on ftp