{"id":3149,"date":"2018-02-17T11:37:41","date_gmt":"2018-02-17T03:37:41","guid":{"rendered":"http:\/\/cn.hostease.com\/xueyuan\/?p=3149"},"modified":"2018-02-17T11:37:41","modified_gmt":"2018-02-17T03:37:41","slug":"ubuntu-%e5%ae%89%e8%a3%85proftpd%e6%9c%8d%e5%8a%a1","status":"publish","type":"post","link":"https:\/\/cn.hostease.com\/xueyuan\/hemanual\/ubuntu-%e5%ae%89%e8%a3%85proftpd%e6%9c%8d%e5%8a%a1\/","title":{"rendered":"Ubuntu-\u5b89\u88c5Proftpd\u670d\u52a1"},"content":{"rendered":"<p>\u4f7f\u7528 Proftp \u6709\u500b\u597d\u8655\uff0c\u53ef\u4ee5\u7528\u5176\u5b83\u65b9\u5f0f\u8a8d\u8b49\uff0c\u4e0d\u7528\u5be6\u9ad4\u5e33\u865f\u767b\u5165\uff0c\u53ef\u4ee5\u6e1b\u5c11\u8a66\u5e33\u865f\u6a5f\u6703\u3002<\/p>\n<p>&nbsp;<\/p>\n<p>\u9019\u6b21\u5229\u7528mysql \u8cc7\u6599\u5eab\uff0c<\/p>\n<p>&nbsp;<\/p>\n<p>\u74b0\u5883\uff1aUbuntu 6.06.1 LTS<\/p>\n<ol>\n<li>\u5b89\u88dd proftpd-mysql \u5957\u4ef6<\/li>\n<\/ol>\n<p>sudo apt-get install proftpd-mysql<\/p>\n<p>&nbsp;<\/p>\n<ol start=\"2\">\n<li>\u8a2d\u5b9a mysql \u5e33\u865f<\/li>\n<\/ol>\n<p>mysql -u root -p<\/p>\n<p>create database ftp;<\/p>\n<p>GRANT SELECT, INSERT, UPDATE, DELETE ON ftp.* TO \u2018proftpd\u2019@&#8217;localhost\u2019 IDENTIFIED BY \u2018password\u2019;<\/p>\n<p>FLUSH PRIVILEGES;<\/p>\n<p>&nbsp;<\/p>\n<ol start=\"3\">\n<li>\u5efa\u7acbmysql\u8cc7\u6599\u5eab<\/li>\n<\/ol>\n<p>CREATE TABLE ftpgroup (<\/p>\n<p>groupname varchar(16) NOT NULL default \u201d,<\/p>\n<p>gid smallint(6) NOT NULL default \u20185500\u2032,<\/p>\n<p>members varchar(16) NOT NULL default \u201d,<\/p>\n<p>KEY groupname (groupname)<\/p>\n<p>) TYPE=MyISAM COMMENT=\u2019ProFTP group table\u2019;<\/p>\n<p>CREATE TABLE ftpuser (<\/p>\n<p>id int(10) unsigned NOT NULL auto_increment,<\/p>\n<p>userid varchar(32) NOT NULL default \u201d,<\/p>\n<p>passwd varchar(32) NOT NULL default \u201d,<\/p>\n<p>uid smallint(6) NOT NULL default \u20185500\u2032,<\/p>\n<p>gid smallint(6) NOT NULL default \u20185500\u2032,<\/p>\n<p>homedir varchar(255) NOT NULL default \u201d,<\/p>\n<p>shell varchar(16) NOT NULL default \u2018\/sbin\/nologin\u2019,<\/p>\n<p>count int(11) NOT NULL default \u20180\u2032,<\/p>\n<p>accessed datetime NOT NULL default \u20180000-00-00 00:00:00\u2032,<\/p>\n<p>modified datetime NOT NULL default \u20180000-00-00 00:00:00\u2032,<\/p>\n<p>PRIMARY KEY (id),<\/p>\n<p>UNIQUE KEY userid (userid)<\/p>\n<p>) TYPE=MyISAM COMMENT=\u2019ProFTP user table\u2019;<\/p>\n<p>&nbsp;<\/p>\n<ol start=\"4\">\n<li>\u8a2d\u5b9a proftpd.conf \uff0c\u8b93 proftp \u53ef\u4ee5\u7528 mysql \u8cc7\u6599\u8a8d\u8b49<\/li>\n<\/ol>\n<p>SQLBackend mysql # \u4f7f\u7528 mysql \u8cc7\u6599\u5eab\u70ba\u4e3b<\/p>\n<p>SQLAuthTypes Backend # \u5bc6\u78bc\u8a8d\u8b49 \u5df2 PASSWORD() \u7522\u751f\u70ba\u4e3b<\/p>\n<p>SQLAuthenticate on<\/p>\n<p>SQLConnectInfo ftp@localhost proftpd password # MySQL \u9023\u7dda\u8cc7\u8a0a\uff0c\u8cc7\u6599\u5eab\u540d\u7a31@\u4e3b\u6a5f \u5e33\u865f \u5bc6\u78bc<\/p>\n<p>SQLUserInfo ftpuser userid passwd uid gid homedir shell # \u4f7f\u7528\u8005\u8cc7\u6599\u5eab\u6b04\u4f4d<\/p>\n<p>SQLGroupInfo ftpgroup groupname gid members # \u7fa4\u7d44\u8cc7\u6599\u5eab\u6b04\u4f4d<\/p>\n<p>SQLLogFile \/var\/log\/proftpd\/sql.log # SQL Log \u6a94<\/p>\n<p>SQLHomedirOnDemand on # \u7576 Home \u76ee\u9304\u4e0d\u5b58\u5728\uff0c\u6703\u81ea\u5df1\u7522\u751f\u3002<\/p>\n<p>SQLLog PASS updatecount # SQL Log \u683c\u5f0f\uff0c\u7576\u6b63\u78ba\u767b\u5165\u6642\uff0c\u8981\u57f7\u884c\u7684 SQL \u8a9e\u6cd5<\/p>\n<p>SQLNamedQuery updatecount UPDATE \u201ccount=count+1, accessed=now() where userid=\u2019%u\u2019\u201d ftpuser<\/p>\n<p>SQLLog STOR,DELE modified # SQL Log \u683c\u5f0f\uff0c\u7576\u5132\u5b58\u6216\u522a\u9664\u6a94\u6848\u6642\uff0c\u8981\u57f7\u884c\u7684 SQL \u8a9e\u6cd5<\/p>\n<p>SQLNamedQuery modified UPDATE \u201cmodified=now() where userid=\u2019%u\u2019\u201d ftpuser<\/p>\n<p>RequireValidShell off<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<ol start=\"5\">\n<li>\u5efa\u7acb\u4f7f\u7528\u8005\u5e33\u865f<\/li>\n<\/ol>\n<p>mysql -u root -p<\/p>\n<p>insert into ftp (userid, passwd , uid, gid , homedir ) values (\u2019ubuntu_user\u2019,password(\u201912345\u2032), \u20185500\u2032,\u20195500\u2032,\u2019\/home\/ftp\/ubuntu_user\u2019);<\/p>\n<p>&nbsp;<\/p>\n<p>\u5efa\u7acb ubuntu_user \u5e33\u865f\uff0c\u5bc6\u78bc\u70ba 12345 \uff0c\u76ee\u9304\u4f4d\u65bc \/home\/ftp\/ubuntu_user \uff0c uid \/ gid \u70ba\u6b64 user \u4e0a\u50b3\u6a94\u6848\u6642\u7684 uid \/ gid\u3002<\/p>\n<p>&nbsp;<\/p>\n<ol start=\"6\">\n<li>\u91cd\u65b0\u555f\u52d5 Proftp<\/li>\n<\/ol>\n<p>sudo \/etc\/init.d\/proftpd restart<\/p>\n<p>&nbsp;<\/p>\n<p>\u8acb\u7528\u525b\u525b\u5efa\u7acb\u597d\u7684\u5e33\u865f\u767b\u5165\u770b\u770b\uff0c\u82e5\u9806\u5229\u5c31\u53ef\u4ee5\u767b\u5165\u6307\u5b9a\u76ee\u9304\u5167\u3002<\/p>\n<p>&nbsp;<\/p>\n<ol start=\"7\">\n<li>\u9664\u932f<\/li>\n<\/ol>\n<p>\u6709\u4efb\u4f55\u554f\u984c\uff0c\u8acb\u6aa2\u67e5 sql.log \uff0c\u6703\u6709\u8cc7\u8a0a\u8aaa\u660e\u932f\u8aa4\u7684\u539f\u56e0\u3002<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u4f7f\u7528 Proftp \u6709\u500b\u597d\u8655\uff0c\u53ef\u4ee5\u7528\u5176\u5b83\u65b9\u5f0f\u8a8d\u8b49\uff0c\u4e0d\u7528\u5be6\u9ad4\u5e33\u865f\u767b\u5165\uff0c\u53ef\u4ee5\u6e1b\u5c11\u8a66\u5e33\u865f\u6a5f\u6703\u3002 &nbsp; \u9019\u6b21\u5229 &#8230; <a title=\"Ubuntu-\u5b89\u88c5Proftpd\u670d\u52a1\" class=\"read-more\" href=\"https:\/\/cn.hostease.com\/xueyuan\/hemanual\/ubuntu-%e5%ae%89%e8%a3%85proftpd%e6%9c%8d%e5%8a%a1\/\" aria-label=\"\u9605\u8bfb Ubuntu-\u5b89\u88c5Proftpd\u670d\u52a1\">\u9605\u8bfb\u66f4\u591a<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[3,49,5],"tags":[824,383],"class_list":["post-3149","post","type-post","status-publish","format-standard","hentry","category-hemanual","category-linux","category-jishu","tag-proftpd","tag-ubuntu"],"aioseo_notices":[],"jetpack_featured_media_url":"","jetpack-related-posts":[],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/cn.hostease.com\/xueyuan\/wp-json\/wp\/v2\/posts\/3149","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/cn.hostease.com\/xueyuan\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/cn.hostease.com\/xueyuan\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/cn.hostease.com\/xueyuan\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/cn.hostease.com\/xueyuan\/wp-json\/wp\/v2\/comments?post=3149"}],"version-history":[{"count":1,"href":"https:\/\/cn.hostease.com\/xueyuan\/wp-json\/wp\/v2\/posts\/3149\/revisions"}],"predecessor-version":[{"id":3150,"href":"https:\/\/cn.hostease.com\/xueyuan\/wp-json\/wp\/v2\/posts\/3149\/revisions\/3150"}],"wp:attachment":[{"href":"https:\/\/cn.hostease.com\/xueyuan\/wp-json\/wp\/v2\/media?parent=3149"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/cn.hostease.com\/xueyuan\/wp-json\/wp\/v2\/categories?post=3149"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/cn.hostease.com\/xueyuan\/wp-json\/wp\/v2\/tags?post=3149"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}