2008-06-09

Proftpd

 

http://www.chinaunix.net/jh/15/247811.html

http://www.castaglia.org/proftpd/

http://www.proftpd.org/

為了讓使用者可以有多一點選擇,除了 Samba 之外,也提供了 FTP server。Proftp 也是很難 build,在 porting 上遇到不少問題。

但 ftp 跟 nfs不一樣的地方是它受到了大家的重視,也就受到較嚴格的測試。其中有幾個值得提的地方:

1. 使用者上傳檔案權限問題

描述:對於 anonymous 上傳的檔案會以 nobody 做為其 user:group,而其他人也就不會有讀寫權限的問題。但若某個user登入了自己的帳號,上傳的檔案就會以他的user:group為主,如此一來可能會造成其他人沒有讀取權限的問題。本來是用scheduling定期去將所有的檔案及資料夾的權限改為 777(-rwxrwxrwx),讓所有人

      都可以使用,但這樣一來如果檔案數量過多,會造成系統inode cache吃光所有的 memory,造成系統不穩定。

解法:
    在 proftpd.conf 中可以設定 Umask,他會在 ftp 將檔案上傳至 server時,利用此設定去計算出該檔案應有的權限設定。當設定為 Umask  0 時,所有的檔案及資料夾權限皆會是 777 (-rwxrwxrwx)。

2. 語系問題

描述:
    FTP的語系跟使用的 client有密切的關係。假使client是使用 Big5,那其他語系在顯示方面就會有問題。在NAS上預設使用的語系是 UTF-8,所以在不支援UTF-8的 client上,會有顯示及存取的問題。較新版的 proftpd有內建language module(mod_lang),他是搭配著系統的 locale 做設定,可惜在NAS上的locale尚未完成,為了先給客戶交代,只好用別的方法。

解法:
    網路上有人release一份patch,是將proftpd加上iconv去做語系方面的轉換,patch完後只需在config中設定local與remote的charset,他就會完成轉換。iconv是一套語系轉換的library,只需要幾個function就能轉換。

3. 頻寬限制

描述:
    為了讓user可以做bandwidth control,必須要提供頻寬的設定。

解法:
    在不同版本的 proftpd 中似乎必須要有不同的設定。在proftpd-1.3.1rc2中,可以利用以下的方法來設定:

http://www.proftpd.org/docs/directives/linked/config_ref_TransferRate.html

TransferRate RETR 1024  //表示下載為1024KB
TransferRate STOR 1024  //表示上傳為1024KB

4. configure reload

描述:
    當 FTP 的config有所改變時,例如新增刪除 user、改語系設定等,為了要讓 FTP server可以即時修改,就必需要重開daemon。但如此一來所有的連線都會被切斷。

解法:

當 proftpd 收到 SIGHUP 時會去 reload 他的 config。其實不只 proftpd 是這樣做的,很多 server 的程式都支援這種作法(如,samba)。因此只要在啟動的 script 中增加一項 reload 即可,內容如下:

killall -1 proftpd

沒有留言:

★★★★★★ 傑森系列 ★★★★★★