# /usr/ports/databases/mysql41-server # make install clean
В /etc/rc.conf добавим:
mysql_enable = "YES"
Запускаем mysql
# / usr / local / etc / rc.d / mysql-server start
Создадим базу где будут храниться логины и пароли от пользователей. Владелец базы vsftpd, пароль ftpdpass
# mysql -u root -p
CREATE DATABASE vsftpd; GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON vsftpd. * TO "vsftpd" @ "localhost" IDENTIFIED BY "ftpdpass" ; GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON vsftpd. * TO "vsftpd" @ "localhost.localdomain" IDENTIFIED BY "ftpdpass" ; FLUSH PRIVILEGES;
Создаем таблицу:
USE vsftpd;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;
Далее командой
# adduser
создаем пользователя с похожими данными /etc/passwd
Создаем конфигурационный файл vsftpd, что бы pam функционировал с фпт сервером
# ee / etc / pam.d / vsftpd
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
В файле /etc/pam.d/vsftpd убедитесь, что бы было только 2 строки(первая начинается с auth required, вторая account required), без переносов.
Добавим тестового пользователя с логином testuser и паролем secret:
USE vsftpd; INSERT INTO accounts ( username, pass ) VALUES ( "testuser" , PASSWORD ( "secret" ) ) ;quit;
И еще немного прав пользователям на каталоги:
mkdir / home / vsftpd / testuser chown vsftpd:nogroup / home / vsftpd / testuser
Запускаем:
# / usr / local / etc / rc.d / vsftpd.sh start
P.S. в качестве фаервола я всегда использую pf, добавляем в /etc/pf.conf правила для фтп сервера:
pass in on $ext_if inet proto tcp from any port 1024 : 65535 to ваш.ip.адрес port 21 flags S / SA keep state pass in on $ext_if inet proto tcp from any port 1024 : 65535 to ваш.ip.адрес port 50000 : 50100 flags S / SA keep state
Строки pasv_min_port=50000 pasv_max_port=50100 в /usr/local/etc/vsftpd.conf означают, что открываются порты с 50000 до 50100 для пассивного режима работы фтп сервера и максимально может быть только 100 одновременных сессий.
pss: пользователей можно заводить и при помощи обычного phpmyadmin
Для использования FTPS необходимо установить vsftpd с поддержкой SSL и в конфигурации добавить