Vsftpd на Debian

На линукс все-таки решил попробовать/​поставить фтп сервер — vsftpd. Авторизацию также решил сделать через mysql.

Для начала необходимо поставить собственно сам фтп сервер и пакет pam авторизации необходимый для авторизации через mysql:

# apt-​​get install vsftpd libpam-​​mysql

Теперь создаем базу vsftpd, пользователя user с паролем pass­word, даем пользователю user права на базу vsftpd и таблицу в базе vsftpd:

# mysql
mysql> CREATE DATABASE vsftpd;
mysql> GRANT ALL PRIVILEGES on vsftpd.* to user@localhost iden­ti­fied by ‘pass­word’;
mysql> USE vsftpd;
mysql> CREATE TABLE ‘accounts‘ (
mysql> ‘id‘ INT NOT NULL AUTO_​INCREMENT PRIMARY KEY ,
mysql> ‘user­name‘ VARCHAR( 30 ) NOT NULL ,
mysql> ‘pass‘ VARCHAR( 50 ) NOT NULL ,
mysql> UNIQUE (
mysql> ‘user­name‘
mysql> )
mysql> ) ENGINE = MYISAM ;

Далее создаем непривилигированного пользователя vsftp:

user­add –home /​usr/​ftp –gid nogroup –m –shell /​bin/​false vsftpd

и настроим сам сервер vsftpd и возможность авторизации через mysql. Для востановления/отката к старым настройках сохраним оригинальный файл с настройками и вносим в новый файл:

listen=YES
listen_ipv6=NO
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
anon_upload_enable=NO
anon_mkdir_write_enable=NO
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_file=/var/log/vsftpd.log
idle_session_timeout=600
data_connection_timeout=120
nopriv_user=vsftp
ftpd_banner=Hello !!
chroot_local_user=YES
secure_chroot_dir=/var/run/vsftpd
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/certs/vsftpd.pem
guest_enable=YES
guest_username=vsftp
local_root=/usr/ftp/
user_sub_token=$USER
virtual_use_local_privs=YES
user_config_dir=/etc/vsftpd_user_conf

Если вы хотите чтобы каждый новый пользователей попадал в свою собственную директорию — то в параметре local_​root задайте значение /usr/ftp/$USER.
Посмотреть примеры можно по адресу: http://​vsftpd​.beasts​.org/​v​s​f​t​p​d​_​c​o​n​f​.​h​tml
Далее настраиваем pam авторизацию — как обычно сохраняем исходный файл /etc/pam.d/vsftpd, а в новый файл вносим:

auth required pam_mysql.so user=user passwd=password host=localhost db=vsftpd table=accounts usercolumn=username passwdcolumn=pass crypt=2
account required pam_mysql.so user=user passwd=password host=localhost db=vsftpd table=accounts usercolumn=username passwdcolumn=pass crypt=2

Теперь создаем директорию /​usr/​ftp/​ и даем права на директорию:

# mkdir /​usr/​ftp/​
# chown vsftp:nogroup /​usr/​ftp/​

Добавляем пользователя в базу vsftpd:

mysql> INSERT INTO accounts (user­name, pass) VALUES(‘testuser’, PASSWORD(‘secret’));

Пароль в базе зашифрованный — так что теперь вы можете его только сменить.
Вот и все — запускаете сервер(или перезапускаете — если уже запущен) и пользуйтесь.
Большую помощь в настройки оказал этот ресурс

No Comments

Leave a Reply