Когда-то давным давно в 2002 году я поставил себе свой первый дистрибутив linux Redhat 7.2. И первым приложением, которое сам установил и настроил это был Proftpd сервер. В те годы довольно частенько находили дыры в безопасности этого ftp сервера и мне приходилось достаточно часто обновляться. Но сейчас с безопасностью все встало нормально, редко-редко я встречаю про найденную дыру в безопасности в данном продукте, да и то в каких-нибудь редко используемых модулях типа SQL или LDAP. Не знаю почему, но я все еще кипячу компилирую сам из исходников proftpd. Скорей всего это какая-то ностальгия по тому далекому времени, когда я сам потратил около 2 дней на установку и настройку этого сервера.
Установка proftpd
Все у кого стоит proftpd пакет могут смело пропустить этот раздел и переходить к настройке конфигурации сервера.
Установка во freebsd
#cd /usr/ports/ftp/proftpd/
#make all install
#make clean
Установка в debian like дистрибутивах (например ubuntu)
sudo aptitude install proftpd
При установке proftpd в debian & etc скрипт установщика самостоятельно создаст директории, конфигурационный файл proftpd.conf и добавит запуск сервера в скрипты автоматической загрузки ОС.
Установка из исходников. Качаем последний релиз proftpd с сайта.
Конфигурируем и устанавливаем
configure
make
make install
Конечно так как выше написано я бы не советовал делать, по уму надо сначала собрать пакет а потом его инсталлировать. В противном случае деинсталлировать такой пакет будет проблематично. Но данная статья не о том как собирать пакеты.
Конфигурирование proftpd
Наша задача сконфигурировать сервер так,
- чтобы каждый пользователь системы при авторизации на ftp попадал в свою дирректорию
- создать пользователя для анонимного доступа (например для доступа на чтение к какой-то определенной папке)
Приводим стандартный конфиг proftpd.conf к такому содержанию. Данная конфигурация является стандартной и вам почти ничего менять не придется. В эту часть входит и авторизация пользователя в своем домашнем каталоге.
Конфиг показать
Т.к. в конфигурации мы запускаем сервер proftpd через ined сервер, то идем в файл /etc/inetd.conf и раскомментируем строку и перезапустим inetd
ftp stream tcp nowait root /usr/sbin/tcpd proftpd
Перезапускаем демон inetd
killall -HUP inetd
Теперь создадим пользователя с именем anonymous. Почему именно с таким? Да потому что, теперь можно в программах клиентах ftp указывать только имя сервера без указания имени пользователя. По умолчанию в таком случае подставится имя anonymous. Пароль для данного пользователя можно задать, а можно и не задавать. Я для простоты не задавал.
А можно сделать совсем просто. В конфигурации proftpd.conf прописать alias пользователя anonymous на любого другого пользователя системы. Я бы советовал прописать на пользователя ftp, т.к. он уже создан.
UserAlias anonymous ftp
Потом надо только создать директорию /home/ftp и назначить права на эту директорию для пользователя ftp. Насчет пароля пользователя тут либо вы задаете пароль пользователю ftp (тогда anonymous будет с паролем), либо в конфигурации proftpd отключаете требование пароля на данного пользователя. Смотрите часть конфига ниже.
Если вы хотите тонко задавать различные права на какую-либо директорию в proftpd, то вот вам заготовка для пользователя anonymous, который в данном случае может читать все каталоги в директории /mnt
показать
Я думаю вы уловили идею. Если надо что-то ограничить какому-либо пользователю создавайте по шаблону как у anonymous и заставляйте его играть по вашим правилам 😉