本文首发于烂泥行天下

前几天写过一篇有关vsftpd虚拟用户的文章,今天再来介绍有关vsftpd虚拟用户与匿名用户配合使用的案例。

要求:在公司FTP服务器上,用户ilanni对/data目录下所有的目录都具有管理员权限,即删除、新建、重命名、上传等。而匿名用户可以浏览data目录下的所有目录,其中只对tmp目录具有管理员权限。

这样可以达到只有一个管理员账号,可以对/data目录进行操作,而公司的其他员工帐号都可以浏览/data目录,并且在/data/tmp目录下可以新建自己的目录,并上传文件等权限。

有关vsftpd的安装,可以参考我之前的文章《烂泥:Vsftpd使用虚拟用户,访问FTP》。

现在我们先新建目录/data,如下图:

[root@localhost /]# mkdir data

烂泥:vsftpd虚拟用户与匿名用户配合使用_第1张图片

为了演示,再在/data/目录新建几个目录以及tmp目录,如下图:

[root@localhost /]# cd /data/

[root@localhost data]# mkdir soft

[root@localhost data]# mkdir gane

[root@localhost data]# mkdir tmp

烂泥:vsftpd虚拟用户与匿名用户配合使用_第2张图片

为了更简单的进行控制,我们就不在系统中新建用户,直接使用root用户及root用户组,通过root用户级root用户对目录的权限,来达到虚拟用户对目录的权限。

首先,我们来开启vsftpd匿名用户上传的权限。有关这个的介绍,可以参考我的另外一篇文章《烂泥:【解决】Vsftp匿名上传问题》。

因为/data/tmp目录对于匿名用户来说具有各种权限,所以我们需要修改/data/tmp目录的用户及用户组权限。该目录是root用户创建,所以目前该目录的权限是root用户拥有所有权,如下图:

烂泥:vsftpd虚拟用户与匿名用户配合使用_第3张图片

现在修改权限为777,即所有用户对该目录具有所有权。

烂泥:vsftpd虚拟用户与匿名用户配合使用_第4张图片

目录权限修改完毕后,现在开始配置vsftpd虚拟用户。注意本次实验继续使用《烂泥:Vsftpd使用虚拟用户,访问FTP》文章中的环境及相关配置。

修改vsftpd的配置文件,把anon_upload_enable=YESanon_mkdir_write_enable=YES项的注释去掉,并增加anon_other_write_enable=YES。添加如下图:

烂泥:vsftpd虚拟用户与匿名用户配合使用_第5张图片

其中anon_upload_enable=YES表示开启匿名用户的上传权限

anon_mkdir_write_enable=YES表示开启匿名用户创建目录的权限

anon_other_write_enable=YES表示开启匿名用户删除和重命名的权限

为了让用户登录后直接进入的就是/data目录,在此我们还要修改本地用户与匿名用户的默认根目录,如下图:

烂泥:vsftpd虚拟用户与匿名用户配合使用_第6张图片

现在开始添加vsftpd虚拟用户ilanni

Vi login.txt

烂泥:vsftpd虚拟用户与匿名用户配合使用_第7张图片

添加完毕后,我们需要使用db_load命令把该用户添加到数据库文件中:

db_load -T -t hash -f /etc/vsftpd/login.txt /etc/vsftpd/login.db

注意该操作建议多执行两次,因为有可能执行一次不成功。

数据库文件操作完毕后,我们现在开始创建ilanni对应的相关配置文件。打开vu目录并创建ilanni文件,并添加如下内容:

guest_username=root

local_root=/data/

virtual_use_local_privs=YES

如下图:

烂泥:vsftpd虚拟用户与匿名用户配合使用_第8张图片

以上全部配置完毕后,要重启vsftpd服务。

测试相关权限。先使用匿名用户,进行测试。

烂泥:vsftpd虚拟用户与匿名用户配合使用_第9张图片

匿名用户登录

烂泥:vsftpd虚拟用户与匿名用户配合使用_第10张图片

测试匿名用户在/data/tmp/目录下上传文件,上传失败。

烂泥:vsftpd虚拟用户与匿名用户配合使用_第11张图片

测试匿名用户在/data/tmp/目录下上传文件,上传成功。

烂泥:vsftpd虚拟用户与匿名用户配合使用_第12张图片

测试匿名用户在/data/tmp/目录下创建文件夹,创建成功。

烂泥:vsftpd虚拟用户与匿名用户配合使用_第13张图片

测试匿名用户在/data/tmp/目录下删除文件,删除成功。

烂泥:vsftpd虚拟用户与匿名用户配合使用_第14张图片

FTP用户ilanni登录

烂泥:vsftpd虚拟用户与匿名用户配合使用_第15张图片

测试FTP用户在/data/目录下创建文件夹,创建成功

烂泥:vsftpd虚拟用户与匿名用户配合使用_第16张图片

测试FTP用户在/data/目录下上传文件,上传成功。

烂泥:vsftpd虚拟用户与匿名用户配合使用_第17张图片

测试FTP用户在/data/目录下删除文件,删除成功。

通过上述测试我们可以看到,我们在文章开头的要求已经一一实现。