Vsftpd на Debian

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

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

# apt-get install vsftpd libpam-mysql

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

# mysql
mysql> CREATE DATABASE vsftpd;
mysql> GRANT ALL PRIVILEGES on vsftpd.* to user@localhost identified by ‘password’;
mysql> USE vsftpd;
mysql> CREATE TABLE `accounts` (
mysql> `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
mysql> `username` VARCHAR( 30 ) NOT NULL ,
mysql> `pass` VARCHAR( 50 ) NOT NULL ,
mysql> UNIQUE (
mysql> `username`
mysql> )
mysql> ) ENGINE = MYISAM ;

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

useradd –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/vsftpd_conf.html
Далее настраиваем 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 (username, pass) VALUES(‘testuser’, PASSWORD(‘secret’));

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

Leave a Reply