实验一:匿名用户的访问
1、匿名用户可以下载文件
[root@localhost pub]# systemct restart vsftpd
[root@localhost pub]# systemctl stop firewalld
[root@localhost pub]# setenforce 0
2、匿名用户可以上传文件
[root@localhost pub]# vim /etc/vsftpd/vsftpd.conf
anon_upload_enable=YES
anon_mkdir_write_enable=YES
[root@localhost pub]# systemctl restart vsftpd
匿名用户默认访问的服务器的目录是/var/ftp/,如果要实现匿名用户可以上传文件,要进行相关权限设置。例如:
[root@localhost ftp]# chmod o+w /var/ftp/pub/
注意:如果给/var/ftp/目录的其他人给了rwx的权限,那么服务器会强制要求你进行用户认证。
思考:匿名用户上传普通文件和目录文件之后的默认权限是多少?
如果想设置匿名用户上传文件的权限,需添加如下设置:
[root@localhost pub]# vim /etc/vsftpd/vsftpd.conf
anon_umask=022 添加该内容
注意:以上操作匿名用户可以上传文件,但是无法删除文件
3、匿名用户可以删除文件
[root@localhost pub]# vim /etc/vsftpd/vsftpd.conf
anon_other_write_enable=YES 添加该内容
实验二:本地用户(/etc/passwd)的访问
1、下载文件
[root@localhost pub]# vim /etc/vsftpd/vsftpd.conf
anonymous_enable=NO修改为NO,注释无效
默认登录后显示的信息是该用户的家目录的信息,但是该用户可以查看到根目录(需要使用ie浏览器)
2、上传、删除文件
[root@localhost pub]# vim /etc/vsftpd/vsftpd.conf
write_enable=YES 默认该选项已开启
>>测试:通过IE浏览器(其他浏览器可能看不到效果)访问ftp://ip,需要通过用户名密码进行登录(root用户无法成功),默认访问的界面是根目录下面的文件,可以通过本地用户上传文件和下载文件也可以删除文件。弊端是:通过本地用户的身份能看到/下的所有东西。
3、能否chroot
首先开启chroot选项
[root@localhost ftp]# vim /etc/vsftpd/vsftpd.conf
allow_writeable_chroot=YES (如果该字段未添加,chroot的三个重要文件去掉注释,则未写在chroot_list文件的用户无法登录)
chroot的三个重要控制文件
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
chroot_list_enable=YES | chroot_list_enable=NO | |
chroot_local_user=YES | 在/etc/vsftpd/chroot_list文件中列出的用户,可以切换到其他目录;未列出的用户被限制在自己的主目录内 | 所有的用户都无法切换到其他目录 |
chroot_local_user=NO | 在/etc/vsftpd/chroot_list文件中列出的用户被限制在自己的主目录内;未列出的用户可以切换到其他目录。 | 所有的用户都可以切换到其他目录(默认状态) |
实验三:虚拟用户的访问
创建一个用户,禁止该用户登录系统
[root@localhost ~]# useradd -s /sbin/nologin vhaha
添加以下三个选项
[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf
guest_enable=YES
guest_username=vhaha
virtual_use_local_privs=YES 本地虚拟用户特权开启表示和本地用户访问时的权限一样,如果为NO表示虚拟用户和匿名用户是相同的权限。
创建虚拟用户文件:
[root@localhost ~]# vim /etc/vsftpd/vhaha
xixi 用户名
redhat 密码
haha 用户名
redhat密码
将虚拟用户文件转换成数据库文件:
[root@localhost ~]# db_load -T -t hash -f /etc/vsftpd/vhaha /etc/vsftpd/vhaha.db
-T表示允许应用程序能够将文本文件转译载入进数据库
-t hash表示使用hash码加密
-f指定包含用户名和密码文本文件。此文件格式为:奇数行为用户名、偶数行为密码
修改PAM认证方式
编辑认证配置文件
[root@localhost vsftpd]# vim /etc/pam.d/vsftpd
注释所有内容 ,添加以下两行
auth required pam_userdb.so db=/etc/vsftpd/vhaha
account required pam_userdb.so db=/etc/vsftpd/vhaha
注:(.so动态链接数据库)数据库文件名的扩展名“.db”不用写