一、概念
vsftpd虚拟用户:不是系统用户,即虚拟用户在系统中是不存在的,不能用来登录系统。他们的总体权限其实是集中寄托在一个真实存在的用户(即虚拟宿主用户)身上。
vsftpd的虚拟宿主用户:真实存在的用户,是所有虚拟用户的宿主用户。由于他支撑了FTP的所有虚拟的用户,所以虚拟宿主用户的权限将会影响着这些虚拟的用户。出于安全性考虑,要非常注意对该用户的权限的控制,该用户绝对没有登陆系统的必要,这里也设定为不能登陆系统的用户。
ftp目录:/test/pub
指定访问的用户名:aa
密码:Aa123456
二、安装
(1)安装vsftpd、pam、db4、db4-utils
pam:是认证模块
db4/db4-utils:用来生成Berkeley DB格式的数据库
(2)#yum -y install vsftpd pam* db4*
(3)添加真实用户(宿主用户):useradd -s /sbin/nologin vsftpd
(4)建立虚拟用户帐号密码文件:奇数行为账号,偶数行为密码
vim /etc/vsftpd/virtual_user.txt //virtual_user.txt自己起的文件名,可以添加多个帐号密码
aa
Aa123456
(5)生成vsftpd虚拟用户数据库文件
#cd /etc/vsftpd
#db_load -T -t hash -f virtual_user.txt virtual_user.db
#chmod 600 virtual_user.db
(6)PAM设置
注释掉原来的所有行,并添加如下三行
vim /etc/pam.d/vsftpd
#%PAM-1.0
#session optional pam_keyinit.so
force revoke
#auth required pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
#auth required pam_shells.so
#auth include password-auth
#account include password-auth
#session required pam_loginuid.so
#session include password-auth
auth required pam_userdb.so db=/etc/vsftpd/virtual_user
account required pam_userdb.so db=/etc/vsftpd/virtual_user
session required pam_loginuid.so
(7)配置vsftpd.conf
###原文件中没有的参数,就要添加###
vim /etc/vsftpd/vsftpd.cof
anonymous_enable=NO #修改此行禁用匿名用户访问,YES改为NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES #开启日志记录
connect_from_port_20=YES
xferlog_std_format=YES #日志记录格式
listen=YES
pam_service_name=vsftpd #设置PAM使用的名称,该名称就是/etc/pam.d/目录下vsfptd文件的文件名
userlist_enable=YES
tcp_wrappers=YES
guest_enable=YES #开启虚拟用户功能,即映射虚拟用户与真实用户
guest_username=vsftpd #指定真实用户,vsftpd就是上面添加的用户
user_config_dir=/etc/vsftpd/user_conf #指定虚拟用户配置目录,此目录要自己创建
chroot_local_user=YES #锁定虚拟用户只能操作指定目录
(8)单独给虚拟用户分配权限
mkdir /etc/vsftpd/user_conf #创建虚拟用户配置目录
vim /etc/vsftpd/user_conf/aa #文件名和账户名一致
local_root=/test/pub
write_enable=YES
anon_upload_enable=YES #允许上传
anon_mkdir_write_enable=YES #允许虚拟用户创建目录
anon_other_write_enable=YES #允许拥有除了上传和新建目录之外的其他权限,如删除、更名等
anon_world_readable_only=NO #允许虚拟用户浏览整个服务器的文件系统
virtual_use_local_privs=YES #虚拟用户和本地用户有相同的权限
(9)重启vsftpd并测试
#service vsftpd restart
用用户名密码测试:aa/Aa123456
Linux: ftp 192.168.10.233
Window:ftp://192.168.10.233
备注:
禁锢根目录相关:
默认情况下,用户登陆ftp后的根目录就是用户自己的家目录。若不将用户禁锢在根目录,则登陆的用户可以通过cd命令至切换至根目录以外的目录,产生安全隐患。配置文件中相关选项如下:
chroot_list_enable=YES 是否启用用户禁锢在家目录文件
chroot_list_file=/etc/vsftpd/chroot_list 指定禁锢文件,文件中的用户将被禁锢
chroot_local_user=YES 是否允许所有系统用户禁锢在家目录。
例如:
chroot_local_user=NO
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
或者
chroot_local_user=YES