Pure-FTPd的FXP設定除了AllowUserFXP選YES之外,Bind、ForcePassiveIP、PassivePortRange都給他指定一下再重啟動就可以了~ ?
Pure-FTPd有一個網頁管理模組User manager for PureFTPd可以很方便的做使用者管理,所以用MySQL認證的方式就不用老是進SSH增加囉~ ? ProFTPd的網頁管理模組我都裝不起來~ 唉 ?
Step.1 下載最新的Pure-FTPd( Pure-FTPd最近改版改很大~三天兩頭改1次 ? 不過我還是覺得比ProFTPD來得簡單,因為ProFTPD的網頁管理模組我都裝不起來,不適合我這個懶人 ? ),這邊我有自訂的安裝位置和指定MySQL路徑,--with-puredb
是Pure-FTPd 基本的帳號管哩,--with-rfc2640
是讓Pure-FTPd支援UTF8,語系可改成--with-language=english
使用英文訊息介面或是--with-language=traditional-chinese
使用正體中文訊息
開始編譯
1 2 3 4 5 6 7 8 9 10 11 12 13 |
wget http://download.pureftpd.org/pub/pure-ftpd/releases/pure-ftpd-1.0.29.tar.gz tar zxvf pure-ftpd-1.0.29.tar.gz cd pure-ftpd-1.0.29 ./configure --prefix=/usr/local/pureftpd --with-mysql=/usr/local/mysql --with-puredb --with-rfc2640 --with-everything --with-language=traditional-chinese make make install cd ../ cp pure-ftpd-1.0.29/configuration-file/pure-config.pl /usr/local/pureftpd/sbin/ cp pure-ftpd-1.0.29/contrib/redhat.init /etc/init.d/pureftpd chmod +x /etc/init.d/pureftpd chmod 755 /usr/local/pureftpd/ chmod 755 /usr/local/pureftpd/sbin/pure-config.pl chmod 777 /usr/local/pureftpd/sbin/pure-ftpwho |
Step.2 編輯Pure-FTPd設定檔,除了要修改Bind 、ForcePassiveIP、PassivePortRange,不太重要的設定已經註釋起來了。
vi /usr/local/pureftpd/pure-ftpd.conf
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 |
############################################################ # # # Configuration file for pure-ftpd wrappers # # # ############################################################ # 限定每一個使用者都只能在自己家目錄下活動。當設定成 no 時 # 則實體使用者可切換至其他目錄做存取。 ChrootEveryone yes # 限定最大連線數為 500。 MaxClientsNumber 500 # 限定同一來源端位址的最大連線數為 50。 MaxClientsPerIP 50 # 設定 FTP Server 要在哪個介面位址監聽哪個 port。預設是允許在所有介面位址監聽 21 port。 Bind 95.154.229.216,21 # 指定使用 Passive mode 時的連線 IP (在 NAT 後面的 FTP Server 必須使用) # 此處的 IP 是 FTP Server 的對外 IP ForcePassiveIP 95.154.229.216 # 當 Client 端採用被動模式來建立資料通道時,FTP Server 預計所要使用 data channel 連接埠的範圍。 # 當您 Linux Client 端執行 ncftp 或 ftp 指令連上 FTP 站台後,可使用 passive 指令來變更連線模式。 PassivePortRange 60000 61000 # 是否允許使用 FXP Protocol AllowUserFXP yes AllowAnonymousFXP no # 帳號認證以 MySQL 處理 MySQLConfigFile /usr/local/pureftpd/pureftpd-mysql.conf # 系統負載超過多少停止 Pure-FTPd MaxLoad 4 # 支援 UTF-8 檔名 (RFC 2640) FileSystemCharset UTF-8 ClientCharset UTF-8 # ftp 的紀錄檔是否不需解析主機名稱。 DontResolve yes # 發呆 15 分鐘後,自動斷線 MaxIdleTime 15 # 硬碟空間使用超過百分之多少時,將不在接受新的上傳。 MaxDiskUsage 99 # ls 命令的限制。第一個參數給出文件顯示的最大數目。第二個參數是出最大的子目錄深度。 LimitRecursion 10000 8 # 當使用者家目錄不存在,是否要自動建立起來。 CreateHomeDir yes # 設定上傳檔案、目錄 (含建立新目錄) 的預設權限,177:077 表示檔案的預設權限為 600,目錄為 700。 Umask 133:022 # 設定能允許實體使用者認證登入的最小 UID 為 100,也就是說 UID 100 以上 (含100) 的使用者方可認證登入。 # 如您欲允許 root 登入的話,這個地方請註解起來,並且在 /etc/ftpusers 檔案中將 root 帳號移除。 # /etc/ftpusers 是用來設定拒絕登入 FTP Server 的使用者名單的。 MinUID 100 # 這個參數設定成 yes 的話,則 Client 可以看到檔名是以 "." 作開始的隱藏檔。 DisplayDotFiles yes # 是否要禁止使用者讀取隱藏檔內容。當以上兩個參數都設定 no 時,表示使用者對隱藏檔具有 r 及 w 的權限 (anonymous # 為例外)。當 ProhibitDotFilesWrite 設定成 no,而 ProhibitDotFilesRead 設定成 yes 時,使用者是不能刪除檔案的。但是無論 # 如何設定,只要 TrustedGID 有設定時,則此群組的成員認證進來後是可以具有 r 及 w 的權限,並不會受到這裡的規範。 ProhibitDotFilesRead no # 是否要禁止使用者刪除或修改隱藏檔,即使使用者就是該隱藏檔的擁有者。設定 yes 就表示要禁止啦。 ProhibitDotFilesWrite yes # 當上傳檔案時,若對方目錄內已經存在一個同檔名的檔案,則允許將上傳的那個檔案作自動更名的動作。 AutoRename no # 匿名使用者要下載的檔案,如果其擁有者是 ftp 的話,則不允許下載。當您的 FTP 站台開放 anonymous 上傳時 # (上傳之後的檔案擁有者為 ftp),為了防止有些人會上傳一些有問題的檔案來供人下載,因此才設定這個參數 # 而等管理者確認上傳的檔案沒問題後,就可以把此檔的擁有者做個改變,這樣就能提供正常下載了。 AntiWarez yes # 是否不允許匿名登入。當設定成 no,表示允許匿名登入。 NoAnonymous yes # 是否只允許匿名登入。當您希望實體使用者也能登入時,就設定成 no。 AnonymousOnly no # 是否要拒絕 anonymous 上傳。如要開放匿名使用者上傳檔案的話,就設定成 no。另外要允許上傳目錄時 # 除了這裡要設定成 no 以外,AnonymousCanCreateDirs 參數需設定成 yes 才行。 AnonymousCantUpload yes # 是否允許 anonymous 建立新目錄。如設定成 yes,則 anonymous 雖可建立目錄,但無法刪除。 AnonymousCanCreateDirs no # 如果你要記錄所有的客戶命令,設置這個指令為 "yes"。 VerboseLog no # Turn on compatibility hacks for broken clients BrokenClientsCompatibility no # Fork in background Daemonize yes # Syslog facility (auth, authpriv, daemon, ftp, security, user, local*) # The default facility is "ftp". "none" disables logging. SyslogFacility ftp # Be 'customer proof' : workaround against common customer mistakes like # 'chmod 0 public_html', that are valid, but that could cause ignorant # customers to lock their files, and then keep your technical support busy # with silly issues. If you're sure all your users have some basic Unix # knowledge, this feature is useless. If you're a hosting service, enable it. CustomerProof yes # TrustedGID 100 # FortunesFile /usr/share/fortune/zippy # LDAPConfigFile /usr/local/pureftpd/pureftpd-ldap.conf # PGSQLConfigFile /usr/local/pureftpd/pureftpd-pgsql.conf # PureDB /usr/local/pureftpd/pureftpd.pdb # ExtAuth /var/run/ftpd.sock # PAMAuthentication yes # UnixAuthentication yes # AnonymousRatio 1 10 # UserRatio 1 10 # AnonymousBandwidth 8 # UserBandwidth 8 # NoChmod yes # KeepAllFiles yes # TrustedIP 10.1.1.1 # LogPID yes # AltLog clf:/var/log/pureftpd.log # AltLog stats:/var/log/pureftpd.log # AltLog w3c:/var/log/pureftpd.log # Quota 1000:10 # PIDFile /var/run/pure-ftpd.pid # CallUploadScript yes # NoRename yes # PerUserLimits 3:20 # NoTruncate yes # TLS 1 # IPV4Only yes # IPV6Only yes |
Step.3 下載User manager,這邊要複製User manager到網站資料夾,並設定config.php可寫
wget http://acelnmp.googlecode.com/files/ftp_v2.1.tar.gz
tar zxvf ftp_v2.1.tar.gz
cp -rf ftp /web/www/
chmod 777 /web/www/ftp/config.php
A. 增加繁體中文語系檔案
wget http://machiel.generaal.net/files/pureftpd/languages/2.x/traditional-chinese.php.txt
cp traditional-chinese.php.txt /web/www/ftp/language/traditional-chinese.php
B. 新增一個pureftpd資料庫導入User manager的SQL檔案 (原本檔案附的太老了)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
CREATE TABLE IF NOT EXISTS `admin` ( `Username` varchar(35) NOT NULL DEFAULT '', `Password` char(32) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '', PRIMARY KEY (`Username`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; INSERT INTO `admin` (`Username`, `Password`) VALUES ('Administrator', 'd3933b977d1cf7566346d55b54f87111'); CREATE TABLE IF NOT EXISTS `users` ( `User` varchar(16) NOT NULL DEFAULT '', `Password` varchar(32) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '', `Uid` int(11) NOT NULL DEFAULT '14', `Gid` int(11) NOT NULL DEFAULT '5', `Dir` varchar(128) NOT NULL DEFAULT '', `QuotaFiles` int(10) NOT NULL DEFAULT '500', `QuotaSize` int(10) NOT NULL DEFAULT '30', `ULBandwidth` int(10) NOT NULL DEFAULT '80', `DLBandwidth` int(10) NOT NULL DEFAULT '80', `Ipaddress` varchar(15) NOT NULL DEFAULT '*', `Comment` tinytext, `Status` enum('0','1') NOT NULL DEFAULT '1', `ULRatio` smallint(5) NOT NULL DEFAULT '1', `DLRatio` smallint(5) NOT NULL DEFAULT '1', PRIMARY KEY (`User`), UNIQUE KEY `User` (`User`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; INSERT INTO `users` (`User`, `Password`, `Uid`, `Gid`, `Dir`, `QuotaFiles`, `QuotaSize`, `ULBandwidth`, `DLBandwidth`, `Ipaddress`, `Comment`, `Status`, `ULRatio`, `DLRatio`) VALUES ('ftpuser_1', 'd3933b977d1cf7566346d55b54f87111', 65534, 31, '/usr', 100, 50, 75, 75, '*', 'Ftp user (for example)', '1', 0, 0); |
C. 然後打開http://你的域名/ftp/install.php開始設定User manager並新增使用者,這邊要填MySQL帳密,介意安全問題可以另外開一個MySQL帳號,然後設定只開放pureftpd資料庫的權限,記得要修改Administrator的密碼,安裝完之後才能登入User manager。
D. 安裝時第六步User manager輸出的pureftpd-mysql.conf給他存起來
vi /usr/local/pureftpd/pureftpd-mysql.conf
E. 都OK了之後將install.php改名或刪除都可以,然後就可以用http://你的域名/ftp/index.php登入囉~ 想要多重保護的也可以弄個htaccess保護這個資料夾 ?
mv /web/www/ftp/install.php /web/www/ftp/install.php.bak
Step.4 編輯啟動Script把程式路徑改成自訂的安裝位置
vi /etc/init.d/pureftpd
fullpath=/usr/local/pureftpd/sbin/$prog
pureftpwho=/usr/local/pureftpd/sbin/pure-ftpwho
加到服務~ 收工啦 ?
chkconfig --level 345 pureftpd on
service pureftpd restart
附註 1:登入有問題就要檢查這三個檔案
vi /usr/local/pureftpd/
pure-ftpd.conf
Bind的參數有沒有設到真實IP
vi /usr/local/pureftpd/
pureftpd-mysql.conf
MYSQLDatabase
MYSQLUser
MYSQLPassword
有沒有開好資料庫,以及新增一個用戶
vi /web/www/ftp/
config.php
FTP Address的參數有沒有設到真實IP
DBLogin
DBPassword
DBDatabase
有沒有開好資料庫,以及新增一個用戶
附註 2:User manager安裝步驟圖解
第三步先用ROOT登入,他一定會建立一個資料庫,安裝完在刪掉就好了
第四步記得語系選中文,FTP Address要填真實IP,其他選項填好了先按Save再按Step 5
第六步User manager輸出的pureftpd-mysql.conf給他存到 /usr/local/pureftpd/ureftpd-mysql.conf