VSFTPD сервер - тонкости настройки
При настройке важно понимать несколько моментов.
Настройка каталогов и шелл
-
Если используем chroot - владельцем домашнего каталога пользователя FTP должен быть другой пользователь (обычно root, но иногда был, например, bitrix) Права на каталог /home/ftpuser 775
-
Группу для пользователя ставим ftp, а шелл /usr/sbin/nologin
Важный момент! Надо вписать /usr/sbin/nologin в файл /etc/shells
Это необходимо, поскольку по умолчанию vsftpd использует авторизацию PAM, а файл настроек /etc/pam.d/vsftpd содержит:
- Запись в корневую папку таким образом становится недоступной - надо создать подпапку (обычно: upload) и на нее уже ставить владельцем текущего FTP-пользователя.
Пассивный режим
- Обязательно настраивать пассивный режим работы, т.к. он нужен в большинстве практических задач.
- В правилах файерволла надо открыть, помимо 21, 20 портов, еще и диапазон пассивных портов.
- При настройке FTP-сервера на Centos 7 столкнулся с тем, что обязательно надо добавить в конфиг параметр:
port_enable=YES
. Без этого не будет работать.
Файерволл
Для открытия диапазона пассивных портов используйте скрипт:
В Centos - сначала определим активную зону:
Затем, добавим правило:
Вот образец правильного конфига (проверено временем):
listen=YES
listen_port=21
listen_ipv6=NO
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
chown_uploads=YES
xferlog_file=/var/log/vsftpd.log
idle_session_timeout=600
ftpd_banner=Welcome to Omega FTP service.
chroot_local_user=YES
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
ssl_enable=NO
utf8_filesystem=YES
pasv_enable=YES
pasv_min_port=5500
pasv_max_port=5600
#pasv_address=10.100.1.33
pasv_address=85.143.178.30
# обязательно для Centos 7!
port_enable=YES
При загрузке файлов через vsftpd у файлов менялись права на 755.
Это не давало право участникам группы впоследствии менять (удалять) файлы, закачанные их коллегами (из той-же группы).
local_umask=022
означает что у файлов будет “вычтены” (замаскированы) права по данной маске.
Считается просто: file_open_mode - local_umask
Не забываем, что загруженные по умолчанию файлы не имеют права на запуск (т.е. 666).
Чтобы это исправить, надо явно указывать в конфиге file_open_mode=0777
:
Сначала
umask
, потом open_mode
Иначе все файлы будут с правами 777.
Важно!! Если надо доступ из интернет и из LAN, то надо менять запись pasv_address
.
При этом мне не удалось обеспечить работу в пассивном режиме сразу и изнутри и снаружи.
Поставил pasv_address=85.143.178.30 для внешних клиентов, а изнутри использую “активный” режим.
11.07.2017