{"id":2403,"date":"2018-12-02T20:16:38","date_gmt":"2018-12-02T19:16:38","guid":{"rendered":"https:\/\/www.techmedia.pl\/blog\/?p=2403"},"modified":"2018-12-03T00:16:18","modified_gmt":"2018-12-02T23:16:18","slug":"proftpd-with-mysql-backend-on-ubuntu-16-04","status":"publish","type":"post","link":"https:\/\/www.techmedia.pl\/blog\/proftpd-with-mysql-backend-on-ubuntu-16-04\/","title":{"rendered":"Proftpd with MySQL backend on Ubuntu 16.04"},"content":{"rendered":"<p>1) <span style=\"color: #3366ff;\">Instalujemy wymagane pakiety<\/span> (dla serwera z du\u017cym obci\u0105\u017ceniem wybieramy standalone dla serwera z kilkoma po\u0142\u0105czeniami dziennie wybieramy opcj\u0119 inetd):<\/p>\n<pre>root@server:\/#  <strong>apt-get install proftpd-basic proftpd-mod-mysql<\/strong><\/pre>\n<div>2) <span style=\"color: #3366ff;\">Ustawiamy paramatry w pliku konfiguracyjnym<\/span>:<\/div>\n<pre>root@server:\/# <strong>vim \/etc\/proftpd\/proftpd.conf<\/strong><\/pre>\n<div>Usuwamy komentarze przed poni\u017cszymi liniami lub je dodajemy:<\/div>\n<p><!--more--><\/p>\n<pre>Przed:\r\n#DefaultRoot         ~\r\n#RequireValidShell off\r\n#Include \/etc\/proftpd\/sql.conf\r\n\r\nPo:\r\nDefaultRoot ~\r\nRequireValidShell off\r\nInclude \/etc\/proftpd\/sql.con<\/pre>\n<div>3) <span style=\"color: #3366ff;\">Dodajemy u\u017cytkownika i grup\u0119<\/span>:<\/div>\n<div>\n<pre>root@server:\/# <strong>groupadd -g 2001 ftpgroup<\/strong>\r\nroot@server:\/# <strong>useradd -u 2001 -s \/bin\/false -d \/bin\/null -c \"proftpd user\" -g ftpgroup ftpuser<\/strong><\/pre>\n<\/div>\n<div>4) <span style=\"color: #3366ff;\">Dodajemy modu\u0142y<\/span>:<\/div>\n<div>Edytujemy plik \/etc\/proftpd\/modules.conf<\/div>\n<pre>root@server:\/# <strong>vim \/etc\/proftpd\/modules.conf<\/strong><\/pre>\n<p>i usuwamy komentarz z poni\u017cszych linii:<\/p>\n<pre>Przed:\r\n#LoadModule mod_sql.c\r\n#LoadModule mod_sql_mysql.c\r\n\r\nPo:\r\nLoadModule mod_sql.c\r\nLoadModule mod_sql_mysql.c<\/pre>\n<div>5) <span style=\"color: #3366ff;\">Tworzymy baz\u0119 danych<\/span>:<\/div>\n<div>logujemy si\u0119 do serwra Mysql:<\/div>\n<pre>root@server:\/# <strong>mysql -u root -p\r\n<\/strong><\/pre>\n<div>i tworzymy baz\u0119 danych o nazwie proftpd:<\/div>\n<pre>create database proftpd;<\/pre>\n<div>dodajemy u\u017cytkownika i nadajemy mu uprawnienia do bazy (zamiast &#8222;password&#8221; podajemy nowe has\u0142o do bazy danych):<\/div>\n<pre>GRANT SELECT, INSERT, UPDATE, DELETE ON proftpd.* TO `proftpd`@`localhost` IDENTIFIED BY 'password';\r\nFLUSH PRIVILEGES;\r\nUSE proftpd;<\/pre>\n<div>i dodajemy do niej dwie poni\u017csze tabele:<\/div>\n<div>\n<pre>CREATE TABLE ftpgroup (\r\n groupname varchar(16) NOT NULL default '',\r\n gid smallint(6) NOT NULL default '2001',\r\n members varchar(16) NOT NULL default '',\r\n KEY groupname (groupname)\r\n ) ENGINE=MyISAM COMMENT='ProFTP group table';<\/pre>\n<\/div>\n<div>\n<pre>CREATE TABLE ftpuser (\r\n id int(10) unsigned NOT NULL auto_increment,\r\n userid varchar(32) NOT NULL default '',\r\n passwd varchar(32) NOT NULL default '',\r\n uid smallint(6) NOT NULL default '2001',\r\n gid smallint(6) NOT NULL default '2001',\r\n homedir varchar(255) NOT NULL default '',\r\n shell varchar(16) NOT NULL default '\/sbin\/nologin',\r\n count int(11) NOT NULL default '0',\r\n accessed datetime NOT NULL default '0000-00-00 00:00:00',\r\n modified datetime NOT NULL default '0000-00-00 00:00:00',\r\n PRIMARY KEY (id),\r\n UNIQUE KEY userid (userid)\r\n ) ENGINE=MyISAM COMMENT='ProFTP user table';<\/pre>\n<\/div>\n<div>Dodajemy dane do tabel (zamiast nazwauzytkownika, haslo i \/var\/www\/example.com\/ podstawiamy nasze dane):<\/div>\n<pre>INSERT INTO `ftpgroup` (`groupname`, `gid`, `members`) VALUES ('ftpgroup', 2001, 'ftpuser');\r\nINSERT 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, '', '');\r\nexit;<\/pre>\n<div>6) <span style=\"color: #3366ff;\">Ustawiamy parametry dla bazy danych<\/span>:<\/div>\n<div>edytujemy plik <em><span style=\"color: #ff0000;\">\/etc\/proftpd\/sql.conf<\/span><\/em>:<\/div>\n<pre>root@server:\/# <strong>vim \/etc\/proftpd\/sql.conf<\/strong><\/pre>\n<div>i ustawiamy poni\u017csze parametry (w pozycji SQLConnectInfo zamieniamy proftpd@sql.example.com proftpd_user proftpd_password na proftpd@localhost proftpd has\u0142odobazy):<\/div>\n<div>\n<pre>SQLBackend mysql\r\nSQLAuthTypes Crypt\r\nSQLConnectInfo proftpd@localhost proftpd password\r\nSQLUserInfo ftpuser userid passwd uid gid homedir shell\r\nSQLGroupInfo ftpgroup groupname gid members\r\n# Update count every time user logs in\r\nSQLLog PASS updatecount\r\nSQLNamedQuery updatecount UPDATE \"count=count+1, accessed=now() WHERE userid='%u'\" ftpuser\r\nSQLLog STOR,DELE modified\r\nSQLNamedQuery modified UPDATE \"modified=now() WHERE userid='%u'\" ftpuser<\/pre>\n<\/div>\n<div>7) <span style=\"color: #3366ff;\">Restart serwera proftpd<\/span>:<\/div>\n<pre>root@server:\/# <strong>service proftpd restart<\/strong><\/pre>\n<div>Po restarcie powinna by\u0107 mo\u017cliwo\u015b\u0107 zalogowania do serwera.<\/div>\n<div>\u00a0<\/div>\n<div>8) <span style=\"color: #3366ff;\">Debugowanie<\/span>:<\/div>\n<div>Je\u015bli s\u0105 problemy z po\u0142\u0105czeniem z serwerem ftp mo\u017cna go uruchomi\u0107 w trybie debugowania:<\/div>\n<pre>root@server:\/# <strong>service proftpd stop\r\nroot@server:\/# service proftpd -nd6\r\n<\/strong><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>1) Instalujemy wymagane pakiety (dla serwera z du\u017cym obci\u0105\u017ceniem wybieramy standalone dla serwera z kilkoma po\u0142\u0105czeniami dziennie wybieramy opcj\u0119 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\u017cszymi liniami lub je dodajemy:<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[111],"tags":[250,62,161,106],"yst_prominent_words":[],"_links":{"self":[{"href":"https:\/\/www.techmedia.pl\/blog\/wp-json\/wp\/v2\/posts\/2403"}],"collection":[{"href":"https:\/\/www.techmedia.pl\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.techmedia.pl\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.techmedia.pl\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.techmedia.pl\/blog\/wp-json\/wp\/v2\/comments?post=2403"}],"version-history":[{"count":8,"href":"https:\/\/www.techmedia.pl\/blog\/wp-json\/wp\/v2\/posts\/2403\/revisions"}],"predecessor-version":[{"id":2411,"href":"https:\/\/www.techmedia.pl\/blog\/wp-json\/wp\/v2\/posts\/2403\/revisions\/2411"}],"wp:attachment":[{"href":"https:\/\/www.techmedia.pl\/blog\/wp-json\/wp\/v2\/media?parent=2403"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.techmedia.pl\/blog\/wp-json\/wp\/v2\/categories?post=2403"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.techmedia.pl\/blog\/wp-json\/wp\/v2\/tags?post=2403"},{"taxonomy":"yst_prominent_words","embeddable":true,"href":"https:\/\/www.techmedia.pl\/blog\/wp-json\/wp\/v2\/yst_prominent_words?post=2403"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}