vsftpd 高级配置--虚拟用户配置

配置vsftpd的时候,虚拟用户配置肯定是少不了的。这也是vsftp的安全性的很大的一块,可以完全抛开系统用户,使用虚拟帐号给外面的人提供登录系统的下载东西的功能。下面我们就来设置虚拟用户。

首先先检查必须的软件包有没有安装好:

yum install db4*                    // 这个系列的软件包都要安装的,用来生成口令数据库。

 

下面、我们来开始配置vsftp的虚拟用户:(在这里所有的文件我都使用绝对路径,方便查看!)

1、首先,先做一张用户列表文件,里面输入需要设置的用户名和密码,文件名随便自己输。

     # vim /etc/vsftpd/viruser.txt

        zhangsan

        123456

        wanger

        123456

        xiaoxiao

        123456

文件的格式如上面,用户名一行,密码一行,奇数为用户名,偶数为用户名对应的密码。

 

2、用户列表文件做好之后,下面我们将刚才那个文件生成用户口令数据库文件,命令如下:

    # db_load -T -t hash -f /etc/vsftpd/viruser.txt /etc/vsftpd/vsftpd_login.db

3、生成口令数据库文件之后,为了防止别的人乱改动数据库,就要给他设置个权限,如下:

    # chmod 600  /etc/vsftpd/vsftpd_login.db

4、设置好权限之后,别人就动不了了,接着我们将刚刚生成的口令数据库文件设置成PAM认证文件,方便vsftpd对登录的帐号和密码做认证。

    # vim /etc/pam.d/vsftpd/vsftpd.vu

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

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

检查有没有错误,保存退出!

5、虚拟用户本来和系统帐号是没一点关系的,但是因为他要使用到系统资源,尤其是一些ftp上传和下载的权限,需要单独设置的,所以,要让虚拟用户和系统相挂钩,那就必须要和系统用户有点关联,那我们就要设置一个本地用户帐号来和虚拟用户做对接,下面我就来设置一个实体账户来对接虚拟用户。为了安全起见,这个帐号就不让他实现本地登录,专门用户vsftp服务。

   # useradd -d /home/virtual  -s /sbin/nologin    virtual

 

6、条件都弄好了,下面我们来修改配置文件,让vsftpd.conf能够用到虚拟用户登录。

   下面这些都是要自己加上去的,基本上默认的配置文件里是没有的。

    # vim /etc/vsftpd/vsftpd.conf

       guest_enable=YES            //开启来宾帐号访问功能

       guest_username=virtual     //将guest来宾帐号的权限对应到我们刚刚设置的帐号权限。

       pam_service_name=vsftpd.vu    //vsftpd的虚拟帐号认证文件,就我们前面生成的那个文件

将上面的加上去了之后,我们一个最基本的虚拟帐号的功能就可以使用了,下面我们可以进行测试了。先进入虚拟用户的主目录,然后建立一个文件,

    # cd /home/virtual 

    # touch test.txt 

    然后启动vsftpd服务,

    #service vsftpd start

   为了让匿名用户能够下载和看到共享里的文件,还需要在配置文件里再给他加个功能。

    anon_world_readable_only=NO   //让vitual有读的权限

这样,我们的vsftpd就支持虚拟帐号登录了。但是虽然是可以正常登录了,有一个问题啊,那么多帐号,难道都使用同一个目录么,难道都是一样的上传下载权限么,那这样和anonymous有什么区别呢,是啊。当然不能这样的了,所以我们的匿名用户也可以根据帐号来设置相应的权限和不同的宿主目录的,下面我们就来根据不同的帐号设置不同的的宿主目录和权限等。

先在配置文件里添加一条配置信息

     # vim /etc/vsftpd/vsftpd.conf

    user_config_dir=/etc/vsftpd/user_conf       //这条参数的作用是指定虚拟用户的配置文件的目录的,记住user_list是一个目录,所有关于虚拟用户的配置文件都在这个目录下面,这个目录默认是没有的,要我们自己创建。

7、上面说了那个目录是默认没有的,我们就来创建那个目录    

    # mkdir -p /etc/vsftpd/user_conf

8、既然所有关于虚拟用户的配置信息都在这个目录下面,那我们怎么知道哪个对应的是哪个呢,又要怎么样创建呢?在user_conf目录下面,我们根据我们的帐号来进行配置,需要单独配置特权的用户,我们就在user_conf目录下面创建一个以这个用户名字命名的文本文件,比如前面我有个zhangsan的帐号,我们就在目录下面创建一个zhangsan的文件,然后在文本文件里输入配置的权限条件,比如:

    #vim /etc/vsftpd/user_conf/zhangsan                            //注意,zhangsan这里是个文件

    local_root=/home/zhangsan        //这个命令是指定张三的宿主目录,

保存,退出!

9、上面都指定了zhangsan的宿主目录,那我们就要给他建立一个目录咯,

    # mkdir -p /home/zhangsan

然后我们就重启下vsftpd服务,然后使用zhangsan和wanger分别进行登录测试,发现他们两个帐号的根目录不一样了,那就说明我们设置成功了,至于更多的权限设置,我们就可以在user_conf目录下面进行设置,然后就有了相应的权限了。

还有个问题,就是我们在后期新加用户的时候,只需要重复第一、二步操作就可以了。然后vsftpd服务器就可以认识到新的帐号了。整个过程就是这样的了,只是user_conf目录下的配置文件的配置语句要再好好去研究研究。有大神懂的话,也希望指点一二!

 

你可能感兴趣的:(vsftpd,虚拟用户)