Pure-FTPd 黑白亂玩 oN CentOS/紅帽/Fedora
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=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
-
############################################################
-
# #
-
# 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檔案 (原本檔案附的太老了)
-
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






