目录权限的“上”与“下”

网络与通信

在用Serv-U架设FTP服务器的过程中,出于管理和安全方面的考虑,我们通常会建立多个用户,并给不同的用户授予不同的权限。例如超级用户(管理员)拥有对所有目录的读、写、删除等权限,而Anonymous(匿名用户)通常只能浏览各个目录并下载资料。这说起来似乎简单,但在实际操作过程中,却常常出现问题──上传账号无法上传资料;本该能够下载的资料下载不了……其实这些问题多是由用户目录权限排列顺序错误所致。而这里的排列顺序,也就是指权限条款排列的上下位置。现在我们就来谈谈这个权限排列的“上”与“下”。
我们假设FTP服务器的主目录(也称为“根目录”)为d:\down,而在主目录下有两个子目录,分别是电影下载目录“movie”和文件上传目录“incoming”。对于上传用户upload,我们允许他看见主目录下的这两个子目录,并能够对两个子目录内的内容进行浏览和下载,但同时,他还要能向“incoming”子目录上传文件。
我们通常的操作过程如下:

1.创建用户upload

创建后,他对主目录的默认权限如(图1)所示:对“文件”的“读取”权限,表示可以浏览和下载主目录下文件;对“目录”的“列表”权限,表示可以列出主目录下所有的文件与目录;对“子目录”的“继承”权限,表示主目录以下的子目录也享有以上这些权限。

图1
图1

至此,用户upload已经拥有了除文件上传外的所有预定权限。

2.对用户创建子目录权限

我们需要创建用户upload对子目录“incoming”的文件上传权限,即“写入”权限。在图1所示的对话框中点击“添加”按钮,并选择“d:\down\incoming”目录。这时,用户对子目录“incoming”的权限与对主目录的权限相同,还无法实现上传,所以我们还必须勾选“写入”权限。最后得到如(图2)所示的权限列表。

图2
图2

至此,权限设置完成。最后点击主界面下的“刷新”按钮,使权限设置立即生效。
然而,当我们在客户端软件LeapFTP上用upload账号登录该FTP服务器后,发现虽能够正常访问所有目录,并能够下载文件,但却无法在“incoming”子目录中上传文件。

问题当然就出在目录权限的上下顺序上。

在Serv-U中,目录权限条款是从上至下依次执行的。细看图2所示的对话框,用户upload对主目录的权限是“读取”、“列表”和“继承”。关键就是在这个“继承”上,它意味着主目录以下的所有子目录(“movie”和“incoming”)都继承主目录的权限,也就是“读取”和“列表”。尽管我们在后面对“incoming”目录添加了“写入”权限,但实际上,排列在下面的这个权限条款根本就没有起作用,而是被从主目录继承下来的权限屏蔽掉了。

解决问题的方法是改变目录权限的上下顺序。

在图2的右下角,有两个箭头标记按钮,分别是“上移”和“下移”。选中图2中子目录权限条款,点击“上移”按钮,或者选中主目录权限条款,点击“下移”按钮,就可以改变权限条款的顺序(图3)。然后点击主界面中的“刷新”按钮使设置生效。现在,首先执行的是对子目录“incoming”的操作权限,其中含有“写入”,因此upload将能向“incoming”子目录中上传文件了。而主目录权限则在后面执行,确保用户upload对主目录和主目录之下的其他子目录(例如“movie”)具有列表与读取的权限。

图3
图3

可能会有读者问:为什么不直接在图2中取消主目录权限条款的“继承”呢?是的,这样做的确可以阻止主目录权限向下继承。但这样一来,用户upload就会因为对主目录之下的所有子目录没有任何权限而无法访问了,我们还必须添加他对每个子目录的权限条款。如果子目录很多,一个一个地对它们添加权限是相当麻烦的。

总结

在Serv-U的用户目录权限设置过程中,我们需要牢记:如果某用户需对某级子目录拥有额外的权限,则对该层子目录的权限应设置在上,而上级子目录或主目录的权限应排列在下。这样做既能确保子目录权限不会被上层目录继承下来的权限所屏蔽,又能保证上级目录权限能够最大限度地发挥影响。