How-to FTP(vsftpd) + Virtual User+htpasswd

Привіт
Зустрівся з проблемою:
На  FTP (ProFtpd) сервері потрібно мати кількох користувачів,
які мають деякі спільні файли.
Куріння мануалів не дало повноціного.
Найшов рішення на основі VsFTPd+ Virtual User.

Ну і відповідно хід виконання:
Крок 1:
Встановлення останніх оновлень.


Крок 2:
Встановлення VsFTPd:
$ yum install vsftpd -y


Крок 3:
Встановлення  пакунку 'pam-pam_pwdfile', він потрібен щоб при авторизації користувачі  використовувався файл, який створений командою 'htpasswd'ю
Його можна знайти:
http://cpbotha.net/files/pam_pwdfile/
http://rpm.pbone.net/index.php3/stat/4/idpl/2325505/dir/pld/com/pam-pam_pwdfile-0.99-2.i386.rpm.html
$ rpm -i pam-pam_pwdfile-0.99-2.i386.rpm


Крок 4:
Створення або редакція файлу '/etc/pam.d/vsftpd', він має мати наступний вигляд:
#%PAM-1.0

auth required /lib/security/pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
auth required /lib/security/pam_pwdfile.so pwdfile /etc/vsftpd/vsftpd_pwdfile
account    required   /lib/security/pam_permit.so
#

Крок 5:
Створюємо файл із користувачами:
$ htpasswd -c /etc/vsftpd/ftpusers admin
та добавляемо решту користувачів
$ htpasswd  /etc/vsftpd/ftpusers admin1
або
$ htpasswd -b  /etc/vsftpd/ftpusers admin1 admin1password

Крок 6:
Змінюємо або редагуємо '/etc/vsftpd/vsftpd.conf'
Варто звернути увагу, що всі файлові операції(chown) будуть відноситься до системного користувача в даному моменту 'apache' ви можете його змінити на свого
Рядок 'chown_username=apache'


# vsftpd.conf
anonymous_enable=NO
local_enable=YES
write_enable=YES
anon_umask=000
local_umask=000
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
chown_uploads=YES
chown_username=apache
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES
idle_session_timeout=600
data_connection_timeout=220
chmod_enable=YES
file_open_mode=0777
virtual_use_local_privs=YES
ftpd_banner=Welcome to  FTP service.
chroot_local_user=YES
user_sub_token=$USER
user_config_dir=/etc/vsftpd/vsftpd_user_conf
guest_enable=yes
guest_username=site
pasv_enable=YES
pasv_min_port=11345
pasv_max_port=11350
ls_recurse_enable=YES
listen=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES

Крок 7:
Створюємо файли конфігурації (ACL) для наших FTP користувачів.
Назви файла та імена користувачів має бути однаковим.
На даний момент ми маємо 2 користувача admin та admin1

$ mkdir -pv  /etc/vsftpd/vsftpd_user_conf
$ touch  /etc/vsftpd/vsftpd_user_conf/admin
$ touch  /etc/vsftpd/vsftpd_user_conf/admin1

Вигляд  '/etc/vsftpd/vsftpd_user_conf/admin':
# /etc/vsftpd/vsftpd_user_conf/admin
dirlist_enable=YES
download_enable=YES
local_root=/srv/swww_home/
write_enable=YES
chmod_enable=YES

Та вигляд  '/etc/vsftpd/vsftpd_user_conf/admin1':
# /etc/vsftpd/vsftpd_user_conf/admin1
dirlist_enable=YES
download_enable=YES
local_root=/srv/swww_home/
write_enable=YES
chmod_enable=YES





Взагальному все.
Варто попередньо переглянути ці доки:

P.S.
Можливі проблеми:
Користувач Ftp не може залогуватись

Рішення:
1) перевірити чи паролі співпадають
2) перевірити 
чи  'local_root' користувача є (створений) та  
чи локальний користувач, від якого операції проводяться має прово туди зайти
типу 
su  apache -c 'cd /srv/swww_home/;  mkdir  -pv ./test'

3) Перевірити чи 'pam_listfile.so' знаходится саме там як прописано у файлу '/etc/pam.d/vsftpd'.




Коментарі