Crmgo Блог

vsftpd

vsftpd

yum install vsftpd chkconfig vsftpd on service vsftpd start Со штатными настройками будет пускать пользователей, имеющих аккаунты в системе, с их паролями. ! по умолчанию разрешены анонимные логины! Возможно изменить штатное поведение и авторизовывать не только системных пользователей, но и…

vsftpd

yum install vsftpd

chkconfig vsftpd on
service vsftpd start

Со штатными настройками будет пускать пользователей, имеющих аккаунты в системе, с их паролями.
! по умолчанию разрешены анонимные логины!

Возможно изменить штатное поведение и авторизовывать не только системных пользователей, но и по спец списку. Формально они тогда будут работать от заданного пользователя типа ftpuser.
Не забываем, что это настраивается через pam, в /etc/pam.d/vsftpd
Штатный файл:

#%PAM-1.0
session optional pam_keyinit.so force revoke
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

BDB
Для авторизации через db - лучше создать отдельный файл и его задать в конфиге
/etc/pam.d/vsftpd-db
Выбор pam-конфига через pam_service_name=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
Формат файла-оригинала (login.txt):
юзер1
пароль1
юзер2
пароль2
(перевод строки в конце. Без него может не работать!)

Генерация файла паролей:
db_load -T -t hash -f login.txt /etc/vsftpd/login.db

подробнее

Через MySQL
ставим pam_mysql

/etc/pam.d/vsftpd-mysql
auth required pam_mysql.so user=vsftpd passwd=ftpdpass host=localhost db=vsftpd table=accounts usercolumn=username passwdcolumn=pass crypt=2 account required pam_mysql.so user=vsftpd passwd=ftpdpass host=localhost db=vsftpd table=accounts usercolumn=username passwdcolumn=pass crypt=2

Проверить работу mysql, добавить базу и пользователя
CREATE DATABASE vsftpd;
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON vsftpd.* TO 'vsftpd'@'localhost' IDENTIFIED BY 'ftpdpass';
FLUSH PRIVILEGES;

Создаем таблицу:
CREATE TABLE 'accounts' ( 'id' INT NOT NULL AUTO_INCREMENT PRIMARY KEY , 'username' VARCHAR(30) NOT NULL , 'pass' VARCHAR( 50 ) NOT NULL , UNIQUE ( 'username' ) ) ENGINE = MYISAM ;
quit;

Добавить системного пользователя
vsftpd:*:1003:1003:User &:/home/vsftpd:/sbin/nologin

Добавление пользователя
#mysql -u root
USE vsftpd;
INSERT INTO accounts (username, pass) VALUES(’testuser’, PASSWORD(’secret’));
quit;

 

_______________________________________________________

возникшая у меня проблема:  cannot change directory:/home/username

по дефолту включен selinux, который и доставляет проблему, лечится

setsebool -P ftp_home_dir 1

И добавлением одной строки в «vsftpd.conf»:

session_support=YES
service vsftpd restart
Проблема возникает из-за того, что vsftpd по умолчанию не трогает модули сервиса session в PAM.

http://www.opennet.ru/base/net/vsftpd_overview.txt.html подробная статья на эту тему

 

Примечание: материал мог быть создан с помощью ИИ и затем отредактирован человеком. Ответственный: Dmytro Lomaka, Kaltenkirchen.