2014-04-10

Pure-FTPd

# portmaster -yBD /usr/ports/ftp/pure-ftpd
# echo pureftpd_enable=\"YES\" >> /etc/rc.conf

依照自己需求勾選需要的選項,
一般會勾選 TLSUTF8LARGEFILE

相關說明文件都在 /usr/local/share/doc/pure-ftpd/ 裡面。
而syslog會預設記錄ftp的log檔到 /var/log/xferlog

1. 編輯pure-ftpd的設定檔: pure-ftpd.conf

# cd /usr/local/etc/
# cp pure-ftpd.conf.sample pure-ftpd.conf
# chmod u+w pure-ftpd.conf
# vim pure-ftpd.conf

TrustedGID 0
NoAnonymous yes
PureDB /usr/local/etc/pureftpd.pdb
UnixAuthentication yes
FileSystemCharset UTF-8
ClientCharset UTF-8

(1)
ChrootEveryone=yes,
TrustedGID中設定的gid就不會被限制只能存取家目錄。

(2)
UnixAuthentication=yes,
則pure-ftpd同時也會以/etc/passwd的帳號密碼認證登入。

(2)
MinUID中設定的數字,
表示至少uid要大於這個數字的使用者才能登入。(man pure-pw -u選項的部分)

(3)
如果TLS > 0,
則需要 /etc/ssl/private/pure-ftpd.pem 這個檔案,(參考README.TLS)
而且沒有這個檔案,就無法啟動pure-ftpd。



2. 可以使用的指令

# ls -l /usr/local/sbin/pure-*
/usr/local/sbin/pure-alwaysfail
/usr/local/sbin/pure-authd
/usr/local/sbin/pure-config.pl
/usr/local/sbin/pure-ftpd
/usr/local/sbin/pure-ftpwho
/usr/local/sbin/pure-mrtginfo
/usr/local/sbin/pure-quotacheck
/usr/local/sbin/pure-uploadscript
# ls -l /usr/local/bin/pure-*
/usr/local/bin/pure-pw
/usr/local/bin/pure-pwconvert
/usr/local/bin/pure-statsdecode



3. 新增使用者

pure-ftpd使用pure-pw管理虛擬使用者,
而必須要新增一個真實帳號與群組,提供這些虛擬使用者使用。
(參考: man pure-pw(8)、README.Virtual-Users)

首先用pw新增ftpuserftpgroup,提供給pure-ftpd的虛擬使用者使用。
之後用pure-pw新增一個虛擬的user
# pw groupadd ftpgroup -g 2121
# pw useradd ftpuser -u 2121 -g ftpgroup \
  -c "Anonymous FTP user" -d /home/ftpuser -s /sbin/nologin -m
# mkdir /home/ftpuser/user
# chown ftpuser /home/ftpuser/user
# pure-pw useradd user -u ftpuser -g ftpgroup -d /home/ftpuser/user -m
# pure-pw show user

pw的-m選項,代表自動新增使用者目錄;
而pure-pw的-m選項,則是代表新增完後自動寫入資料庫(pureftpd.pdb),
如果不加此選項,則需要另外輸入 pure-pw mkdb 來更新資料庫。



4. 除錯

(1)
狀況描述:
就算使用指令: service pure-ftpd start
也看到Running: /usr/local/sbin/pure-ftpd...的訊息出現,
但是 service pure-ftpd status 卻依然顯示沒有在執行。

解決辦法:
可能是pure-ftpd.conf中,TLS選項的問題。
如果設定值不為0,則必須確保一定要有 /etc/ssl/private/pure-ftpd.pem 這個檔案,
沒有這個檔案卻開啟TLS,則會無法順利啟動pure-ftpd。

(2)
狀況描述:
輸入帳號密碼,卻一直出現認證錯誤。
指令: USER user
回應: 331 User user OK. Password required
指令: PASS ****
回應: 530 Login authentication failed
錯誤: 嚴重錯誤
錯誤: 無法連線到伺服器
有很多種可能會導致這錯誤:
(a)
確定新增使用者時密碼沒有打錯。
(b)
新增使用者完一定要用 pure-pw mkdb 更新資料庫,
或是在 pure-pw useradd 時加入 -m 選項。
(c)
確定你的pure-ftpd是讀取到設定檔中 PureDB 指定的檔案。
執行程式時會看到 -lpuredb 的選項出現,後面接的就是你指定的檔案。
開啟pure-ftpd服務的方式為 /usr/local/etc/rc.d/pure-ftpd start
或直接使用 service pure-ftpd start,不要直接在命令列裡輸入pure-ftpd。
(d)
在新增虛擬使用者時,會指定他們使用某個真實的使用者,
確定該真實使用者的uid要比設定檔中的MinUID還大。
使用 pure-pw show {username} 查看該虛擬使用者被指定的uid為何。

沒有留言:

張貼留言