Настройка VSFTPd на CentOS (виртуальные пользователи)
Если перед Вами стоит вопрос доступа к вашему Linux серверу по FTP, удобным решением может стать ftp-сервер VSFTPd на основе виртуальных пользователей (отдельно заданные пользователи, не имеющие отношения к пользователям Linux). Тут Вы найдете пошаговую инструкцию по его настройке.
Установка
Устанавливаем пакет VSFTPd:
#yum -y install vsftpd
Устанавливаем пакет баз данных (понадобится для учета пользователей)
#yum install compat-db
Создание пользователя для ftp
#adduser -d /home/vweb/ virtualftp -s /sbin/nologin
Редактируем конфиги vsftpd
#nano /etc/vsftpd/vsftpd.conf
Редактируем параметр pam_service_name= :
pam_service_name=vsftpd-db
Добавляем блок информации о виртуальных пользователях
# Virtual users will be logged into /home/vweb/[username]/
user_sub_token=$USER
local_root=/home/vweb/$USER
guest_enable=YES
guest_username=virtualftp
# Umask applied for virtual users and anon
anon_umask=0022
# Allows uploading by virtual users
anon_upload_enable=YES
# Allows creation of directories by virtual users
anon_mkdir_write_enable=YES
# Allows deletion of files and directories by virtual users
anon_other_write_enable=YES
Создаем файл vsftpd-db
#nano /etc/pam.d/vsftpd-db
Содержание файла:
session optional pam_keyinit.so force revoke
auth required /lib64/security/pam_userdb.so debug db=/etc/vsftpd/login
account required /lib64/security/pam_userdb.so debug db=/etc/vsftpd/login
При этом файл с паролями будет в /etc/vsftpd/login.db
Создаем файл пользователей FTP
#nano /etc/vsftpd/login.txt
Формат файла-оригинала (login.txt):
user1
pass1
user2
pass2
и т.д.
Генерируем файл паролей
#rm /etc/vsftpd/login.db
#db42_load -T -t hash -f /etc/vsftpd/login.txt /etc/vsftpd/login.db
#chmod 600 /etc/vsftpd/vsftpd_users.db /etc/vsftpd/login.txt
Создаем директории для пользователей
#mkdir -p /home/vweb/user1
#mkdir -p /home/vweb/user2
Запускаем VSFTPd
#service vsftpd start
После этого можно попробовать войти на сервер.
Фиксация ошибок
Не удается войти на сервер:
#chown -R virtualftp:virtualftp /home/vweb/
#chmod -R 644 /home/vweb/
#find /home/vweb/ -type d -exec chmod 755 {} \;
При попытки соединения сервер пишет «500 OOPS: cannot change directory». Возможно проблема в SELinux.
#/usr/sbin/setsebool -P ftp_home_dir=1
Дополнительная информация:
Разрешаем пользователям FTP доступ к другим каталогам кроме своего
Бывает, что необходимо выделить пользователям доступ к файлом находящимся вне их основной ftp директории. Для используемого мной варианта отлично подошла модель mount -o bind.
В папке пользователя создаем папку для монтирования
#mkdir -p /home/vweb/user1/dirmount
Монтируем нужный каталог в эту папку:
#mount -o bind что_монтируем куда_монтируем
т.е.
#mount -o bind что_монтируем /home/vweb/user1/dirmount
Недостатком этой системы можно считать то, что после перезагрузки сервера монтировать каталоги придется заново.
Поделиться "Настройка VSFTPd на CentOS (виртуальные пользователи)"