Бывает что нужно открыть FTP доступ к заранее известной папке на сайте под управлением 1С Битрикс, который работает на виртуальной машине от Битрикс. Из коробки, FTP сервера там нет. Расскажу как настроить и ограничить FTP доступ одной папкой, на примере реальной задачи.
Итак: 1С Управление Торговлей умеет подключаться только по FTP, и только по 21-ому порту. На одном из разрабатываемых сайтов, 1С-УТ, с заданной периодичностью, должна была выкладывать прайс-лист в конкретную директорию внутри сайта.
Имеем: сайт работающий на Битрикс VM под управлением CentOS, директория куда должно происходить FTP соединение (от корня системы) /home/bitrix/ext_www/site.ru/price
Задача, настроить FTP доступ к данной директории, при этом создав отдельного пользователя и пароль, и ограничить этого пользователя только данной директорией- для безопасности. Все создаваемые им файлы должны принадлежать пользователю "bitrix", что бы веб-сервер мог с ними работать.
Для начала ставим pure-ftpd, в терминале выполняем команду
yum install pure-ftpd
Открываем на редактирование файл /etc/pure-ftpd/pure-ftpd.conf и раскомментируем строку
PureDB /etc/pure-ftpd/pureftpd.pdb
Создаем файл для хранения паролей FTP пользователей
touch /etc/pure-ftpd/pureftpd.passwd
Скачиваем вот этот архив, распаковываем и кладем файл gen_ftp_user.sh в директорию /root/ и добавляем право на запуск скрипта
chmod u+x /root/gen_ftp_user.sh
Открываем 21-ый порт в IP tables: команды выполнять поочереди
iptables -I INPUT -p tcp --dport 21 -m state --state NEW -j ACCEPT //Открываем порт
service iptables save //сохраняем
/etc/init.d/iptables restart //перезапускаем
И выполняем скрипт по следующему паттерну:
/root/gen_ftp_user.sh "bitrix" "ЛОГИН" "ПАРОЛЬ" "ПУТЬ ДО НУЖНОЙ ДИРЕКТОРИИ"
Для наглядности, в озвученной выше задаче было вот так
/root/gen_ftp_user.sh "bitrix" "1c_price" "YTprIGHce" "/home/bitrix/ext_www/site.ru/price"
Вот, в общем-то и все
Дополнительно по pure-ftpd
При перезагрузке виртуальной машины Битрикс, Pure-Ftpd не запускается автоматически, вы можете либо запускать его вручную командой
/etc/init.d/pure-ftpd start
Либо выполнить вот такую команду, что бы Pure-Ftpd запускался автоматически при перезагрузке/запуске системы
chkconfig --levels 235 pure-ftpd on
Для CentOS 7
В начале установить полную поддержку iptables
install iptables-services
Чтобы удобнее редактировать конфиги и ходить по каталогам ставим файловый менеджер
install mc
Чтобы распаковать скачанный архив
yum install unzip
Архив скачать
nwget https://camouf.ru/upload/fo_all/gen_ftp_user.sh.zip
Распаковать
unzip gen_ftp_user.sh.zip
В конфиге файл /etc/pure-ftpd/pure-ftpd.conf
MinUID ставим 100 за место 1000
(user bitrix для группы наших виртуальных пользователей у меня имел UID 600 и мне выдавало, что пароль не верент при подключении на FTP)