FTP Server на Ubuntu

Устанавливаем пакет proftpd:

sudo aptitude install proftpd

Отвечаем на появившийся вопрос о способе запуска: «самостоятельно».

Открываем файл /etc/shells:

sudo gedit /etc/shells

Добавляем в него строку:

/bin/false

Создаем в /HOME каталоге папку FTP-shared(Не обязательно в корне /HOME и не обязательно такое имя папки, это просто пример):

sudo mkdir /home/FTP-shared

Теперь создаем пользователя с именем userftp(ну или что поинтересней):

sudo useradd userftp -d /home/FTP-shared -s /bin/false
sudo passwd userftp

В папке FTP-shared создаем две вложенные папки(называем как хотим):

sudo mkdir /home/FTP-shared/public sudo mkdir /home/FTP-shared/upload

Присвоим права созданным папкам:

sudo chmod 755 /home/FTP-shared sudo chmod 755 /home/FTP-shared/public sudo chmod 777 /home/FTP-shared/upload

FTP-shared и public – только чтение. upload – запись.

Переименовываем имеющийся конфигурационный файл proftpd.conf и создаем новый:

sudo mv /etc/proftpd/proftpd.conf /etc/proftpd/proftpd.conf.old sudo gedit /etc/proftpd/proftpd.conf

Добавляем в него:

----------------------------------------------------------------------------------------------------------------------------------------

# отключаю протокол

UseIPv6                         off



AllowOverwrite on

AuthAliasOnly on



# Здесь присваивается alias пользователю (в качестве примера присвоено имя test, его нужно изменить на свое)

UserAlias test userftp



DefaultAddress            Свой IP адрес

ServerName            "Server"

ServerType             standalone

DeferWelcome            on



MultilineRFC2228 on

DefaultServer            on

ShowSymlinks            off



TimeoutNoTransfer 600

TimeoutStalled 100

TimeoutIdle 2200



DisplayChdir               .message

ListOptions                    "-l"



RequireValidShell         off



TimeoutLogin 20



RootLogin             off



# пути для логов

ExtendedLog             /var/log/ftp.log

TransferLog             /var/log/xferlog

SystemLog            /var/log/syslog.log



#DenyFilter            \*.*/



# Я не использую файл /etc/ftpusers (здесь вводим имена пользователей, для ограничения их доступа)

UseFtpUsers off



# Allow to restart a download

AllowStoreRestart        on



# Стандартный порт для фтп 21, для повышения безопасности можно выбрать другой (произвольный):

Port                21



# повышение безопасности

MaxInstances 8



# пользователь и группа

User                  nobody

Group                 nogroup



# Umask 022 ограничение на создание файлов и папок

Umask                022    022



PersistentPasswd        off



MaxClients 8 "Достигнут предел на количество клиентов"

MaxClientsPerHost 8 "Достигнут предел на количество клиентов с Вашего хоста"

MaxClientsPerUser 8 "Достигнут предел на количество подключений (%m)"

MaxHostsPerUser 8 "Больше нельзя"



# вывод приветствия после успешного входа

AccessGrantMsg "Добро пожаловать!!!"

# идентификация

ServerIdent                  on       "Мой домашний сервер"



# делаем /home/FTP-shared папку домашней

DefaultRoot /home/FTP-shared



# запрещаем выходить пользователям за пределы домашней папки (строго рекомендуется)

DefaultRoot ~



MaxLoginAttempts    5 "Количество попыток входа исчерпано - придется подождать, ничего не поделаешь, безопасность превыше всего"



#VALID LOGINS

AllowUser userftp

DenyALL



Umask 022 022

AllowOverwrite off

DenyAll



Umask 022 022

AllowOverwrite off

DenyAll



/home/FTP-shared/upload/>

Umask 022 022

AllowOverwrite on

DenyAll



AllowAll



# # анонимный доступ

#

#   User userftp

#   Group nogroup

#   UserAlias anonymous userftp

#   MaxClients 8 "Извините, максимум %m пользователей - попробуйте подключиться позже"

#   DisplayChdir .message

#

#  

#   

#    DenyAll

#   

#  

#

------------------------------------------------------------------------------------

Если Вы создавали структуру папок, имя пользоватля и т.д не как в статье, то редактируйте данный файл под себя.

После произведенных действий фтп-сервер будет иметь следующие параметры доступа:

user (пользователь): test password (пароль): pass (тот, что присвоен для userftp)

Можно создать несколько пользователей, но все они должны быть прописаны в файле proftpd.conf.
Если нужно сделать анонимный доступ, следует закомментировать обе секции для test и раскомментировать секцию для Anonymous.
Сервер запущен, но с параметрами по умолчанию, перезагружаем его:

sudo /etc/init.d/proftpd restart

Что бы узнать, кто подключен к фтп-серверу в данный момент используется команда ftptop (клавиша t меняет отображение, q – выход).

Полезные советы:

Если нужно подключить какую-либо папку к фтп-серверу (например, проверить работу только что созданного фтп-сервера) без редактирования конфига пригодится команда:

sudo mount -o bind /здесь/путь/папки/что/я/хочу/расшарить/ /home/FTP-shared/public

или с доступом на запись:

sudo mount -o bind /здесь/путь/папки/что/я/хочу/расшарить/ /home/FTP-shared/upload

Таким образом можно в срочном порядке временно подключить папку или диск и потом отмонтировать командой:

sudo umount /home/FTP-shared/public sudo umount /home/FTP-shared/upload

Для постоянного доступа к нужным папкам подключаем их посредством fstab. Бэкап файла fstab:

sudo cp /etc/fstab /etc/fstab.old

Открываем файл /etc/fstab:

sudo gedit /etc/fstab

и добавляем нужные пути:

/здесь/путь/папки/что/я/хочу/расшарить /home/FTP-shared/public none bind 0 0

Теперь даже при рестарте компьютера информация будет доступна, если сервер за роутером то только в локальной сети. Что бы увидеть фтп-сервер из интернета нужно дать ему внешний ip-адрес. Для этого следует открыть нужный порт (в данном случае 21) для локального адреса (вида 192.168.xxx.xxx) на котором висит сервер, для доступа извне.
Следующим шагом нужно дать внешнему динамическому IP-адресу постоянный адрес. Сделать это можно при помощи сервиса DynDNS.com(регистрируемся), создав при помощи его удобный и запоминающийся адрес (вида moi-server.homeip.net).
Устанавливаем ddclient:

sudo apt-get install ddclient

Вводим регистрационные данные с DynDNS.com на вопросы пакета.
Изменяем ServerName «server» в файле proftpd.conf на ServerName «moi-server.homeip.net».
Перезагружаем фтп-сервер:

sudo /etc/init.d/proftpd restart

Пользуемся

{jcomments on}