{"id":18164,"date":"2014-01-21T06:13:13","date_gmt":"2014-01-20T22:13:13","guid":{"rendered":"https:\/\/2blog.ilc.edu.tw\/25793\/2014\/01\/21\/pure-ftpd-ftp-server-%e4%bd%bf%e7%94%a8-mysql-%e8%99%9b%e6%93%ac%e5%b8%b3%e8%99%9f\/"},"modified":"2014-01-21T06:13:13","modified_gmt":"2014-01-20T22:13:13","slug":"pure-ftpd-ftp-server-%e4%bd%bf%e7%94%a8-mysql-%e8%99%9b%e6%93%ac%e5%b8%b3%e8%99%9f","status":"publish","type":"post","link":"https:\/\/2blog.ilc.edu.tw\/25793\/2014\/01\/21\/pure-ftpd-ftp-server-%e4%bd%bf%e7%94%a8-mysql-%e8%99%9b%e6%93%ac%e5%b8%b3%e8%99%9f\/","title":{"rendered":"Pure-FTPd FTP Server \u4f7f\u7528 MySQL \u865b\u64ec\u5e33\u865f"},"content":{"rendered":"<p>Pure-FTPd FTP Server\u00a0\u4e5f\u53ef\u4ee5\u642d\u914d MySQL\u00a0\u7684\u865b\u64ec\u5e33\u865f\u4f86\u767b\u5165<br \/>\u9996\u5148\u5b89\u88dd MySQL Server<br \/># <span style=\"color: #ff0000;\">yum install mysql mysql-server<\/span><\/p>\n<p>\u555f\u52d5 MySQL Server<br \/># <span style=\"color: #ff0000;\">service mysqld start<\/span><\/p>\n<p>\u8a2d\u5b9a MySQL Server<br \/># <span style=\"color: #ff0000;\">\/usr\/bin\/mysql_secure_installation<\/span>[@more@]\u8a2d\u5b9a Pure-FTPd FTP Server<br \/># <span style=\"color: #ff0000;\">vim \/etc\/pure-ftpd\/pure-ftpd.conf<\/span><br \/><span style=\"color: #0000ff;\"># MySQL configuration file (see README.MySQL)<\/span><br \/><span style=\"color: #0000ff;\">MySQLConfigFile\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \/etc\/pure-ftpd\/pureftpd-mysql.conf<\/span><\/p>\n<p>\u8a2d\u5b9a Pure-FTPd FTP Server\u00a0\u7684 MySQL\u00a0\u8a2d\u5b9a\u6a94<br \/># <span style=\"color: #ff0000;\">vim \/etc\/pure-ftpd\/pureftpd-mysql.conf<\/span><br \/><span style=\"color: #0000ff;\"># Optional : define the location of mysql.sock if the server runs on this host.<\/span><br \/><span style=\"color: #0000ff;\"># MySQL Socket\u00a0\u6a94\u8def\u5f91<\/span><br \/><span style=\"color: #0000ff;\">MYSQLSocket\u00a0\u00a0\u00a0\u00a0 \/var\/lib\/mysql\/mysql.sock<\/span><\/p>\n<p><span style=\"color: #0000ff;\"># Mandatory : user to bind the server as.<\/span><br \/><span style=\"color: #0000ff;\"># MySQL\u00a0\u7ba1\u7406\u8005<\/span><br \/><span style=\"color: #0000ff;\">MYSQLUser\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 root<\/span><\/p>\n<p><span style=\"color: #0000ff;\"># Mandatory : user password. You must have a password.<\/span><br \/><span style=\"color: #0000ff;\"># MySQL\u00a0\u7ba1\u7406\u8005\u5bc6\u78bc<\/span><br \/><span style=\"color: #0000ff;\">MYSQLPassword\u00a0\u00a0 rootpw<\/span><\/p>\n<p><span style=\"color: #0000ff;\"># Mandatory : database to open.<\/span><br \/><span style=\"color: #0000ff;\"># Pure-FTPd\u00a0\u8981\u7528\u7684\u8cc7\u6599\u5eab\u6a94\u540d<\/span><br \/><span style=\"color: #0000ff;\">MYSQLDatabase\u00a0\u00a0 pureftpd<\/span><\/p>\n<p><span style=\"color: #0000ff;\"># Mandatory : how passwords are stored<\/span><br \/><span style=\"color: #0000ff;\"># Valid values are : &#8220;cleartext&#8221;, &#8220;crypt&#8221;, &#8220;md5&#8221; and &#8220;password&#8221;<\/span><br \/><span style=\"color: #0000ff;\"># (&#8220;password&#8221; = MySQL password() function)<\/span><br \/><span style=\"color: #0000ff;\"># You can also use &#8220;any&#8221; to try &#8220;crypt&#8221;, &#8220;md5&#8221; *and* &#8220;password&#8221;<\/span><br \/><span style=\"color: #0000ff;\">#\u00a0\u5bc6\u78bc\u7de8\u78bc\u7684\u65b9\u5f0f\uff0c\u53ef\u4ee5\u4f7f\u7528 cleartext\u00a0\u660e\u78bc \/ md5 \u4f7f\u7528 MD5 \u7de8\u78bc\u52a0\u5bc6\u00a0 \/ crypt \u7528 DES \u7de8\u78bc\u52a0\u5bc6 \/ password MySQL \u7684\u7de8\u78bc\u52a0\u5bc6<\/span><br \/><span style=\"color: #0000ff;\">MYSQLCrypt\u00a0\u00a0\u00a0\u00a0\u00a0 cleartext<\/span><\/p>\n<p><span style=\"color: #0000ff;\"># Query to execute in order to fetch the password<\/span><br \/><span style=\"color: #0000ff;\"># \u865b\u64ec\u5e33\u865f\u7b26\u5408 User \u6b04\u4f4d\u6642\uff0c\u9078\u53d6\u767b\u5165\u8005\u7684\u5bc6\u78bc\u6b04\u4f4d<\/span><br \/><span style=\"color: #0000ff;\">MYSQLGetPW\u00a0\u00a0\u00a0\u00a0\u00a0 SELECT Password FROM users WHERE User=&#8217;L&#8217;<\/span><\/p>\n<p><span style=\"color: #0000ff;\"># Query to execute in order to fetch the system user name or uid<\/span><br \/><span style=\"color: #0000ff;\"># \u7576\u865b\u64ec\u5e33\u865f\u7b26\u5408 User \u6b04\u4f4d\u6642\uff0c\u9078\u53d6\u767b\u5165\u8005\u7684\u4f7f\u7528\u8005 ID<\/span><br \/><span style=\"color: #0000ff;\">MYSQLGetUID\u00a0\u00a0\u00a0\u00a0 SELECT Uid FROM users WHERE User=&#8217;L&#8217;<\/span><\/p>\n<p><span style=\"color: #0000ff;\"># Optional : default UID &#8211; if set this overrides MYSQLGetUID<\/span><\/p>\n<p><span style=\"color: #0000ff;\">#MYSQLDefaultUID 500<\/span><\/p>\n<p><span style=\"color: #0000ff;\"># Query to execute in order to fetch the system user group or gid<\/span><br \/><span style=\"color: #0000ff;\"># \u7576\u865b\u64ec\u5e33\u865f\u7b26\u5408 User \u6b04\u4f4d\u6642\uff0c\u9078\u53d6\u767b\u5165\u8005\u7684\u7fa4\u7d44 ID<\/span><br \/><span style=\"color: #0000ff;\">MYSQLGetGID\u00a0\u00a0\u00a0\u00a0 SELECT Gid FROM users WHERE User=&#8217;L&#8217;<\/span><\/p>\n<p><span style=\"color: #0000ff;\"># Optional : default GID &#8211; if set this overrides MYSQLGetGID<\/span><br \/><span style=\"color: #0000ff;\"># \u5167\u5b9a\u7684\u7fa4\u7d44 GID<\/span><br \/><span style=\"color: #0000ff;\">#MYSQLDefaultGID 500<\/span><\/p>\n<p><span style=\"color: #0000ff;\"># Query to execute in order to fetch the home directory<\/span><br \/><span style=\"color: #0000ff;\"># \u7576\u865b\u64ec\u5e33\u865f\u7b26\u5408 User \u6b04\u4f4d\u6642\uff0c\u9078\u53d6\u767b\u5165\u8005\u7684\u5bb6\u76ee\u9304<\/span><br \/><span style=\"color: #0000ff;\">MYSQLGetDir\u00a0\u00a0\u00a0\u00a0 SELECT Dir FROM users WHERE User=&#8217;L&#8217;<\/span><\/p>\n<p>\u91cd\u65b0\u555f\u52d5 Pure-FTPd FTP Server<br \/># <span style=\"color: #ff0000;\">\/etc\/init.d\/pure-ftpd restart<\/span><\/p>\n<p>\u5efa\u7acb\u8cc7\u6599\u5eab<br \/># <span style=\"color: #ff0000;\">vim\u00a0 \/root\/pureftpd.sql<\/span><br \/><span style=\"color: #0000ff;\">CREATE TABLE users (<\/span><br \/><span style=\"color: #0000ff;\">\u00a0 User VARCHAR(16) BINARY NOT NULL,<\/span><br \/><span style=\"color: #0000ff;\">\u00a0 Password VARCHAR(64) BINARY NOT NULL,<\/span><br \/><span style=\"color: #0000ff;\">\u00a0 Uid INT(11) NOT NULL default &#8216;-1&#8217;,<\/span><br \/><span style=\"color: #0000ff;\">\u00a0 Gid INT(11) NOT NULL default &#8216;-1&#8217;,<\/span><br \/><span style=\"color: #0000ff;\">\u00a0 Dir VARCHAR(128) BINARY NOT NULL,<\/span><br \/><span style=\"color: #0000ff;\">\u00a0 PRIMARY KEY\u00a0 (User)<\/span><br \/><span style=\"color: #0000ff;\">) ENGINE=MyISAM\u00a0 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;<\/span><br \/><span style=\"color: #0000ff;\">insert into users values (&#8216;u0910001&#8242;,&#8217;abCxyZ&#8217;,&#8217;500&#8242;,&#8217;500&#8242;,&#8217;\/home\/virtualuser\/u0910001&#8242;);<\/span><br \/><span style=\"color: #0000ff;\">insert into users values (&#8216;u0910002&#8242;,&#8217;QazXsw&#8217;,&#8217;500&#8242;,&#8217;500&#8242;,&#8217;\/home\/virtualuser\/u0910002&#8242;);<\/span><\/p>\n<p># <span style=\"color: #ff0000;\">\/usr\/bin\/mysqladmin -u root -p create pureftpd<\/span><br \/># <span style=\"color: #ff0000;\">\/usr\/bin\/mysql -u root -p pureftpd &lt; \/root\/pureftpd.sql<\/span><\/p>\n<p>\u6e2c\u8a66<br \/># <span style=\"color: #ff0000;\">mkdir -p \/home\/virtualuser\/{u0910001,u0910002}<\/span><br \/># <span style=\"color: #ff0000;\">chown -R virtualuser:virtualgrp \/home\/virtualuser\/{<\/span><span style=\"color: #ff0000;\">u0910001,<\/span><span style=\"color: #ff0000;\">u0910002}<\/span><\/p>\n<p># <span style=\"color: #ff0000;\">lftp -u u0910001 192.168.154.167<\/span><br \/><span style=\"color: #0000ff;\">\u5bc6\u78bc\uff1a<\/span><br \/><span style=\"color: #0000ff;\">lftp u0910001@192.168.154.167:~&gt; ls -l<\/span><br \/><span style=\"color: #0000ff;\">drwxr-xr-x\u00a0\u00a0\u00a0 2 500\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 virtualgrp\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 4096 Jan\u00a0 2 10:17 .<\/span><br \/><span style=\"color: #0000ff;\">drwxr-xr-x\u00a0\u00a0\u00a0 2 500\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 virtualgrp\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 4096 Jan\u00a0 2 10:17 ..<\/span><br \/><span style=\"color: #0000ff;\">lftp u0910001@192.168.154.167:\/&gt;<\/span><\/p>\n<p>\u5982\u679c\u7cfb\u7d71\u6709\u4f7f\u7528 SELinux\uff0c\u8981\u8a18\u5f97\u628a\u5bb6\u76ee\u9304\u7684\u529f\u80fd\u6253\u958b<br \/># <span style=\"color: #ff0000;\">setsebool -P ftp_home_dir 1<\/span><br \/># <span style=\"color: #ff0000;\">setsebool -P allow_ftpd_full_access=1<\/span><\/p>\n<p>\u66f4\u8907\u96dc\u7684\u8a2d\u5b9a<br \/><span style=\"color: #0000ff;\">CREATE DATABASE pure-ftpd;<\/span><br \/><span style=\"color: #0000ff;\">CREATE TABLE `users` (<\/span><br \/><span style=\"color: #0000ff;\">`id` int(32) unsigned NOT NULL auto_increment,<\/span><br \/><span style=\"color: #0000ff;\">`User` varchar(16) NOT NULL default &#8221;,<\/span><br \/><span style=\"color: #0000ff;\">`Password` varchar(64) NOT NULL default &#8221;,<\/span><br \/><span style=\"color: #0000ff;\">`Uid` varchar(11) NOT NULL default &#8216;-1&#8217;,<\/span><br \/><span style=\"color: #0000ff;\">`Gid` varchar(11) NOT NULL default &#8216;-1&#8217;,<\/span><br \/><span style=\"color: #0000ff;\">`Dir` varchar(128) NOT NULL default &#8221;,<\/span><br \/><span style=\"color: #0000ff;\">`QuotaSize` smallint(5) NOT NULL default &#8216;0&#8217;,<\/span><br \/><span style=\"color: #0000ff;\">`QuotaFiles` int(11) NOT NULL default &#8216;0&#8217;,<\/span><br \/><span style=\"color: #0000ff;\">`ULBandwidth` smallint(5) NOT NULL default &#8216;0&#8217;,<\/span><br \/><span style=\"color: #0000ff;\">`DLBandwidth` smallint(5) NOT NULL default &#8216;0&#8217;,<\/span><br \/><span style=\"color: #0000ff;\">`ULRatio` smallint(6) NOT NULL default &#8216;0&#8217;,<\/span><br \/><span style=\"color: #0000ff;\">`DLRatio` smallint(6) NOT NULL default &#8216;0&#8217;,<\/span><br \/><span style=\"color: #0000ff;\">`comment` tinytext NOT NULL,<\/span><br \/><span style=\"color: #0000ff;\">`ipaccess` varchar(15) NOT NULL default &#8216;*&#8217;,<\/span><br \/><span style=\"color: #0000ff;\">`status` enum(&#8216;0&#8242;,&#8217;1&#8217;) NOT NULL default &#8216;0&#8217;,<\/span><br \/><span style=\"color: #0000ff;\">`create_date` datetime NOT NULL default &#8216;0000-00-00 00:00:00&#8217;,<\/span><br \/><span style=\"color: #0000ff;\">`modify_date` datetime NOT NULL default &#8216;0000-00-00 00:00:00&#8217;,<\/span><br \/><span style=\"color: #0000ff;\">PRIMARY KEY (`id`,`User`),<\/span><br \/><span style=\"color: #0000ff;\">UNIQUE KEY `User` (`User`)<\/span><br \/><span style=\"color: #0000ff;\">) TYPE=MyISAM AUTO_INCREMENT=5 ;<\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Pure-FTPd FTP Server\u00a0\u4e5f\u53ef\u4ee5\u642d\u914d MySQL\u00a0\u7684\u865b\u64ec\u5e33\u865f\u4f86\u767b\u5165\u9996\u5148\u5b89\u88dd MySQL Ser &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/2blog.ilc.edu.tw\/25793\/2014\/01\/21\/pure-ftpd-ftp-server-%e4%bd%bf%e7%94%a8-mysql-%e8%99%9b%e6%93%ac%e5%b8%b3%e8%99%9f\/\" class=\"more-link\">\u95b1\u8b80\u5168\u6587<span class=\"screen-reader-text\">\u3008Pure-FTPd FTP Server \u4f7f\u7528 MySQL \u865b\u64ec\u5e33\u865f\u3009<\/span><\/a><\/p>\n","protected":false},"author":55,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[130,116,102],"tags":[],"class_list":["post-18164","post","type-post","status-publish","format-standard","hentry","category-c-78475","category-c-78461","category-c-72385"],"meta_key":{"_encloseme":["1"],"lt_post_id":["469077"]},"_links":{"self":[{"href":"https:\/\/2blog.ilc.edu.tw\/25793\/wp-json\/wp\/v2\/posts\/18164"}],"collection":[{"href":"https:\/\/2blog.ilc.edu.tw\/25793\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/2blog.ilc.edu.tw\/25793\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/2blog.ilc.edu.tw\/25793\/wp-json\/wp\/v2\/users\/55"}],"replies":[{"embeddable":true,"href":"https:\/\/2blog.ilc.edu.tw\/25793\/wp-json\/wp\/v2\/comments?post=18164"}],"version-history":[{"count":0,"href":"https:\/\/2blog.ilc.edu.tw\/25793\/wp-json\/wp\/v2\/posts\/18164\/revisions"}],"wp:attachment":[{"href":"https:\/\/2blog.ilc.edu.tw\/25793\/wp-json\/wp\/v2\/media?parent=18164"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/2blog.ilc.edu.tw\/25793\/wp-json\/wp\/v2\/categories?post=18164"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/2blog.ilc.edu.tw\/25793\/wp-json\/wp\/v2\/tags?post=18164"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}