vsftpd服务器虚拟用户配置方法

       Vsftp中的用户有三种形式。第一种是匿名用户,登录时可以用任意一个email地址作为密码,其权限对应操作系统中名为ftp的用户。第二种是本地用户,是操作系统中建立的用户。第三种虚拟用户,用户名和文件存放在特定的数据文件中,只在Vsftpd中有效,一般情况下不能在其他系统中使用。虚拟用户的优点:1、对操作系统的安全有好处,FTP用户账号的泄漏不会对操作系统安全造成任何影响。2、不需要在操作系统中建立用户,减轻了操作系统的管理负担。3、虚拟用户账号的权限设置方便,存储位置也灵活多样,便于与其它系统的集成。今天主要来配置第三种形式——虚拟用户。 

        一、创建虚拟账号、密码文件 V_user.txt,帐号名与密码各一行(不能空行):

                 user1

                 passwd1

                 user2

                 passwd2

        二、生成虚拟帐户数据库(执行下面命令时,确保DB库及工具包已安装):

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

                chmod   600  /etc/vsftpd/V_user.db

        三、创建/etc/pam.d/vsftpd_login文件,输入如下内容:

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

                account  required   /lib/securiry/pam_userdb.so   db=/etc/vsftpd/V_user

                所有支持PAM的程序都有一个与PAM进行对接的配置文件,它们存放在    /etc/pam.d目录,vsftpd与PAM对接的配置文件名由vsftp.conf文件中的pam_service_name选项指定,默认文件名为vsftpd。

        四、创建一个与所有FTP虚拟帐号相对应的操作系统帐号,并设置该账号工作目录的权限:

                 useradd   -d  /home/v_ftp    -s   /sbin/nologin    v_ftp                        

                 chmod  700    /home/v_ftp 

         五、在vsftpd.conf文件中添加如下与虚拟用户配置有关的内容:

                  guest_enable=YES                                                

                  guest_username=v_ftp                      

                  pam_service_name=vsftpd_login

          六、设置虚拟用户的权限:

            操作系统本身有一套控制用户权限的机制,当vsftpd采用本地用户登录时,本地用户对文件的权限是由操作系统规定的。如果要求所有的虚拟用户对操作系统文件的权限是一样的,可以在vsftpd.conf中使用virtual_use_local_privs=YES配置,其功能是使虚拟用户的权限与操作系统中所对应的用户权限一样,这样就可以通过设置本地用户权限来决定虚拟用户的权限。

            但如果要求每个虚拟用户具有不同的权限,使用上面的方法就不行了。为了解决这个问题,vsftpd可以为每个虚拟用户设置自己的配置文件,其文件名和用户名相同,这些配置文件要统一放在一个目录下,目录的位置由vsftpd.conf文件中的user_config_dir选项指定。由于不同的用户可以在自己的配置文件中设置不同的内容,因此,vsftpd就可以为虚拟用户指定不同的权限了。个人配置文件中有一个local_root选项用来指定用户登录的起始工作目录,其它选项如无特殊指定使用主配置文件中的设置,如有特殊要求要在个用户配置文件中指定。