基本的安裝使用方法
首先安裝之前最好用netstat -ntl來查看ftp默認(rèn)的21端口是不是已經(jīng)被占用了,同時(shí)也可以用ps -ef 指令查看開啟了哪些服務(wù),看一下有沒有類似sftp或者是vsftp的服務(wù),如果開啟,用killall sftp指令把這個(gè)服務(wù)kill掉
1.下載pureftp,我下載的是pure-ftpd-1.0.30
指令:
wget http://download.pureftpd.org/pub/pure-ftpd/releases/pure-ftpd-1.0.30.tar.bz2
2.解壓:
tar -xvjf pure-ftpd-1.0.30.tar.bz2
進(jìn)入到解壓后目錄:
cd pure-ftpd-1.0.30
3.編譯方式,推薦使用全部安裝:
./configure –prefix=/usr/local/pure-ftpd/ –with-
language=simplified-chinese –with-everything
4.安裝:
make make check make install
5.建立相應(yīng)的安裝目錄:
mkdir /usr/local/pure-ftpd/etc
6.把配置文件和主要執(zhí)行文件拷到對(duì)應(yīng)的文件夾下面:
cp configuration-file/pure-ftpd.conf /usr/local/pure-ftpd/etc/
cp configuration-file/pure-config.pl /usr/local/pure-ftpd/sbin/
chmod 755 /usr/local/pure-ftpd/sbin/pure-config.pl
7.定制一下系統(tǒng)的環(huán)境變量:
cd /usr/local/bin/
ln -s /usr/local/pure-ftpd/bin/* .
ln -s /usr/local/pure-ftpd/sbin/* /usr/local/sbin/
ln -s /usr/local/pure-ftpd/man/man8/* /usr/local/share/man/man8/
8.啟動(dòng)pureftp服務(wù)器:
pure-config.pl /usr/local/pure-ftpd/etc/pure-ftpd.conf
屏幕上一般顯示如下信息:
Running: /usr/local/pure-ftpd/sbin/pure-ftpd -A -b -B -C20 -d -e -fnone -H -I15 -L2000:8 -M -m4 -p45000:50000 -q1:10 -s -t200 -U133:022 -u100 -r -Oclf:/var/log/pureftpd.log -k99 -Z
此時(shí)可以用在命令行窗口下telnet ip地址 21的方式探測(cè)一下這個(gè)端口是不是通的
9.pureftp一般需要不用默認(rèn)的root用戶進(jìn)行操作,一般會(huì)另外創(chuàng)建用戶名和組,用虛擬用戶進(jìn)行登錄
創(chuàng)建組:
groupadd ftpgroup
創(chuàng)建用戶:
useradd -g ftpgroup -d /dev/null -s /etc ftpuser
創(chuàng)建完成以后可以用cat /etc/passwd和cat /etc/group來查看組和用戶是否已經(jīng)創(chuàng)建好了
10.添加ftp虛擬用戶
ure-pw useradd test -u ftpuser -d /home/ftpusers/test
如果添加完成以后想要?jiǎng)h除可以使用pure-pw userdel test這條指令
想要修改密碼可以使用pure-pw passwd test這條指令
11.查看用戶信息
pure-pw show test
12.生成數(shù)據(jù)庫(kù)文件
pure-pw mkdb
13.一定要注意修改配置文件,因?yàn)楹芏嗯渲梦募?shù)據(jù)庫(kù)的默認(rèn)安裝位置并不是實(shí)際位置,這樣就會(huì)造成每次登
陸的時(shí)候都找不到密碼,ftp一直顯示passwd required,所以安裝好以后一定要修改配置文件,尤其是粉紅色的
部位,注意修改
打開配置文件:
vi /usr/local/pure-ftpd/etc/pure-ftpd.conf
ChrootEveryone yes # 啟用chroot
BrokenClientsCompatibility yes # 兼容不同客戶端
Daemonize yes # 后臺(tái)運(yùn)行
MaxClientsPerIP 20 # 每個(gè)ip最大連接數(shù)
VerboseLog yes # 記錄日志
DisplayDotFiles no # 顯示隱藏文件
AnonymousOnly no # 只允許匿名用戶訪問
NoAnonymous yes # 不允許匿名用戶連接
SyslogFacility none # 不將日志在syslog日志中顯示
DontResolve yes # 不進(jìn)行客戶端DNS解析
MaxIdleTime 15 # 最大空閑時(shí)間
LimitRecursion 2000 8 # 瀏覽限制,文件2000,目錄8層
AnonymousCanCreateDirs no # 匿名用戶可以創(chuàng)建目錄
MaxLoad 4 # 超出負(fù)載后禁止下載
PassivePortRange 45000 50000 # 被動(dòng)模式端口范圍
#AnonymousRatio 1 10 # 匿名用戶上傳/下載比率
UserRatio 1 10 # 所有用戶上傳/下載比率
AntiWarez yes # 禁止下載匿名用戶上傳但未經(jīng)驗(yàn)證的文件
#AnonymousBandwidth 200 # 匿名用戶帶寬限制(KB)
UserBandwidth 8 # 所有用戶最大帶寬(KB)
Umask 133:022 # 創(chuàng)建文件/目錄默認(rèn)掩碼
MinUID 100 # 最大UID限制
AllowUserFXP no # 僅運(yùn)行用戶進(jìn)行FXP傳輸
AllowAnonymousFXP no # 對(duì)匿名用戶和非匿名用戶允許進(jìn)行匿名 FXP 傳輸
ProhibitDotFilesWrite no # 不能刪除/寫入隱藏文件
ProhibitDotFilesRead no # 禁止讀取隱藏文件
AutoRename yes # 有同名文件時(shí)自動(dòng)重新命名
AnonymousCantUpload yes # 不允許匿名用戶上傳文件
AltLog clf:/var/log/pureftpd.log # clf格式日志文件位置
PureDB /usr/local/pure-ftpd/etc/pureftpd.pdb # 用戶數(shù)據(jù)庫(kù)文件
MaxDiskUsage 99 # 當(dāng)磁盤使用量打到99%時(shí)禁止上傳
CreateHomeDir yes # 如果虛擬用戶的目錄不存在則自動(dòng)創(chuàng)建
CustomerProof yes # 防止命令誤操作
PureDB /usr/local/pure-ftpd/etc/pureftpd.pdb這個(gè)地方一定要記得修改,不然會(huì)一直
登不上去,修改完成以后可以再次執(zhí)行
14.重新生成數(shù)據(jù)庫(kù)文件
pure-pw mkdb
15.先把之前的pureftp服務(wù)kill掉
killall pure-ftpd
16.然后重新啟動(dòng)
/usr/local/pure-ftpd/sbin/pure-config.pl /usr/local/pure-ftpd/etc/pure-ftpd.conf
17.此時(shí)一般已經(jīng)可以成功登錄,但是有可能還是無(wú)法上傳到服務(wù)器上去,此時(shí)一般是權(quán)限問題,
登錄到ftp的家目錄下
cd /home/ftpusers/test
修改test文件夾下的文件權(quán)限
chown ftpuser:ftpgroup wenjian1
再嘗試重新連接以后上傳。
連接超時(shí)問題解決紀(jì)實(shí)
問題
最近在服務(wù)器安裝了pureftpd提供給公司同事上傳文件用。在交付前使用FileZilla測(cè)試沒有問題,但是同事反映在Linux下ftp不能使用。
自己在Linux下測(cè)試了一下,一直卡在Entering Passive Mode,最后超時(shí)。
原因
而在windows下使用FileZilla測(cè)試并沒有問題。仔細(xì)看了下FileZilla的日志,發(fā)現(xiàn)有一行
想到pureftpd用的是云主機(jī),而云主機(jī)的網(wǎng)卡只綁定有內(nèi)網(wǎng)IP,外網(wǎng)IP應(yīng)該是綁定在路由了。猜測(cè)ftp客戶端使用被動(dòng)模式連接pureftpd的時(shí)候,pureftpd返回了一個(gè)內(nèi)網(wǎng)IP。
通過wireshark抓包發(fā)現(xiàn):
可以知道服務(wù)器的確返回了一個(gè)內(nèi)網(wǎng)地址。
方法
那能不能強(qiáng)制pureftpd返回外網(wǎng)IP呢。通過查看pureftpd文檔,發(fā)現(xiàn)在pureftpd.conf加入:
ForcePassiveIP 1.1.1.1
1.1.1.1為pureftpd外網(wǎng)ip。重啟之后問題解決。