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选项用来指定用户登录的起始工作目录,其它选项如无特殊指定使用主配置文件中的设置,如有特殊要求要在个用户配置文件中指定。