匿名用户首先要配置的就是配置文件中的“anonymous_enable=YES”这一项,默认情况下是允许匿名访问,在Windows系统用命令行去匿名访问FTP,也还是要输入用户名和密码的,匿名用户提供了专门的两个匿名账号来供使用“anonymous和ftp”无需输入密码,登陆成功后,使用ls命令列表显示,get下载,put上传。在系统中也有与匿名用户“ftp”相对应的用户,这样对于匿名用户有什么权限,就是设置ftp用户的权限,如果客户端访问不成功,可能是由于服务端的防火墙和selinux没关导致的;匿名用户在访问FTP服务时只能访问FTP主目录/var/ftp,不能切换到别的目录访问;如果想访问别的目录,那就要用户对于目录有权限。设置匿名用户上传,vsftpd服务默认是允许匿名用户访问并提供下载的功能,但考虑安全性,匿名用户无法上传,要想让匿名用户可以上传文件,就必须对vsftpd的配置文件和共享目录的系统权限进行设置,当然,在实际中,是不建议给匿名用户太多权限的:在配置文件/etc/vsftpd/vsftpd.conf中,“#anon_upload_enable=YES(允许匿名用户上传,默认是不行的,被注释掉)”和“#anon_mkdir_write_enable=YES(允许匿名用户创建目录,默认是不行)”这两项与匿名用户上传的权限设置相关。然后修改默认访问的目录的系统权限,FTP默认目录/var/ftp目录是不允许修改权限的,目录下还有个pub子目录,可以修改这个目录的权限来允许匿名用户上传。修改完权限匿名用户能上传和创建目录后,但如果想删除里面的文件的话,还需要在配置文件中添加一个设置项“anon_other_write_enable=YES”表示允许匿名用户删除文件配置本地用户访问FTP:在Windows客户端,当匿名访问和本地访问同时开启,访问是默认使用匿名访问的,如果像切换用户,就右键点击登录输入用户名和密码。要使用系统用户登录访问FTP,就要将配置文件中“local_enable=YES”开启,使用系统用户访问,默认是访问的用户的家目录,而不是/var/ftp目录,因为系统用户访问的是自己的家目录,所以默认是可以上传文件的。如果希望系统用户在访问FTP时,访问的是FTP主目录/var/ftp,而不是家目录,可以在配置文件/etc/vsftpd/vsftpd.conf再新添加一行“local_root=/var/ftp”来指定访问的目录,也可以自己随意指定。这样在修改了访问的主目录后,默认就是没有权限进行上传的,在配置文件中时允许上传,但在系统层面,还是不允许客户端对主目录进行上传,我们还是可以通过修改主目录下的子目录的权限或新建别的子目录的权限来让客户端进行上传。禁锢用户于指定的目录,默认情况下,当系统用户去访问FT[服务时,虽然访问的是自己的家目录或指定的目录,但是都可以通过cd命令切换到服务端的其他用户具有访问权限的目录,这样就会存在安全隐患,所以就需要将系统用户禁锢在指定的目录中,禁止随意切换目录。禁锢这个操作需要用到“chroot_local_user=YES”设置项,这个设置项位于vsftpd配置文件的101行,默认是被注释状态,启用该项并重启保存配置后,就可以将用户禁锢在自身家目录或指定的FTP主目录中,当客户端再次登录访问FTP后,就只能在他自己的家目录或指定的FTP主目录中访问。要注意的是,在vsftpd.conf配置文件中启用了“chroot_local_user=YES”配置项后,当启用了禁锢的设置项,同时用户还对自己访问的主目录有写入权限,例如,如果系统用户对所访问的FTP主目录具有写入权限,则会拒绝用户登录,如果是访问的是家目录,默认拥有写入权限,禁锢在家目录中,就会导致拒绝登录
如果想要既能用户对主目录有写入权限,又能禁锢在主目录中,就需要在配置文件中再添加一个新的设置项“allow_writeable_chroot=YES”重新加载配置文件就可以是实现正常访问了。
如果我们只想来禁锢指定的用户,还可以永固配置chroot_list列表来禁锢部分指定的用户,在配置文件的102和104行有两个和chroot_list相关的设置项“chroot_list_enable=YES”表示启用chroot_list的功能;“chroot_list_file=/etc/vsftpd/chroot_list”表示指定列表文件,将这个两个配置项启用之后,只需要将需要禁锢的用户添加到列表文件中即可,同时在配置文件中我们还需要将“chroot_local_user”这项注释掉。
从安全上来看,一般建议启用将所有用户禁锢的设置项。
配置用户访问列表访问FTP服务:
默认设置情况下,FTP服务器中的所有系统用户都可以进行访问FTP服务,如果想只有指定的用户能访问,就可以设置访问用户列表,来限制是否能访问FTP服务
Vsftpd服务默认提供了两个访问用户列表的文件:/etc/vsftpd/ftpuser,/etc/vsftpd/user_list,两个文件中均包含有一份FTP用户的列表名单:
·/etc/vsftpd/ftpuser:这个文件是属于黑名单,里面包含的用户账号都将被禁止访问FTP服务,无论是否这个用户在另一个/etc/vsftpd/user_list文件中出现,一般是将“root”“bin”“daemon”等特殊用户放在这个文件中,禁止访问FTP。
·/etc/vsftpd/user_list:这个文件可以用作白名单,也可以用作黑名单,就是意味着这个文件里包含的用户既有可能被禁止登录,也有可能被允许登录,当然,我们一般是拿来做白名单,具体如何使用,需要修改配置文件/etc/vsftpd/vsftpd.conf中的“userlist_enable=YES”设置项,表示是否启用user_list这个文件,启用后,添加设置项“userlist_deny=YES”表示文件将作为黑名单使用;添加“userlist_deny=NO”表示将文件作为白名单使用,通常情况下都是作为白名单使用。
注意的是,当启用了用户列表后,即使将“anonymous_enable”设置项设为“YES”,也没法使用匿名用户访问FTP,匿名访问就被禁用了。
一般来说,使用本地系统用户登录访问FTP服务的话,相对应的shell是可以登陆系统的用户,这样的话就意味着有安全隐患,按理来说,应该是不能登陆系统的本地用户也可以访问FTP服务,/etc/shells这个文件中就包含了所支持的shell类型,所以将“/sbin/nologin”这个shell添加到这个文件中,就可以实现不能登陆系统的用户可以访问FTP服务。
能够访问FTP服务器的条件:·必须是存在于/etc/passwd文件中的用户;用户必须设置密码
/etc/vsftpd/vsftpd.conf中的“local_umask”设置项,用文件(666)或系统最高权(777)限减去umask值表示在系统中当前用户创建目录或文件的默认权限,所以这个设置项代表系统用户来上传或创建文件或目录的权限是什么