CentOS-7安装vsftpd服务器程序

查看本地是否以安装
[root@localhost ~]# rpm -qa |grep ftp
使用yum安装
[root@localhost ~]# yum install -y vsftpd

启动/停止vsftpd

//启动start,停止stop
[root@localhost ~]# systemctl start vsftpd

查看vsftpd状态

[root@localhost ~]# systemctl status vsftpd

设置vsftpd开机自动启动

[root@localhost ~]# systemctl enable vsftpd
//查看vsftpd是否为自启
[root@localhost ~]# systemctl is-enabled vsftpd

开启防火墙并允许访问vsftpdd

//通过指定服务名开放ftp服务,--permanent 表示设置永久
[root@localhost ~]# firewall-cmd --add-service=ftp --permanent
//重新加载以下防火墙
[root@localhost ~]# firewall-cmd --reload
//查看防火墙services开放的服务
[root@localhost ~]# firewall-cmd --list-services

可以通过ftp://+ip地址匿名访问了

在这里插入图片描述

允许匿名用户上传和重命名

查询vsftpd安装后生产的文件

[root@localhost ~]# rpm -ql vsftpd

修改/etc/vsftpd/vsftpd.conf

[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf 
去掉前面的 # 号

在这里插入图片描述

并且在anon_mkdir_write_enable=YES之前必须加上anon_other_write_enable=YES(这是个大坑)

在这里插入图片描述

给/var/ftp目录赋予-rwxr-xr-rwx-权限

[root@localhost ~]# chmod -R 757 /var/ftp/*

当前面这些配置好了,匿名用户还并不能对ftp目录进行操作,以下有两种解决方法,任选其一即可:

方法一,修改Selinux文件

[root@localhost ~]# vim /etc/selinux/config 

在这里插入图片描述

修改后必须重启Linux:
[root@localhost ~]# reboot 

在这里插入图片描述

方法二,ftp相关的SELinux规则

[root@localhost ~]# getsebool -a |grep ^ftp
ftp_home_dir --> off
ftpd_anon_write --> off
ftpd_connect_all_unreserved --> off
ftpd_connect_db --> off
ftpd_full_access --> on				//匿名用户要上传文件必须设置为on
ftpd_use_cifs --> off
ftpd_use_fusefs --> off
ftpd_use_nfs --> off
ftpd_use_passive_mode --> off
[root@localhost ~]# setsebool -P ftpd_full_access=on

现在匿名用户可以对ftp目录下文件进行操作了

在这里插入图片描述

重命名

在这里插入图片描述

限制用户切换到主目录外

执行命令vim /etc/vsftpd/vsftpd.conf,按照表5.2所示的要求修改配置选项,然后执行systemctl restart vsftpd重启服务器

表5.2 配置选项
参数作用
local_enable=YES允许本地用户模式
write_enable=YES设置本地用户可写入权限
chroot_list_enable=YES启用chroot_list_file设定的文件,限制指定的用户只能访问自己的主目录
chroot_list_file=/etc/vsftpd/chroot_list指定受chroot控制的用户列表文件
llow_writeable_chroot= YES如果用户被限定在其主目录下,且目录有写入权限时,必须添加此项,开启chroot环境下的主目录写入权限

设置SELinux

[root@localhost ~]# setsebool -P ftp_home_dir=on

创建/etc/vsftpd/chroot_list文件

[root@localhost ~]# useradd tester
[root@localhost ~]# passwd tester						//不设置密码无法登录
[root@localhost ~]# vim /etc/vsftpd/chroot_list			//添加锁定用户目录的账号
tester
:wq
[root@localhost ~]# systemctl restart vsftpd.service

测试本地用户

从Windows客户端,使用用户“tester”连接服务器,登录成功后,切换到/home失败,如果下图所示所示,操作被拒绝。

在这里插入图片描述

执行命令vim /etc/vsftpd/vsftpd.conf,将chroot_list_enable=YES配置项修改为chroot_list_enable= NO,执行systemctl restart vsftpd重启服务器。然后从Windows客户端,使用用户tester再次登录成功后,切换到/home可以成功

在这里插入图片描述

使用虚拟用户模式访问vsftpd

建立虚拟FTP用户数据库文件

[root@localhost ~]# vim /etc/vsftpd/vuser.list 			//创建用于生成用户数据库的原始帐号文件
xiaoming												//单数行为帐号,双数行为密码
123456
xiaohong
123456
:wq
[root@localhost ~]#
//使用db_load命令用HASH算法生成FTP用户数据库文件vuser.db,选项-T允许应用程序能够将文本文件转译载入进数据库
[root@localhost ~]# db_load -T -t hash -f /etc/vsftpd/vuser.list /etc/vsftpd/vuser.db	
//查看数据库文件的类型	
[root@localhost ~]# file /etc/vsftpd/vuser.db 
//缩小权限,加强安全
[root@localhost ~]# chmod  600  /etc/vsftpd/vuser.db
//初始帐号和密码文件
[root@localhost ~]# rm -rf /etc/vsftpd/vuser.list                                                                                                                                                                                                                                                                              

创建FTP根目录及虚拟用户映射的系统用户

[root@localhost ~]# useradd -d /var/ftproot -s /sbin/nologin virtual
//给予rwxr-xr-x权限,让其他用户可以访问
[root@localhost ~]# chmod  -Rf  755  /var/ftproot/
[root@localhost ~]#  ls  -ld   /var/ftproot/

建立支持虚拟用户的PAM认证文件

//参数db用于指向刚刚生成的vuser.db文件,但不要写后缀
[root@localhost ~]# vim   /etc/pam.d/vsftpd.vu
auth    required        pam_userdb.so   db=/etc/vsftpd/vuser
account required        pam_userdb.so   db=/etc/vsftpd/vuser
:wq

在vsftpd.conf文件中添加支持配置

既然要使用虚拟用户模式,而虚拟用户模式确实要比匿名访问模式更加的安全,配置的同时也关闭匿名开放模式。执行命令vim /etc/vsftpd/vsftpd.conf,按照下表所示的要求修改配置选项,然后执行systemctl restart vsftpd重启服务器
注意:在修改pam_service_name=vsftpd.vu时,一定要注意在vim /etc/vsftpd/vsftpd.conf的文件末尾直接修改值,不要自己创建。否则存在两个,会导致虚拟用户登录不上。
参数作用
anonymous_enable=NO禁止匿名开放模式
local_enable=YES允许本地用户模式
guest_enable=YES开启虚拟用户模式
guest_username=virtual指定虚拟用户帐号
pam_service_name=vsftpd.vu指定pam文件
allow_writeable_chroot=YES允许禁锢的FTP根目录可写而不拒绝用户登入请求

设置SELinux

[root@localhost ~]# setsebool  -P  ftpd_full_access=on
现在不论是xiaoming还是xiaohong帐户,他们的权限都是相同的——默认不能上传、创建、修改文件,如果希望用户xiaohong能够完全的管理FTP内的资料,就需要让FTP程序支持独立的用户权限配置文件了。

为虚拟用户设置不同的权限

//创建用户独立的权限配置文件存放的目录。
[root@localhost ~]#  mkdir /etc/vsftpd/vusers_dir/
//指定用户独立的权限配置文件存放的目录。
[root@localhost ~]#  vim  /etc/vsftpd/vsftpd.conf
user_config_dir=/etc/vsftpd/vusers_dir 			//添加该配置项。
//指定xiaoming用户的具体权限,这里为空。
[root@localhost ~]# touch  /etc/vsftpd/vusers_dir/xiaoming
//指定xiaohong用户的具体权限。
[root@localhost ~]#  vim  /etc/vsftpd/vusers_dir/xiaohong
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES

重启vsftpd服务,验证实验效果

确认填写正确后保存并退出vsftpd.conf文件,重启vsftpd程序并设置为开机后自动启用。
[root@localhost ~]# systemctl restart vsftpd
[root@localhost ~]# systemctl enable  vsftpd
如果重启vsftpd并没有看到报错,此时就可以尝试登入FTP服务了,这次使用Linux客户端,对两个虚拟用户分别验证。

在这里插入图片描述

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值