在/etc/vsftpd/vsftpd.conf配置文件中设置anonymous_enable=YES,就可以允许虚拟用户登陆,即使系统用户的设置为local_enable=NO也可以登陆,但除了查看和下载到本地外,无任何其他操作权限
此时还需要在配置文件中设置其他四个选项:
anonymous_enable=YES 启动虚拟用户登录
anon_upload_enable=YES 允许虚拟用户有写权限
anon_other_write_enable=YES 允许虚拟用户有删除权限
anon_mkdir_write_enable=YES 允许虚拟用户创建文件夹权限
添加完后重启VSFTP服务,再次尝试发现结果和上次一样,原因是系统用户ftp对pub目录没有写入权限
更改pub目录权限后一切正常,所以最终生效的权限取决于服务权限与系统权限的交集
通过上面知道匿名用户访问的文件目录为/var/ftp/pub,但是匿名用户自己却认为在/目录下,说明默认情况下匿名用户就是被chroot的另外需要注意的一点是:更改系统权限的时候只能针对var/ftp/下的pub目录,如果更改的是/var下的ftp目录权限,此时就算配置文件中允许匿名用户登录,访问时依然会提示你输入用户名和密码
系统用户登录配置
系统用户即为存在于/etc/passwd中的用户,在/etc/vsftpd/vsftpd.conf文件中设置项为local_enable=YES,使用系统用户登录后文件夹为该用户的家目录,默认不做其他设置时用户可以从自己的家目录切换到其他任意目录下,会有一定的安全隐患
所以在使用系统用户作为VSFTP的登录用户时,推荐执行以下2个步骤:
1.添加用户时使用命令useradd -s /sbin/nologin userName 禁止该用户登录系统
2.启用chroot_local_user=YES 选项,这样该用户登录FTP后就会禁锢在自己的家目录
需要说明的一点是,我们看到/etc/vsftpd/vsftpd.conf配置文件中chroot_list_enable=YES和chroot_list_file=/etc/vsftpd/chroot_list两项默认也是被注销的,它的功能是指定一个chroot_list文件,只有写在该文件中的用户会被chroot,其他用户不会被chroot,该功能和chroot_local_user选项不能同时存在
显然,无论是匿名用户还是系统用户,安全性上都存在一定隐患,所以对于安全性要求较高的场景还可以使用虚拟用户的方式,它是对一个文件中存放的用户及密码进行认证,认证通过后再将其重映射为一个虚拟用户,存放用户及密码的文件可以是hash编码的文件,也可以是关系型数据库虚拟用户登陆配置
首先在/etc/vsftpd/vsftpd.conf配置文件中添加guest_enable=YES选项,它的作用是将一个非匿名用户重映射为系统用户,默认为ftp,或者可以指定映射的系统用户名,被指定的系统用户必须存在,且在/home/下有和该用户同名的目录