首发:猪笨无罪的吹牛地

原文:vsftp高级应用-配置虚拟用户

 

上篇文章(Vsftp的高级应用-给每个用户建立单独的配置文件)中讲到VSFTP中最常用的高级应用,本篇文章则是对上篇文章的一个扩展.通过配置虚拟用户,可以使VSFTP服务器更安全,帐户的各项权限分得更细,大大提高VSFTP服务器的灵活性.

有以下案例:某技术论坛需要做一个给用户投稿用的FTP服务器,其投稿专用帐号只允许用户上传,不允许用户下载,下载专用帐号则只允许下载不允许上传.后一个功能使用本地用户即可实现,但是前一个功能呢?仅仅使用本地用户是无法实现的.下面我们来用虚拟用户实现投稿账号的功能:

新建一个所有虚拟用户映射到本地的一个本地用户"vuser",为什么要建立这样一个账户呢?因为当你用虚拟用户访问vsftp时,虚拟用户在系统上时不存在的,此时vsftp应该以什么权限去访问linux系统呢?所以这里需要一个所有虚拟用户共用的一个本地用户:"vuser".

 

[root@LidadeFedora ~]# useradd vuser -s /sbin/nologin
[root@LidadeFedora ~]# passwd vuser

新建一个存储虚拟用户用户名密码的数据库,路径可自设,这里用/etc/vsftpd/vuser

[root@LidadeFedora ~]# cd /etc/vsftpd/
[root@LidadeFedora vsftpd]# touch vuser

编辑新建的vuser文件,添加两个账户vftp1,vftp2.vftp1用作上传专用帐号,vftp2用作下载专用账号,密码都为"123456":

把新建的文本文件vuser转换为db文件,这里需要安装一个包db4_utils,这个包可以在Linux安装光盘中找到

 

安装好包后,使用命令db_load转换文本文件为db文件:

[root@LidadeFedora RPMS]# cd /etc/vsftpd/
[root@LidadeFedora vsftpd]# db_load -T -t hash -f vuser vuser.db

打开主配置文件/etc/vsftpd/vsftpd.conf,开启vsftp虚拟用户功能需要启用四个选项:

guest_enable=yes

guest_username=vuser

pam_service_name=vvsftpd

local_enable=yes

local_enable=yes默认已存在,只需要添加第1-2条,修改第3条:

进入目录/etc/pam.d,新建空文件vvsftpd,内容为:

auth    required        /lib/security/pam_userdb.so     db=/etc/vsftpd/vuser
account required        /lib/security/pam_userdb.so     db=/etc/vsftpd/vuser

在上篇文章中,已经添加选项"user_config_dir=/etc/vsftpd/userconfig,这里只需要在该目录中新建两个配置文件"vftp1","vftp2":

账号vftp1用作上传专用账号,权限为只能上传不能下载不能删除不能新建文件夹,根目录为/var/ftp/share.由于虚拟用户使用的是匿名用户的权限选项,所以虚拟用户配置起来是非常灵活的.这里还要注意一下选项"anon_world_readable_only=no”这个选项的大致意思是开放匿名用户(虚拟用户)的浏览权限,如果不写这个的话会报一个错误.

 

local_root=/var/ftp/share
download_enable=no
anon_upload_enable=yes
anon_other_write_enable=no
anon_mkdir_write_enable=yes
anon_world_readable_only=no

帐户"vftp2"用作下载账号,只能下载不能上传不能删除不能新建文件夹,根目录为/var/ftp/share

local_root=/var/ftp/share
download_enable=yes
anon_upload_enable=no
anon_other_write_enable=no
anon_mkdir_write_enable=yes
anon_world_readable_only=no

下面来建立文件夹/var/ftp/share,这个文件夹的所有者应该为"vuser",因为虚拟用户vftp1,vftp2映射的本地用户是vuser,如果vuser对该文件夹没有权限,那么不论配置文件里的权限开多大也无济于事.

打开客户端的flashfxp,修改用户名为vftp1连接到vsftp服务器

使用子配置文件的好处之一:你甚至都不用重启vsftpd服务就可以直接用客户端连接上去,新的权限会即时生效:),下面来测试一下vftp1的上传和下载、删除等权限是否符合我们的要求:

大家注意上面截图中的速度,为什么这么慢呢?我们没有使用限速选项啊.呵呵,大家不要忘记了,在第一篇文章中我们已经在主配置文件中为匿名用户添加了一个选项anon_max_rate=60000,这个选项同样也适用于虚拟用户,匿名用户的选项大多数都适用于虚拟用户.

下面来看下载测试结果:

显然,这正是我们希望看到的.用户无法下载自己刚刚上传的文件.删除、新建文件夹等权限以及vftp2用户的权限请自行测试,

至此,Vsftp告一段落,若有疑问请在页面下方留言.没有疑问也在下面留个言吧,我太需要鼓励了(*^__^*) ~