Перевод статьи: http://alien2thisworld.net/sitePages/tutorials/vsftpd_virtual_users_setup.html
(Эта инструкция описывает установку и настройку в системе Fedora Core 6, но подходит ко всем дистрибутивам)
ШАГ 1: Установка требуемых пакетов:
pam (установлен по-умолчанию)
db4 (у меня была версия db4 и этот пакет уже был по-умолчанию)
vsftpd
compat-db (в этом пакете в fedora находится программа db42_load)
Проверим наличие установленного пакета 'db'
[root@mysystem vsftpd]# rpm -qa | grep -i dbЕсли пакет db4 не установлен, установим его:
[root@mysystem vsftpd]# yum install db4Пакет compat-db содержит программу db42_load, необходимую для создания базы данных, содержащей логины/пароли виртуальных пользователей
[root@mysystem vsftpd]# yum install compat-db [root@mysystem vsftpd]# yum install vsftpdНе можете найти программу dbXX_load после установки? Ознакомьтесь со списком файлов, входящих в пакет
[root@mysystem vsftpd]# rpm -ql compat-db
ШАГ 2: Настройка PAM
Убедитесь в существовании файла /lib/security/pam_userdb.so
[root@mysystem vsftpd]# rpm -ql pam | grep pam_userdb.so [root@mysystem vsftpd]# vi /etc/pam.d/vsftpd(этот файл должен выглядеть следующим образом:)
#%PAM-1.0 session optional pam_keyinit.so force revoke auth required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_users account required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_users #auth required pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed #auth required pam_shells.so #auth include system-auth #account include system-auth #session include system-auth #session required pam_loginuid.so
(обратите внимание: 6 последних строк закомментированы, чтобы pam_userdb действовал для пользователей FTP. С незакомментированными строчками аутентификация пользователей не удавалась)
ШАГ 3: Создаем системного пользователя для vsftpd (это обычный пользователь, без прямого доступа к FTP)
[root@mysystem vsftpd]# adduser -d /home/virtualftp/ virtualftp
ШАГ 4: Настройка vsftpd для работы с виртуальными пользователями
[root@mysystem vsftpd]# cd /etc/vsftpd [root@mysystem vsftpd]# vi vsftpd.conf(Итоговый vsftpd.conf:)
local_enable=YES write_enable=YES local_umask=022 dirmessage_enable=YES xferlog_enable=YES connect_from_port_20=YES xferlog_file=/var/log/vsftpd.log xferlog_std_format=YES chroot_local_user=YES listen=YES pam_service_name=vsftpd userlist_enable=YES tcp_wrappers=YES # Виртуальные пользователи будут попадать в /home/virtualftp/[username]/ user_sub_token=$USER local_root=/home/virtualftp/$USER guest_enable=YES guest_username=virtualftp # Umask для виртуальных пользователей и анонимных anon_umask=0022 # Разрешение на запись для виртуальных пользователей anon_upload_enable=YES # Разрешение создания каталогов для виртуальных пользователей anon_mkdir_write_enable=YES # Разрешение удаления файлов и каталогов для виртуальных пользователей anon_other_write_enable=YES
Теперь запускаем vsftpd (который настроен на запуск в одиночном режиме):
[root@mysystem vsftpd]# vsftpd
ШАГ 5: Ввод логинов и паролей для виртуальных пользователей
[root@mysystem vsftpd]# vi /etc/vsftpd/vsftpd_users.txt
(Формат файла:)
пользователь1 парольпользователя1 пользователь2 парольпользователя2 пользователь3 парольпользователя3
Теперь создадим файл в формате DB4, содержащий логины и пароли из текстового файла vsftpd_users.txt:
[root@mysystem vsftpd]# rm /etc/vsftpd/vsftpd_users.db [root@mysystem vsftpd]# db42_load -T -t hash -f /etc/vsftpd/vsftpd_users.txt /etc/vsftpd/vsftpd_users.db [root@mysystem vsftpd]# chmod 600 /etc/vsftpd/vsftpd_users.db /etc/vsftpd/vsftpd_users.txt
ШАГ 6: Создаем каталоги для каждого виртуального пользователя
[root@mysystem vsftpd]# mkdir -p /home/virtualftp/username1
ШАГ 7: Проверяем вход виртуального пользователя на FTP
[root@mysystem vsftpd]# ftp localhost Connected to localhost. 220 (vsFTPd 2.0.5) 530 Please login with USER and PASS. 530 Please login with USER and PASS. KERBEROS_V4 rejected as an authentication type Name (localhost:root): username1 331 Please specify the password. Password: 230 Login successful. Remote system type is UNIX Using binary mode to transfer files. ftp>
Возможные проблемы
Если возникают проблемы при входе виртуального пользователя на ftp, первым делом проверьте /var/log/secure !
[root@mysystem vsftpd]# tail -f /var/log/secure Mar 2 15:07:04 mysystem vsftpd: pam_userdb(vsftpd:auth): user 'testing' granted access Mar 2 15:07:04 mysystem vsftpd: pam_unix(vsftpd:auth): check pass; user unknown Mar 2 15:07:04 mysystem vsftpd: pam_unix(vsftpd:auth): authentication failure; logname= uid=0 euid=0 tty=ftp ruser=testing rhost=mysystem.cluster Mar 2 15:07:04 mysystem vsftpd: pam_succeed_if(vsftpd:auth): error retrieving information about user testing Mar 2 15:08:32 mysystem vsftpd: pam_userdb(vsftpd:auth): user 'testing' granted access Mar 2 15:11:15 mysystem vsftpd: pam_userdb(vsftpd:auth): user 'user0123456789012345678901234' granted access Mar 2 15:12:36 mysystem vsftpd: pam_userdb(vsftpd:auth): user 'user01234567890123456789012345' granted access Mar 2 15:13:43 mysystem vsftpd: pam_userdb(vsftpd:auth): user 'user012345678901234567890123456' granted access Mar 2 15:14:51 mysystem vsftpd: pam_userdb(vsftpd:auth): user 'user0123456789012345678901234567' granted access
Заметил, что файл vsftpd_users.db не правильно создается командой db42_load, если такой файл уже есть. Простым выходом из этого будет удаление файла vsftpd_users.db перед повторным созданием.
[root@mysystem vsftpd]# strings /etc/vsftpd/vsftpd_users.db [root@mysystem vsftpd]# db42_load -T -t hash -f /etc/vsftpd/vsftpd_users.txt /etc/vsftpd/vsftpd_users.db
Комментариев нет:
Отправить комментарий