vsftpd 虚拟用户配置说明

环境信息

  • Centos 7
  • Vsftpd 3.0.2

vsftpd虚拟用户通过映射系统用户权限的方式,使虚拟用户具有和本地系统用户一样的权限,或者灵活的控制虚拟用户的权限(不和本地用户权限相同,不能高于本地权限),达到访问权限的灵活控制,同时防止大批vsftpd用户添加到系统账号库中,使系统用户管理变动臃肿。

创建虚拟用户映射的系统用户

系统用户virtftp拥有对ftp的读写权限,假设ftp根目录为/data/vsftpd/
创建ftp用户组和用户virtftp,ftp相关系统账号属于ftp组

groupadd ftp
useradd -d /data/vsftpd -M -s /sbin/nologin -g ftp virtftp
mkdir /data/vsftpd
chown -R virtftp:ftp /data/vsftpd
chmod -R 750 /data/vsftpd

ftp根目录属于用户virtftp,用户组为ftp,设置权限750,使virtftp用户拥有读写权限

创建虚拟用户的口令库

需要使用db_load命令根据原始口令文件(/etc/vsftpd/passwd.txt)生成db口令库文件,原始文件中奇数行为用户名,偶数行为密码

db_load -T -t hash -f /etc/vsftpd/passwd.txt /etc/vsftpd/passwd.db
chmod 600 /etc/vsftpd/passwd.db

修改pam认证文件/etc/pam.d/vsftpd,只保留以下2行
或者重新创建文件/etc/pam.d/vsftpd_vu,并在vsftpd.conf中配置pam_service_name=vsftpd_vu)

vsftpd_vu
auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/passwd
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/passwd

db=/etc/vsftpd/passwddb_load生产的文件,不要带后缀 .db
如果认证发生错误,可检查日志文件:/var/log/secure

配置 vsftpd 启用虚拟用户

修改vsftpd配置文件,默认为/etc/vsftpd/vsftpd.conf vsftpd.conf常用配置文件说明

vsftpd.conf
# 使用虚拟用户功能,必须允许本地用户
local_enable=YES

# 启用虚拟用户配置,所有非匿名用户登录将视为游客,将被映射为guest_username
guest_enable=YES

# 主配置文件中必需有,否则报错
# 500 OOPS: vsftpd: cannot locate user specified in 'guest_username':ftp
guest_username=virtftp

# 虚拟用户独立配置文件目录,每个虚拟用户有一个同名的配置文件于此目录下
user_config_dir=/etc/vsftpd/virtual_user_conf

配置虚拟用户配置文件

虚拟用户配置文件位于 vsftpd.conf 配置 user_config_dir 指定的目录下,每个用户一个配置文件,配置文件和用户名同名
用户名,配置文件名,必须和口令文件中的用户名保持一致

user1
# 指定虚拟用户根目录
local_root=/home/ftpsite/user1

# 虚拟用户是和本地用户有相同权限;NO:虚拟用户和匿名用户权限相同
virtual_use_local_privs=YES

# 虚拟用户对应的系统用户
guest_username=virtftp

# 虚拟用户将被锁定在自己的宿主目录
#chroot_local_user=YES

write_enable=YES
#lock_upload_files=NO
anon_umask=022
#download_enable=NO
#anon_upload_enable=YES
#anon_mkdir_write_enable=YES
#anon_other_write_enable=YES
#chown_uploads=YES
#chown_username=nono
#allow_anon_ssl=YES

#force_anon_logins_ssl=YES
#force_anon_data_ssl=YES
#cmds_allowed=CWD,LIST,MDTM,MKD,NLST,PASS,PASV,PORT,PWD,QUIT,RMD,RETR,SIZE,STOR,TYPE,USER,ACCT,APPE,CDUP,HELP,MODE,NOOP,REIN,STAT,STOU,STRU,SYST

常用配置说明

virtual_use_local_privs参数说明
virtual_use_local_privs=YES时,虚拟用户和本地用户有相同的权限;
virtual_use_local_privs=NO 时,虚拟用户和匿名用户有相同的权限,默认是NO。
virtual_use_local_privs=YESwrite_enable=YES时,虚拟用户具有写权限(上传、下载、删除、重命名)。
virtual_use_local_privs=NOwrite_enable=YESanon_world_readable_only=YESanon_upload_enable=YES 时,虚拟用户不能浏览目录,只能上传文件,无其他权限。
virtual_use_local_privs=NOwrite_enable=YESanon_world_readable_only=NOanon_upload_enable=NO 时,虚拟用户只能下载文件,无其他权限。
virtual_use_local_privs=NOwrite_enable=YESanon_world_readable_only=NOanon_upload_enable=YES 时,虚拟用户只能上传和下载文件,无其他权限。
virtual_use_local_privs=NOwrite_enable=YESanon_world_readable_only=NOanon_mkdir_write_enable=YES 时,虚拟用户只能下载文件和创建文件夹,无其他权限。
virtual_use_local_privs=NOwrite_enable=YESanon_world_readable_only=NOanon_other_write_enable=YES 时,虚拟用户只能下载、删除和重命名文件,无其他权限。