目录
一、匿名访问模式
1.1、ftp服务器端修改配置(配置文件:/etc/vsftpd/vsftpd.conf)
1.2 修改ftp目录的权限
1.3 设置selinux服务对ftp服务的访问规则策略为允许
1.4 防火墙添加ftp服务
1.5 测试
二、本地用户模式
2.1 服务端修改配置文件(配置文件:/etc/vsftpd/vsftpd.conf)
2.2、创建用户并且设置相应的密码
2.3 测试
三、虚拟用户模式
3.1、建立虚拟ftp用户数据库文件
3.2、创建ftp根目录及虚拟用户映射的系统用户。
3.3、建立支持虚拟用户的PAM认证文件
3.4、修改配置文件(/etc/vsftpd/vsftpd.conf)
3.5、为虚拟用户设置不同的权限
3.6、重启服务
3.7 测试
一、匿名访问模式
1.1、ftp服务器端修改配置(配置文件:/etc/vsftpd/vsftpd.conf)
修改完配置之后,需要重启服务。命令:systemctl restart vsftpd
#允许匿名访问模式
anonymous_enable=YES
#允许匿名用户上传文件
anon_upload_enable=YES
#允许匿名用户创建目录
anon_mkdir_write_enable=YES
#允许匿名用户修改目录名或删除目录
anon_other_write_enable=YES
1.2 修改ftp目录的权限
可以看到修改之前,匿名用户的ftp根目录所有者/组都是root,所以匿名用户没有写入权限。所以需要修改所有者的权限为ftp。
1.3 设置selinux服务对ftp服务的访问规则策略为允许
1.4 防火墙添加ftp服务
firewall-cmd --zone=public --add-service=ftp --permanent
firewall-cmd --reload
firewall-cmd --list-all
1.5 测试
在客户端测试,客户端不在服务端,用宁外一个虚拟机测试。
在服务端的/var/ftp/pub查看
二、本地用户模式
2.1 服务端修改配置文件(配置文件:/etc/vsftpd/vsftpd.conf)
修改完配置文件之后,需要重启服务。命令(systemctl restart vsftpd)
#禁止匿名用户访问模式
anonymous_enable=NO
#允许本地用户模式
local_enable=YES
#设置可写入权限
write_enable=YES
#本地用户模式创建文件的umask值
local_umask=022
#参数值为YES即禁止名单中的用户,参数值为NO则代表仅允许名单中的用户
userlist_deny=YES
#允许“禁止登录名单”,名单文件为ftpusers与user_list
userlist_enable=YES
2.2、创建用户并且设置相应的密码
useradd linuxprobe
passwd linuxprobe
2.3 测试
客户端测试(客户端创建的目录是在服务器的/home/linuxprobe下):
服务端测试
注意:因为我在匿名访问模式中配置了防火墙和selinux,所以,这里就没有再次配置了。如果没有的话,参照1.3和1.5配置防火墙和selinux。
三、虚拟用户模式
3.1、建立虚拟ftp用户数据库文件
[root@dns linuxprobe]# cd /etc/vsftpd/
[root@dns vsftpd]# ll
[root@dns vsftpd]# vim vuser.list
[root@dns vsftpd]# db_load -T -t hash -f vuser.list vuser.db #使用db_load命令使用HASH算法生成ftp用户数据库文件vuser.db。
[root@dns vsftpd]# file vuser.db #查看文件类型
[root@dns vsftpd]# chmod 600 vuser.db
[root@dns vsftpd]# rm -rf vuser.list
vuser.list:
3.2、创建ftp根目录及虚拟用户映射的系统用户。
[root@dns vsftpd]# useradd -d /var/ftproot -s /sbin/nologin virtual #创建virtual用户并指定家目录并设置为不允许登录系统。
[root@dns vsftpd]# ls -ld /var/ftproot/
[root@dns vsftpd]# chmod -Rf 755 /var/ftproot/
3.3、建立支持虚拟用户的PAM认证文件
[root@dns vsftpd]# vim /etc/pam.d/vsftpd.vu
3.4、修改配置文件(/etc/vsftpd/vsftpd.conf)
#禁止匿名开放模式
anonymous_enable=NO
#允许本地用户模式
local_enable=YES
#开启虚拟用户模式
guest_enable=YES
#指定虚拟用户账号
guest_username=virtual
#指定pam文件
pam_service_name=vsftpd.vu
#允许禁锢的ftp根目录可写而不拒绝用户登入请求
allow_writeable_chroot=YES
#指定用户独立的权限配置文件存放的目录
user_config_dir=/etc/vsftpd/vusers_dir
注意:字段不要重复了。就比如这里的pam_service_name=vsftpd.vu这个字段,原来的配置文件是有的,如果你在这里是重新写的,那么就需要把原本的注释掉或者删掉。
在最后第二排:
3.5、为虚拟用户设置不同的权限
[root@dns ~]# mkdir /etc/vsftpd/vusers_dir
[root@dns ~]# cd /etc/vsftpd/vusers_dir/
[root@dns vusers_dir]# touch linuxlinux
[root@dns vusers_dir]# vim linuxhaha
3.6、重启服务
systemctl restart vsftpd
3.7 测试
客户端测试:
服务端查看:
注意:因为我在匿名访问模式中配置了防火墙和selinux,所以,这里就没有再次配置了。如果没有的话,参照1.3和1.5配置防火墙和selinux。