用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,你会发现,还有非常多的乐趣在其中

1 Response to “用Dreamhost提供FTP文件下载服务”


Comments are currently closed.