基本的安裝使用方法
首先安裝之前最好用netstat -ntl來查看ftp默認的21端口是不是已經被占用了,同時也可以用ps -ef 指令查看開啟了哪些服務,看一下有沒有類似sftp或者是vsftp的服務,如果開啟,用killall sftp指令把這個服務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
進入到解壓後目錄:
復制代碼代碼如下: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.建立相應的安裝目錄:
復制代碼代碼如下:mkdir /usr/local/pure-ftpd/etc
6.把配置文件和主要執行文件拷到對應的文件夾下面:
復制代碼代碼如下:
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.定制一下系統的環境變量:
復制代碼代碼如下:
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.啟動pureftp服務器:
復制代碼代碼如下: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
此時可以用在命令行窗口下telnet ip地址 21的方式探測一下這個端口是不是通的
9.pureftp一般需要不用默認的root用戶進行操作,一般會另外創建用戶名和組,用虛擬用戶進行登錄
創建組:
復制代碼代碼如下:groupadd ftpgroup
創建用戶:
復制代碼代碼如下:useradd -g ftpgroup -d /dev/null -s /etc ftpuser
創建完成以後可以用cat /etc/passwd和cat /etc/group來查看組和用戶是否已經創建好了
10.添加ftp虛擬用戶
復制代碼代碼如下:ure-pw useradd test -u ftpuser -d /home/ftpusers/test
如果添加完成以後想要刪除可以使用pure-pw userdel test這條指令
想要修改密碼可以使用pure-pw passwd test這條指令
11.查看用戶信息
復制代碼代碼如下:pure-pw show test
12.生成數據庫文件
復制代碼代碼如下:pure-pw mkdb
13.一定要注意修改配置文件,因為很多配置文件數據庫的默認安裝位置並不是實際位置,這樣就會造成每次登
陸的時候都找不到密碼,ftp一直顯示passwd required,所以安裝好以後一定要修改配置文件,尤其是粉紅色的
部位,注意修改
打開配置文件:
復制代碼代碼如下:vi /usr/local/pure-ftpd/etc/pure-ftpd.conf
ChrootEveryone yes # 啟用chroot
BrokenClientsCompatibility yes # 兼容不同客戶端
Daemonize yes # 後台運行
MaxClientsPerIP 20 # 每個ip最大連接數
VerboseLog yes # 記錄日志
DisplayDotFiles no # 顯示隱藏文件
AnonymousOnly no # 只允許匿名用戶訪問
NoAnonymous yes # 不允許匿名用戶連接
SyslogFacility none # 不將日志在syslog日志中顯示
DontResolve yes # 不進行客戶端DNS解析
MaxIdleTime 15 # 最大空閒時間
LimitRecursion 2000 8 # 浏覽限制,文件2000,目錄8層
AnonymousCanCreateDirs no # 匿名用戶可以創建目錄
MaxLoad 4 # 超出負載後禁止下載
PassivePortRange 45000 50000 # 被動模式端口范圍
#AnonymousRatio 1 10 # 匿名用戶上傳/下載比率
UserRatio 1 10 # 所有用戶上傳/下載比率
AntiWarez yes # 禁止下載匿名用戶上傳但未經驗證的文件
#AnonymousBandwidth 200 # 匿名用戶帶寬限制(KB)
UserBandwidth 8 # 所有用戶最大帶寬(KB)
Umask 133:022 # 創建文件/目錄默認掩碼
MinUID 100 # 最大UID限制
AllowUserFXP no # 僅運行用戶進行FXP傳輸
AllowAnonymousFXP no # 對匿名用戶和非匿名用戶允許進行匿名 FXP 傳輸
ProhibitDotFilesWrite no # 不能刪除/寫入隱藏文件
ProhibitDotFilesRead no # 禁止讀取隱藏文件
AutoRename yes # 有同名文件時自動重新命名
AnonymousCantUpload yes # 不允許匿名用戶上傳文件
AltLog clf:/var/log/pureftpd.log # clf格式日志文件位置
PureDB /usr/local/pure-ftpd/etc/pureftpd.pdb # 用戶數據庫文件
MaxDiskUsage 99 # 當磁盤使用量打到99%時禁止上傳
CreateHomeDir yes # 如果虛擬用戶的目錄不存在則自動創建
CustomerProof yes # 防止命令誤操作
PureDB /usr/local/pure-ftpd/etc/pureftpd.pdb這個地方一定要記得修改,不然會一直
登不上去,修改完成以後可以再次執行
14.重新生成數據庫文件
復制代碼代碼如下:pure-pw mkdb
15.先把之前的pureftp服務kill掉
復制代碼代碼如下: killall pure-ftpd
16.然後重新啟動
復制代碼代碼如下:/usr/local/pure-ftpd/sbin/pure-config.pl /usr/local/pure-ftpd/etc/pure-ftpd.conf
17.此時一般已經可以成功登錄,但是有可能還是無法上傳到服務器上去,此時一般是權限問題,
登錄到ftp的家目錄下
復制代碼代碼如下:cd /home/ftpusers/test
修改test文件夾下的文件權限
復制代碼代碼如下: chown ftpuser:ftpgroup wenjian1
再嘗試重新連接以後上傳。
連接超時問題解決紀實
問題
最近在服務器安裝了pureftpd提供給公司同事上傳文件用。在交付前使用FileZilla測試沒有問題,但是同事反映在Linux下ftp不能使用。
自己在Linux下測試了一下,一直卡在Entering Passive Mode,最後超時。
原因
而在windows下使用FileZilla測試並沒有問題。仔細看了下FileZilla的日志,發現有一行
想到pureftpd用的是雲主機,而雲主機的網卡只綁定有內網IP,外網IP應該是綁定在路由了。猜測ftp客戶端使用被動模式連接pureftpd的時候,pureftpd返回了一個內網IP。
通過wireshark抓包發現:
可以知道服務器的確返回了一個內網地址。
方法
那能不能強制pureftpd返回外網IP呢。通過查看pureftpd文檔,發現在pureftpd.conf加入:
復制代碼代碼如下:ForcePassiveIP 1.1.1.1
1.1.1.1為pureftpd外網ip。重啟之後問題解決。