Kategorie
Ftp serwer

Proftpd with MySQL backend on Ubuntu 16.04

1) Instalujemy wymagane pakiety (dla serwera z dużym obciążeniem wybieramy standalone dla serwera z kilkoma połączeniami dziennie wybieramy opcję inetd):

root@server:/#  apt-get install proftpd-basic proftpd-mod-mysql
2) Ustawiamy paramatry w pliku konfiguracyjnym:
root@server:/# vim /etc/proftpd/proftpd.conf
Usuwamy komentarze przed poniższymi liniami lub je dodajemy:

Przed:
#DefaultRoot         ~
#RequireValidShell off
#Include /etc/proftpd/sql.conf

Po:
DefaultRoot ~
RequireValidShell off
Include /etc/proftpd/sql.con
3) Dodajemy użytkownika i grupę:
root@server:/# groupadd -g 2001 ftpgroup
root@server:/# useradd -u 2001 -s /bin/false -d /bin/null -c "proftpd user" -g ftpgroup ftpuser
4) Dodajemy moduły:
Edytujemy plik /etc/proftpd/modules.conf
root@server:/# vim /etc/proftpd/modules.conf

i usuwamy komentarz z poniższych linii:

Przed:
#LoadModule mod_sql.c
#LoadModule mod_sql_mysql.c

Po:
LoadModule mod_sql.c
LoadModule mod_sql_mysql.c
5) Tworzymy bazę danych:
logujemy się do serwra Mysql:
root@server:/# mysql -u root -p
i tworzymy bazę danych o nazwie proftpd:
create database proftpd;
dodajemy użytkownika i nadajemy mu uprawnienia do bazy (zamiast „password” podajemy nowe hasło do bazy danych):
GRANT SELECT, INSERT, UPDATE, DELETE ON proftpd.* TO `proftpd`@`localhost` IDENTIFIED BY 'password';
FLUSH PRIVILEGES;
USE proftpd;
i dodajemy do niej dwie poniższe tabele:
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 COMMENT='ProFTP group table';
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 COMMENT='ProFTP user table';
Dodajemy dane do tabel (zamiast nazwauzytkownika, haslo i /var/www/example.com/ podstawiamy nasze dane):
INSERT INTO `ftpgroup` (`groupname`, `gid`, `members`) VALUES ('ftpgroup', 2001, 'ftpuser');
INSERT INTO `ftpuser` (`id`, `userid`, `passwd`, `uid`, `gid`, `homedir`, `shell`, `count`, `accessed`, `modified`) VALUES ('', 'nazwauzytkownia', ENCRYPT('haslo'), 2001, 2001, '/var/www/example.com/', '/sbin/nologin', 0, '', '');
exit;
6) Ustawiamy parametry dla bazy danych:
edytujemy plik /etc/proftpd/sql.conf:
root@server:/# vim /etc/proftpd/sql.conf
i ustawiamy poniższe parametry (w pozycji SQLConnectInfo zamieniamy proftpd@sql.example.com proftpd_user proftpd_password na proftpd@localhost proftpd hasłodobazy):
SQLBackend mysql
SQLAuthTypes Crypt
SQLConnectInfo proftpd@localhost proftpd password
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
7) Restart serwera proftpd:
root@server:/# service proftpd restart
Po restarcie powinna być możliwość zalogowania do serwera.
 
8) Debugowanie:
Jeśli są problemy z połączeniem z serwerem ftp można go uruchomić w trybie debugowania:
root@server:/# service proftpd stop
root@server:/# service proftpd -nd6

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *