Установить пакет proftpd:
sudo apt-get install proftpd
Если фтп-сервер не будет использоваться постоянно, ответить на появившийся вопрос о способе запуска: "самостоятельно"
Открыть файл /etc/shells:
sudo nano /etc/shells
Добавить в него строку:
/bin/false
Создать в /HOME каталоге папку FTP-shared:
sudo mkdir /home/ftp-shared
Создать пользователя с именем userftp:
sudo useradd userftp -p parol -d /home/ftp-shared -s /bin/false
вместо "parol" - ввести слово или фразу в качестве пароля
В папке 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
Переименовать имеющийся конфигурационный файл proftpd.conf и создать новый:
sudo mv /etc/proftpd/proftpd.conf /etc/proftpd/proftpd.conf.old
sudo nano /etc/proftpd/proftpd.conf
добавить в него следующие строки:
# отключаю протокол
UseIPv6 off
AllowOverwrite on
AuthAliasOnly on
# Здесь присваивается alias пользователю (в качестве примера присвоено имя donet)
UserAlias donet userftp
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
<Limit LOGIN>
AllowUser userftp
DenyALL
</Limit>
<Directory /home/ftp-shared>
Umask 022 022
AllowOverwrite off
<Limit MKD STOR DELE XMKD RNRF RNTO RMD XRMD>
DenyAll
</Limit>
</Directory>
<Directory /home/ftp-shared/public/*>
Umask 022 022
AllowOverwrite off
<Limit MKD STOR DELE XMKD RNEF RNTO RMD XRMD>
DenyAll
</Limit>
</Directory>
<Directory> /home/ftp-shared/upload/>
Umask 022 022
AllowOverwrite on
<Limit READ RMD DELE>
DenyAll
</Limit>
<Limit STOR CWD MKD>
AllowAll
</Limit>
</Directory>
# # анонимный доступ
#<Anonymous /папка/для/доступа>
# User userftp
# Group nogroup
# UserAlias anonymous userftp
# MaxClients 8 "Извините, максимум %m пользователей - попробуйте подключиться позже"
# DisplayChdir .message
#
# <Directory *>
# <Limit WRITE>
# DenyAll
# </Limit>
# </Directory>
#</Anonymous>
После произведенных действий фтп-сервер будет иметь следующие параметры доступа:
user (пользователь): donet
password (пароль): parol (тот, что присвоен для userftp)
Если нужно сделать анонимный доступ, следует закомментировать обе секции для donet и раскомментировать секцию для анонима
Сервер уже запущен, но с параметрами по умолчанию, перезапустить:
sudo /etc/init.d/proftpd restart
Для проверки синтаксиса созданного конфиг-файла можно выполнить:
sudo proftpd -td5
Что бы узнать, кто подключен к фтп-серверу в данный момент используется команда ftptop (клавиша t меняет отображение, q - выход), можно также использовать команду ftpwho
Итог: фтп-сервер с двумя папками, одна из них (public) доступна только на чтение, другая (upload) - на запись
Расшаривание ресурсов
Если нужно подключить какую-либо папку или партицию к фтп-серверу (например, проверить работу только что созданного фтп-сервера) без редактирования конфига пригодится команда:
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 nano /etc/fstab
и добавить нужные пути:
/здесь/путь/папки/что/я/хочу/расшарить /home/ftp-shared/public none bind 0 0
Теперь даже при рестарте сервера (компьютера) информация будет доступна, если сервер за роутером то только в локальной сети,. Что бы увидеть фтп-сервер из интернета нужно дать ему внешний ip-адрес. Для этого следует открыть нужный порт (в данном случае 21) для локального адреса (вида 192.168.xxx.xxx) на котором висит сервер, для доступа извне.
Следующим шагом нужно дать внешнему динамическому IP-адресу осмысленный и постоянный адрес. Сделать это можно при помощи сервиса DynDNS.com, создав[1]при помощи его удобный и запоминающийся адрес (вида moj-server.homeip.net). Внести регистрационные данные с сервиса DynDNS в настройки роутера и поменять ServerName "server" в файле proftpd.conf на ServerName "moj-server.homeip.net".
Рестарт фтп-сервера:
sudo /etc/init.d/proftpd restart
Если что-либо не работает (чаще всего вылазит ошибка 530), то пробуем:
- проверять пути (путь к домашней папке, пути к папкам upload и public);
- под каким пользователем вы заходите (надо под алиасом заданном в конфиге, т.к. у нас включена авторизация только по нему);
- права доступа к папкам и принадлежность к пользователю.
Взял от сюда http://mycomp.se/
Комментариев нет:
Отправить комментарий