Pure-FTPd 黑白亂玩 oN CentOS/紅帽/Fedora

Pure-FTPd的FXP設定除了AllowUserFXP選YES之外,Bind、ForcePassiveIP、PassivePortRange都給他指定一下再重啟動就可以了~ :P

Pure-FTPd有一個網頁管理模組User manager for PureFTPd可以很方便的做使用者管理,所以用MySQL認證的方式就不用老是進SSH增加囉~ (H) ProFTPd的網頁管理模組我都裝不起來~ 唉 :-(

Step.1 下載最新的Pure-FTPd( Pure-FTPd最近改版改很大~三天兩頭改1次 (6) 不過我還是覺得比ProFTPD來得簡單,因為ProFTPD的網頁管理模組我都裝不起來,不適合我這個懶人 :-( ),這邊我有自訂的安裝位置和指定MySQL路徑,--with-puredb是Pure-FTPd 基本的帳號管哩,--with-rfc2640是讓Pure-FTPd支援UTF8,語系可改成--with-language=english使用英文訊息或是--with-language=simplified-chinese使用簡體中文訊息。

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

HTML:
  1. ############################################################
  2. #                                                          #
  3. #         Configuration file for pure-ftpd wrappers        #
  4. #                                                          #
  5. ############################################################
  6. # 限定每一個使用者都只能在自己家目錄下活動。當設定成 no 時
  7. # 則實體使用者可切換至其他目錄做存取。
  8. ChrootEveryone              yes
  9.  
  10. # 限定最大連線數為 500。
  11. MaxClientsNumber            500
  12.  
  13. # 限定同一來源端位址的最大連線數為 50。
  14. MaxClientsPerIP             50
  15.  
  16. # 設定 FTP Server 要在哪個介面位址監聽哪個 port。預設是允許在所有介面位址監聽 21 port。
  17. Bind                        95.154.229.216,21
  18.  
  19. # 指定使用 Passive mode 時的連線 IP (在 NAT 後面的 FTP Server 必須使用)
  20. # 此處的 IP 是 FTP Server 的對外 IP
  21. ForcePassiveIP              95.154.229.216
  22.  
  23. # 當 Client 端採用被動模式來建立資料通道時,FTP Server 預計所要使用 data channel 連接埠的範圍。
  24. # 當您 Linux Client 端執行 ncftp 或 ftp 指令連上 FTP 站台後,可使用 passive 指令來變更連線模式。
  25. PassivePortRange            60000 61000
  26.  
  27. # 是否允許使用 FXP Protocol
  28. AllowUserFXP                yes
  29. AllowAnonymousFXP           no
  30.  
  31. # 帳號認證以 MySQL 處理
  32. MySQLConfigFile             /usr/local/pureftpd/pureftpd-mysql.conf
  33.  
  34. # 系統負載超過多少停止 Pure-FTPd
  35. MaxLoad                     4
  36.  
  37. # 支援 UTF-8 檔名 (RFC 2640)
  38. FileSystemCharset             UTF-8
  39. ClientCharset                  UTF-8
  40.  
  41. # ftp 的紀錄檔是否不需解析主機名稱。
  42. DontResolve                 yes
  43.  
  44. # 發呆 15 分鐘後,自動斷線
  45. MaxIdleTime                 15
  46.  
  47. # 硬碟空間使用超過百分之多少時,將不在接受新的上傳。
  48. MaxDiskUsage                99
  49.  
  50. # ls 命令的限制。第一個參數給出文件顯示的最大數目。第二個參數是出最大的子目錄深度。
  51. LimitRecursion              10000 8
  52.  
  53. # 當使用者家目錄不存在,是否要自動建立起來。
  54. CreateHomeDir               yes
  55.  
  56. # 設定上傳檔案、目錄 (含建立新目錄) 的預設權限,177:077 表示檔案的預設權限為 600,目錄為 700。
  57. Umask                       133:022
  58.  
  59. # 設定能允許實體使用者認證登入的最小 UID 為 100,也就是說 UID 100 以上 (含100) 的使用者方可認證登入。
  60. # 如您欲允許 root 登入的話,這個地方請註解起來,並且在 /etc/ftpusers 檔案中將 root 帳號移除。
  61. # /etc/ftpusers 是用來設定拒絕登入 FTP Server 的使用者名單的。
  62. MinUID                      100
  63.  
  64. # 這個參數設定成 yes 的話,則 Client 可以看到檔名是以 "." 作開始的隱藏檔。
  65. DisplayDotFiles             yes
  66.  
  67. # 是否要禁止使用者讀取隱藏檔內容。當以上兩個參數都設定 no 時,表示使用者對隱藏檔具有 r 及 w 的權限 (anonymous
  68. # 為例外)。當 ProhibitDotFilesWrite 設定成 no,而 ProhibitDotFilesRead 設定成 yes 時,使用者是不能刪除檔案的。但是無論
  69. # 如何設定,只要 TrustedGID 有設定時,則此群組的成員認證進來後是可以具有 r 及 w 的權限,並不會受到這裡的規範。
  70. ProhibitDotFilesRead        no
  71.  
  72. # 是否要禁止使用者刪除或修改隱藏檔,即使使用者就是該隱藏檔的擁有者。設定 yes 就表示要禁止啦。
  73. ProhibitDotFilesWrite       yes
  74.  
  75. # 當上傳檔案時,若對方目錄內已經存在一個同檔名的檔案,則允許將上傳的那個檔案作自動更名的動作。
  76. AutoRename                  no
  77.  
  78. # 匿名使用者要下載的檔案,如果其擁有者是 ftp 的話,則不允許下載。當您的 FTP 站台開放 anonymous 上傳時
  79. # (上傳之後的檔案擁有者為 ftp),為了防止有些人會上傳一些有問題的檔案來供人下載,因此才設定這個參數
  80. # 而等管理者確認上傳的檔案沒問題後,就可以把此檔的擁有者做個改變,這樣就能提供正常下載了。
  81. AntiWarez                   yes
  82.  
  83. # 是否不允許匿名登入。當設定成 no,表示允許匿名登入。
  84. NoAnonymous                 yes
  85.  
  86. # 是否只允許匿名登入。當您希望實體使用者也能登入時,就設定成 no。
  87. AnonymousOnly               no
  88.  
  89. # 是否要拒絕 anonymous 上傳。如要開放匿名使用者上傳檔案的話,就設定成 no。另外要允許上傳目錄時
  90. # 除了這裡要設定成 no 以外,AnonymousCanCreateDirs 參數需設定成 yes 才行。
  91. AnonymousCantUpload         yes
  92.  
  93. # 是否允許 anonymous 建立新目錄。如設定成 yes,則 anonymous 雖可建立目錄,但無法刪除。
  94. AnonymousCanCreateDirs      no
  95.  
  96. # 如果你要記錄所有的客戶命令,設置這個指令為 "yes"。
  97. VerboseLog                  no
  98.  
  99. # Turn on compatibility hacks for broken clients
  100. BrokenClientsCompatibility  no
  101.  
  102. # Fork in background
  103. Daemonize                   yes
  104.  
  105. # Syslog facility (auth, authpriv, daemon, ftp, security, user, local*)
  106. # The default facility is "ftp". "none" disables logging.
  107. SyslogFacility              ftp
  108.  
  109. # Be 'customer proof' : workaround against common customer mistakes like
  110. # 'chmod 0 public_html', that are valid, but that could cause ignorant
  111. # customers to lock their files, and then keep your technical support busy
  112. # with silly issues. If you're sure all your users have some basic Unix
  113. # knowledge, this feature is useless. If you're a hosting service, enable it.
  114. CustomerProof               yes
  115.  
  116. # TrustedGID                100
  117. # FortunesFile              /usr/share/fortune/zippy
  118. # LDAPConfigFile            /usr/local/pureftpd/pureftpd-ldap.conf
  119. # PGSQLConfigFile           /usr/local/pureftpd/pureftpd-pgsql.conf
  120. # PureDB                    /usr/local/pureftpd/pureftpd.pdb
  121. # ExtAuth                   /var/run/ftpd.sock
  122. # PAMAuthentication         yes
  123. # UnixAuthentication        yes
  124. # AnonymousRatio            1 10
  125. # UserRatio                 1 10
  126. # AnonymousBandwidth        8
  127. # UserBandwidth             8
  128. # NoChmod                   yes
  129. # KeepAllFiles              yes
  130. # TrustedIP                 10.1.1.1
  131. # LogPID                    yes
  132. # AltLog                    clf:/var/log/pureftpd.log
  133. # AltLog                    stats:/var/log/pureftpd.log
  134. # AltLog                    w3c:/var/log/pureftpd.log
  135. # Quota                     1000:10
  136. # PIDFile                   /var/run/pure-ftpd.pid
  137. # CallUploadScript          yes
  138. # NoRename                  yes
  139. # PerUserLimits             3:20
  140. # NoTruncate                yes
  141. # TLS                       1
  142. # IPV4Only                  yes
  143. # 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檔案 (原本檔案附的太老了)

MySQL:
  1. CREATE TABLE IF NOT EXISTS `admin` (
  2.   `Username` VARCHAR(35) NOT NULL DEFAULT '',
  3.   `Password` CHAR(32) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '',
  4.   PRIMARY KEY (`Username`)
  5. ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
  6.  
  7. INSERT INTO `admin` (`Username`, `Password`) VALUES
  8. ('Administrator', 'd3933b977d1cf7566346d55b54f87111');
  9.  
  10. CREATE TABLE IF NOT EXISTS `users` (
  11.   `User` VARCHAR(16) NOT NULL DEFAULT '',
  12.   `Password` VARCHAR(32) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '',
  13.   `Uid` INT(11) NOT NULL DEFAULT '14',
  14.   `Gid` INT(11) NOT NULL DEFAULT '5',
  15.   `Dir` VARCHAR(128) NOT NULL DEFAULT '',
  16.   `QuotaFiles` INT(10) NOT NULL DEFAULT '500',
  17.   `QuotaSize` INT(10) NOT NULL DEFAULT '30',
  18.   `ULBandwidth` INT(10) NOT NULL DEFAULT '80',
  19.   `DLBandwidth` INT(10) NOT NULL DEFAULT '80',
  20.   `Ipaddress` VARCHAR(15) NOT NULL DEFAULT '*',
  21.   `Comment` TINYTEXT,
  22.   `Status` ENUM('0','1') NOT NULL DEFAULT '1',
  23.   `ULRatio` SMALLINT(5) NOT NULL DEFAULT '1',
  24.   `DLRatio` SMALLINT(5) NOT NULL DEFAULT '1',
  25.   PRIMARY KEY (`User`),
  26.   UNIQUE KEY `User` (`User`)
  27. ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
  28.  
  29. INSERT INTO `users` (`User`, `Password`, `Uid`, `Gid`, `Dir`, `QuotaFiles`, `QuotaSize`, `ULBandwidth`, `DLBandwidth`, `Ipaddress`, `Comment`, `Status`, `ULRatio`, `DLRatio`) VALUES
  30. ('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保護這個資料夾 (H)

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

加到服務~ 收工啦 XD

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

點我放大

第五步記得修改Administrator的密碼

點我放大

第六步User manager輸出的pureftpd-mysql.conf給他存到 /usr/local/pureftpd/ureftpd-mysql.conf

點我放大

第七步就是安裝完畢,記得將install.php改名或刪除

點我放大

登入管理畫面後先把ftpuser_1砍掉吧~

點我放大

相關文章


發表迴響

您的電子郵件位址並不會被公開。 必要欄位標記為 *

*

您可以使用這些 HTML 標籤與屬性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>


Go back to top