== instalujemy serwer mysql i proftpd z mod_mysql
apt-get install mysql-server apt-get install proftpd proftpd-mod-mysql
== dodajemy user i grupe dla wirtualnych userow
groupadd -g 2001 ftpgroup useradd -u 2001 -s /bin/false -d /bin/null -c "proftpd user" -g ftpgroup ftpuser
== zakladamy usera, baze i tabele w mysql
mysql -u root -p GRANT SELECT, INSERT, UPDATE, DELETE ON ftp.* TO 'proftpd'@'localhost' IDENTIFIED BY 'haslodlasuperuserawbazie'; GRANT SELECT, INSERT, UPDATE, DELETE ON ftp.* TO 'proftpd'@'localhost.localdomain' IDENTIFIED BY 'haslodlasuperuserawbazie'; FLUSH PRIVILEGES; CREATE DATABASE ftp; USE ftp; CREATE TABLE ftpgroup ( groupname varchar(16) NOT NULL default '', gid smallint(6) NOT NULL default '2001', members varchar(16) NOT NULL default '', KEY groupname (groupname) ) ENGINE=MyISAM;
CREATE TABLE ftpuser ( id int(10) unsigned NOT NULL auto_increment, userid varchar(32) NOT NULL default '', passwd varchar(32) NOT NULL default '', uid smallint(6) NOT NULL default '2001', gid smallint(6) NOT NULL default '2001', homedir varchar(255) NOT NULL default '', shell varchar(16) NOT NULL default '/sbin/nologin', count int(11) NOT NULL default '0', accessed datetime NOT NULL default '0000-00-00 00:00:00', modified datetime NOT NULL default '0000-00-00 00:00:00', PRIMARY KEY (id), UNIQUE KEY userid (userid) ) ENGINE=MyISAM;
quit;
== konfigurujemy proftpd
vim /etc/proftpd/proftpd.conf <add replace uncoment> DefaultRoot ~ CreateHome on Include /etc/proftpd/sql.conf RequireValidShell off
== ladujemy modul mysql'a
vim /etc/proftpd/modules.conf LoadModule mod_sql.c LoadModule mod_sql_mysql.c
== konfigurujemy polaczenie proftpd z mysql
# vim /etc/proftpd/sql.conf SQLBackend mysql SQLAuthTypes Crypt SQLConnectInfo ftp@localhost proftpd haslodlasuperuserawbazie SQLUserInfo ftpuser userid passwd uid gid homedir shell SQLGroupInfo ftpgroup groupname gid members # Update count every time user logs in SQLLog PASS updatecount SQLNamedQuery updatecount UPDATE "count=count+1, accessed=now() WHERE userid='%u'" ftpuser SQLLog STOR,DELE modified SQLNamedQuery modified UPDATE "modified=now() WHERE userid='%u'" ftpuser
== dodajemy usera ftp w bazie (do tego trzeba napisac cos w php)
# mysql -u root -p
INSERT INTO `ftpgroup` (`groupname`, `gid`, `members`) VALUES ('ftpgroup', 2001, 'ftpuser');
INSERT INTO `ftpuser` (`id`, `userid`, `passwd`, `uid`, `gid`, `homedir`, `shell`, `count`, `accessed`, `modified`) VALUES ('', 'username', ENCRYPT('password'), 2001, 2001, '/var/www/ftp/username/', '/sbin/nologin', 0, '', '');
== zmieniamy uprawnienia na katalogu w ktorym beda katalogi domeowe userow ftp
# chown ftpuser:ftpgroup /var/www/ftp/
== restart proftpd
# service proftpd stop # service proftpd start
done