На линукс все-таки решил попробовать/поставить фтп сервер — 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’));
Пароль в базе зашифрованный — так что теперь вы можете его только сменить.
Вот и все — запускаете сервер(или перезапускаете — если уже запущен) и пользуйтесь.
Большую помощь в настройки оказал этот ресурс
No Comments