# portmaster -yBD /usr/ports/ftp/pure-ftpd # echo pureftpd_enable=\"YES\" >> /etc/rc.conf
依照自己需求勾選需要的選項,
一般會勾選 TLS、UTF8、LARGEFILE。
相關說明文件都在 /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新增ftpuser與ftpgroup,提供給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為何。
沒有留言:
張貼留言