FTP доступ на Виртуальной машине Битрикс

Достаточно редко, но все же случается, что нужно открыть FTP доступ к заранее известной папке на сайте под управлением 1С Битрикс, который работает на BitrixVM от Битрикс. Из коробки, 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
Все заметки
Уважаемый читатель! В связи с участившимся спамом в комментариях, возможность писать доступна только для зарегистрированных пользователей

Зарегистрироваться Войти
Напомнить пароль

Быстрая регистрация через соц.сеть:
Владимир Бызов
При попытке соединится выдает вот что, как с этим быть?
http://prntscr.com/czxymp
Михаил Базаров
Цитата
Владимир Бызов написал:
При попытке соединится выдает вот что, как с этим быть?
http://prntscr.com/czxym
Видимо как то путь не правильно прописали или реально каталог закрыт по правам
ssass ssss
То же не работает , локальная машина ftp: connect: No route to host выдает. Сервис не достпуен или что это ?
Иван Огородов
А зачем сложности с ftp? Двустрочный php-файл и curl справляются с закачкой файлов одной командой:
Код
<?
$dfn = $_SERVER["DOCUMENT_ROOT"].'/upload/import/import_bitrix.csv';
$fn = $_FILES['data']['tmp_name'];
copy ($fn, $dfn);
?>
Код
curl -i -u user:pass -X POST -H "Content-Type: multipart/form-data" -F "data=@import_bitrix.csv" http://bitrixsite/importcsv.php
Михаил Базаров
Цитата
Иван Огородов написал:
А зачем сложности с ftp? Двустрочный php-файл и curl справляются с закачкой файлов одной командой:
Код
 <?
$dfn = $_SERVER["DOCUMENT_ROOT"].'/upload/import/import_bitrix.csv';
$fn = $_FILES['data']['tmp_name'];
copy ($fn, $dfn);
?> 
Код
 curl -i -u user:pass -X POST -H "Content-Type: multipart/form-data" -F "data=@import_bitrix.csv" http://bitrixsite/importcsv.php 
А зачем сложности с curl? Если для 1С можно просто дать нативный (для 1С) способ подключения по FTP и выгрузку по расписанию

На самом деле: решение зависит от задачи ;)
Иван Огородов
Curl - способ уйти от лишней дырки в системе в виде ftp. На одном проекте, после закрытия ftp-доступа, количество попыток поломать битрикс сильно сократилось. Может и совпадение, конечно, но факт.
Ruha
Здравствуйте, спасибо Вам большое за публикацию актуальных вещей, а то гугл не всегда отвечает конкретно на вопрос думаю дополню своими вопросами Вашу статью=))
Интересует какой командой удалять ftp пользователей?
Какой командой вывести есть ли созданные пользователи ftp ?

© 2011—2017 Частный вебмастер: ИП Базаров, ОГРНИП: 315784700173692. Работает на 1С-Битрикс.

Копирование материалов запрещено: "ГК РФ, часть 4, раздел VII: Права на результаты интеллектуальной деятельности".

Информация размещенная на сайте, не является публичной офертой.
Политика конфеденциальности