VSFTPD сервер - тонкости настройки
pasv_enable
vsftpd
При настройке важно понимать несколько моментов.
1) Если используем chroot - владельцем домашнего каталога пользователя FTP должен быть другой пользователь обычно root, но иногда был, например, bitrix
Права на каталог /home/ftpuser 775
2) Группу для пользователя ставим ftp, а шелл /usr/sbin/nologin
Важный момент! Надо вписать /usr/sbin/nologin в файл /etc/shells
Это необходимо, поскольку по умолчанию vsftpd использует авторизацию PAM, а файл настроек /etc/pam.d/vsftpd содержит:
auth required pam_shells.so
Модуль PAM shells ограничивает доступ к оболочкам, перечисленным в файле /etc/shells.
3) Запись в корневую папку таким образом становится недоступной - надо создать подпапку (обычно: upload) и на нее уже ставить владельцем текущего FTP-пользователя.
4) Обязательно настраивать пассивный режим работы, т.к. он нужен в большинстве практических задач.
5) В правилах файерволла надо открыть, помимо 21, 20 портов, еще и диапазон пассивных портов.
6) 10.07.17 при настройке FTP-сервера на Centos 7 столкнулся с тем, что обязательно надо добавить в конфиг параметр: port_enable=YES
Без этого никак не хотел работать.
iptables -I INPUT -p tcp --dport 5500:5600 -j ACCEPT
service iptables save
service iptables restart
В Centos - сначала определим активную зону:
# firewall-cmd --get-active-zones
public
interfaces: eth0
Затем, добавим правило:
# firewall-cmd --permanent --zone=public --add-port=5500-5600/tcp
# firewall-cmd --reload
Вот образец правильного конфига проверено временем:
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
777 - 022 = 755
Не забываем, что загруженные по умолчанию файлы не имеют права на запуск (т.е. 666)
Чтобы это исправить, надо явно указывать в конфиге file_open_mode=0777
local_umask=022
file_open_mode=0777
Порядок следования параметров имеет важное значение!
Сначала umask, потом open_mode…
Иначе все файлы будут с правами 777
ВАЖНО! Если надо доступ из интернет и из LAN, то надо менять запись pasv_address
При этом мне не удалось обеспечить работу в пассивном режиме сразу и изнутри и снаружи.
Поставил pasv_address=85.143.178.30 для внешних клиентов, а изнутри использую "активный" режим.
aizaro@mail.ru 11.07.2017