用Dreamhost提供FTP文件下載服務

我在這篇Blog里有提到過.
這裡多說一點

Dreamhost的匿名FTP需要獨立IP支持,而後者是收費的($3.99/month)
(相比之下, cPanel面版虛擬主機不需要獨立IP就可以支持Anoymous FTP,所以國外其他大多數空間都免費支持匿名FTP)

但 Dreamhost 採用 ProFTPD 1.3.1rc2 Server 作為FTP伺服器, ProFTPD支持.ftpaccess 配置用戶訪問許可權 !.所以我們完全可以自定義公共FTP下載帳號.這在偶這篇Blog里說得很清楚.

然而,Dreamhost提供完整的Shell環境,這意味著我們可以做的更多!
我把完整過程寫在這裡供參考.

在Dreamhost Panel新建一個Shell帳號,假設為 ftp_test 密碼為123456
然後,PuTTY登陸這個帳號
 

vim .ftpaccess

 
在vim里輸入下面內容,然後Esc, :wq退出
 


DenyAll


 
關於.ftpaccess文件詳細說明,見這裡
上面的配置使User可以FTP登陸,可以下載文件,無法刪除,覆蓋,更改,重命名文件和文件夾,甚至無法用LIST列出文件列表 。如果要允許用戶列文件列表,去掉 DIRS 即可
 


mkdir files
chmod 777 .ftpaccess
chmod 777 files

 
把.ftpaccess設為777是為了以後方便通過其他Shell帳戶管理。而files文件夾是以後存放文件地方。由於Dreamhost 默認 umask是002,所以Files文件夾里創建的任何子文件夾/文件許可權是775,足夠了。

OK,現在在 Dreamhost Panel里把這個ftp_test用戶改為FTP類型,你可以用FTP登陸看看,你將發現無法列出文件列表 ,試試手工 輸入命令: RMD files ,提示 「550 files: No such file or directory ”
但下載文件(GET)是允許的。

這就成功達到了我們的目的,建立一個對於用戶而言只讀的FTP帳戶。
我們將往files里添家文件,你可能已經想到了,files許可權是755,你可以用你的任何一個其他Shell帳號,通過SSH往裡面寫入文件!, Just Test

換一個Shell帳號登陸:試試看

cd /home/ftp_test/files/
touch test1.file
mkdir aaa
cd aaa
touch test2.file
cd ..
ls -lh

怎麼樣,不錯吧?
假設你在files里添加 test1.file文件,那麼這個文件可通過 ftp://ftp_test:[email protected]/files/test1.file 這個地址被任何人訪問

現在你已經準備好一切,你可以往這裡添加文件了
當然,可以用 cp
不過這將重複佔用你的空間!

記住,Dreamhost提供完全的Shell,所以你可以做更多
 

ln test1.file /home/ftp_test/files/test1.file

 
用ln創建硬連接!,現在用FTP,怎麼樣,files文件夾里有了一個test1.file,並且完全可以訪問
而這是不佔空間的連接而已。
你同時需要保證test1.file的許可權對於ftp_test可讀,Dreamhost默認新文件許可權755,因此大多數情況下你不必擔心

但是,下面的方法是無效的
 

ln -s test1.file /home/ftp_test/files/test1.file

 
經過實驗,軟連接是無效的,即使目標文件許可權是777。Linux下軟連接的內容實際上只是一個Link.這使得其可能只在Shell下有效。

你不需要一個個創建連接:

cp -rl files1 /home/ftp_test/files/

.
用cp -l參數創建文件的硬連接,注意目錄仍然將被創建而非連接
files1是源目錄。

你可能想到用 ln -d 創建目錄的硬連接
但很遺憾,在Dreamhost上這個命令無效,因為你沒有 root許可權。

現在你已經知道了所需要的一切
只是你需要時刻注意:

你創立的是硬連接,雖然不佔空間,但它們和原始文件是完全等效的(就像一個文件的兩個名字)
你必須時刻小心的保證.ftpaccess文件的有效性。否則後果可能災難。

因此,建議你把用來控制這個FTP帳戶的Shell和這個FTP user單獨放在一個Unix Group里
(在Dreamhost後台可以設置)

並且把 .ftpaccess和files許可權設為770
這樣的話,任何其他Shell用戶都無法訪問

本文向你展示了Dreamhost Shell的強大能力的冰山一角
如果你精通Linux,你會發現,還有非常多的樂趣在其中

One Reply to “用Dreamhost提供FTP文件下載服務”

Comments are closed.