Проект переехал на новый домен!  [[ перейти ]]

vsftpd + mysql

Подразумеваеться, что mysql уже установлен...
http://vsftpd.beasts.org/vsftpd_conf.html
http://pam-mysql.sourceforge.net/Documentation/
sh# cat /usr/local/share/doc/pam_mysql/README | less

# Нужно создать пользователя ftp с uid 14, если таковой 
# отсутствует иначе vsftpd будет ругаться и не установиться...
sh# pw group add -n ftp -g 14 
sh# pw user add -n ftp -u 14 -c "Anonymous FTP" -d /dev/null -s /usr/sbin/nologin

sh# cd /usr/ports/ftp/vsftpd && make install clean

# Создаём пользователя от которого будут работать все виртуальные пользователи.
sh# pw group add -n vsftpd -g 1100
sh# pw user add -n vsftpd -u 1100 -c "vsFTPd user" -d /work/vsftpd -s /usr/sbin/nologin
sh# mkdir -p /work/vsftpd && chown vsftpd:vsftpd /work/vsftpd

# Лог для отладки
sh# touch /var/log/vsftpd

# Наш конфиг
-----------------------------------------------
listen_ipv6=NO

listen=YES
background=YES

connect_from_port_20=YES
listen_port=21

pasv_min_port=4000
pasv_max_port=4500

max_clients=5
max_login_fails=0
max_per_ip=2

anonymous_enable=NO
local_enable=YES

#syslog_enable=YES
#dual_log_enable=YES
#log_ftp_protocol=YES
xferlog_enable=YES
#xferlog_std_format=YES
#xferlog_file=/var/log/xferlog
#xferlog_file=/var/log/vsftpd.log
#vsftpd_log_file=/var/log/vsftpd.log

nopriv_user=vsftpd

guest_enable=YES
guest_username=vsftpd

pam_service_name=vsftpd

chroot_local_user=YES

local_root=/work/vsftpd/

virtual_use_local_privs=YES
user_config_dir=/conf/vsftpd_user_conf

write_enable=YES
local_umask=022
force_dot_files=NO

secure_chroot_dir=/usr/local/share/vsftpd/empty
-----------------------------------------------

sh# cat vsftpd.sql
-----------------------------------------------------------------------------
DROP DATABASE IF EXISTS vsftpd;
CREATE DATABASE vsftpd;

USE vsftpd;

CREATE TABLE accounts (
id INT(4) NOT NULL AUTO_INCREMENT,
user VARCHAR(16) BINARY NOT NULL,
pass VARCHAR(16) BINARY NOT NULL,
PRIMARY KEY (Id)
);

CREATE USER vsftpd@localhost IDENTIFIED BY 'dptfsv';
GRANT ALL PRIVILEGES ON vsftpd.* TO vsftpd@localhost IDENTIFIED BY 'dptfsv';

FLUSH PRIVILEGES;
-----------------------------------------------------------------------------
sh# mysql --user=xxxxxx --password=xxxxxx < vsftpd.sql

sh# cat add_user.sql
-----------------------------------------------------------------------
INSERT INTO vsftpd.accounts (user, pass) VALUES('adm', ENCRYPT('123'));
-----------------------------------------------------------------------
sh# mysql --user=xxxxxx --password=xxxxxx < add_user.sql

sh# cd /usr/ports/security/pam-mysql && make install clean
sh# ln -sf /usr/local/lib/pam_mysql.so /usr/lib/pam_mysql.so

sh# ee /etc/pam.d/vsftpd
---------------------------------------------------------------------------------------
auth	sufficient	/usr/lib/pam_mysql.so	config_file=/conf/vsftpd-fpam-mysql.cfg
account	required	/usr/lib/pam_mysql.so	config_file=/conf/vsftpd-pam-mysql.cfg
---------------------------------------------------------------------------------------

sh# ee /conf/vsftpd-pam-mysql.cfg
---------------------------
users.host=localhost
users.database=vsftpd
users.db_user=vsftpd
users.db_passwd=dptfsv
users.table=accounts
users.user_column=user
users.password_column=pass
users.password_crypt=1
users.use_md5=false
verbose=1
log.enabled=false
---------------------------
sh# chmod 600 /conf/vsftpd-pam-mysql.cfg