CentOS7 安装搭建FTP服务器

1、FTP简介

ftp客户端与服务器创建网络连接,请求登录服务器,登录成功后,就可以进行文件传输,主要包括下载文件和上传文件两种操作

2、关闭防火墙

为了避免一些不必要的麻烦,我们先关闭防火墙和selinux,等搭建成功之后再开启防火墙和相应的端口

[root@nsl ~]# systemctl status firewalld.service # 查看防火墙状态

[root@nsl ~]# systemctl stop firewalld.service # 停止防火墙服务

[root@nsl ~]# systemctl disable firewalld.service # 关闭防火墙开启自启动

把文件中的SELINUX=enforcing 改为SELINUX=disabled

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

[root@nsl ~]# setenforce 0 # 使修改马上生效

3、安装FTP软件包

在CentOS7中,采用yum来安装ftp软件包,包括ftp服务器和ftp客户端

查看是否已经安装了vsftpd

如果没有返回任何结果,表示没有安装;如果返回文件包名,这表示已经安装了该服务;

[root@nsl ~]# rpm -q vsftpd

vsftpd-3.0.2-29.el7_9.x86_64 # 代表已安装

[root@nsl ~]# vsftpd -v

vsftpd: version 3.0.2 # 代表已安装

[root@nsl ~]# rpm -e vsftpd # 卸载vsftpd

再次检查

[root@nsl ~]# rpm -qa|grep vsftpd

[root@nsl ~]# vsftpd -version

开始安装vsftpd

安装ftp服务器

如果已经安装,再次执行yum就会把软件包升级到最新版本

[root@nsl ~]# yum install -y vsftpd

安装ftp客户端

[root@nsl ~]# yum install -y ftp lftp

设置为开机自动启动服务

[root@nsl ~]# systemctl enable vsftpd.service

启动vsftpd服务

ftp服务器的服务名是vsftpd,想关操作如下:

[root@nsl ~]# systemctl start vsftpd.service # 启动服务

[root@nsl ~]# systemctl stop vsftpd.service # 停止服务

[root@nsl ~]# systemctl restart vsftpd.service # 重启服务

启动和停止及重启这三个命令输入正确后回车是不会有反馈的

[root@nsl ~]# systemctl status vsftpd.service # 查看服务状态

[root@nsl ~]# systemctl enable vsftpd.service # 设置开机自启动vsftpd服务

[root@nsl ~]# systemctl disable vsftpd.service # 禁用开机自启动vsftpd服务

4、新建用户和FTP目录

ftpuser是你为该ftp服务创建的用户名,/data/ftp/ftpuser为ftp服务器访问路径

新建FTP目录并授权

4.1、创建文件目录

[root@nsl ~]# mkdir -p /data/ftp/ftpuser

4.2、为该目录配置权限

[root@nsl ~]# chmod -R 755 /data/ftp/ftpuser

如果我们直接使用useradd -d ftpuser,则新建的用户是可以登录系统的,这样会给FTP服务器带来安全隐患。

因此我们为了不让FTP用户登录系统,就必须为FTP用户统一创建一个不能登录系统的shell,这一行的命令只运行一次即可,后面新建用户就不需要执行了。

[root@nsl ~]# echo /usr/bin/nologin>>/etc/shells

4.3、新建ftp组及用户

新建用户组ftp

groupadd ftp

指定用户主目录:/data/ftp/ftpuser -M

指定用户的shell: -s /usr/bin/nologin

新建用户ftpuser,并且设置不支持ssh系统登录,只能登录ftp服务器

-g 用户组; -d 指定家目录; -s 不能登陆系统; -M 不创建家目录

[root@nsl ~]# useradd -g ftp -d /data/ftp/ftpuser -M -s /usr/bin/nologin ftpuser

如果要恢复ftpuser用户的ssh登录(可登入CentOS7系统),执行下面的语句即可

[root@nsl ~]# usermod -s /bin/bash ftpuser

4.4、设置密码

echo "新密码" | passwd --stdin 用户名

[root@nsl ~]# echo "qwer123" | passwd --stdin ftpuser

4.5、新建FTP用户可写目录

由于/data/ftp/ftpuser的用户是root,其它用户都没有写的权限

所以要在该目录下新建一个目录用于文件的上传下载

[root@nsl ~]# mkdir -p /data/ftp/ftpuser/upload

[root@nsl ~]# chown ftpuser:ftp /data/ftp/ftpuser/upload

[root@nsl ~]# chmod 755 /data/ftp/ftpuser/upload

5、配置ftp服务器

5.1、备份配置文件

防止后期配置文件出错后无法还原,所有需要备份一下文件。

[root@nsl ~]# cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.backup

[root@nsl ~]# cd /etc/vsftpd/

[root@nsl vsftpd]# ll

5.2、编辑配置文件

[root@nsl vsftpd]# vim /etc/vsftpd/vsftpd.conf

打开vsftpd.conf文件,全选删除(Esc+gg+dG)文件内容,然后用下面的配置进行替换

是否开启匿名用户,匿名都不安全,默认NO

anonymous_enable=NO

允许本机账号登录FTP

这个设定值必须要为YES时,在/etc/passwd内的账号才能以实体用户的方式登入我们的vsftpd主机

local_enable=YES

允许账号都有写操作

write_enable=YES

本地用户创建文件或目录的掩码

意思是指:文件目录权限:777-022=755,文件权限:666-022=644

local_umask=022

进入某个目录的时候,是否在客户端提示一下

dirmessage_enable=YES

当设定为YES时,使用者上传与下载日志都会被记录起来

xferlog_enable=YES

日志成为std格式

xferlog_std_format=YES

上传与下载日志存放路径

xferlog_file=/var/log/xferlog

开放port模式的20端口的连接

connect_from_port_20=YES

关于系统安全的设定值:

ascii_download_enable=YES(NO)

如果设定为YES,那么client就可以使用ASCII格式下载档案

一般来说,由于启动了这个设定项目可能会导致DoS的攻击,因此预设是NO

ascii_upload_enable=YES(NO)

与上一个设定类似的,只是这个设定针对上传而言,预设是NO

ascii_upload_enable=NO

ascii_download_enable=NO

通过搭配能实现以下几种效果:

①当chroot_list_enable=YES,chroot_local_user=YES时,在/etc/vsftpd/chroot_list文件中列出的用户,可以切换到其他目录;未在文件中列出的用户,不能切换到其他目录

②当chroot_list_enable=YES,chroot_local_user=NO时,在/etc/vsftpd/chroot_list文件中列出的用户,不能切换到其他目录;未在文件中列出的用户,可以切换到其他目录

③当chroot_list_enable=NO,chroot_local_user=YES时,所有的用户均不能切换到其他目录

④当chroot_list_enable=NO,chroot_local_user=NO时,所有的用户均可以切换到其他目录

限制用户只能在自己的目录活动

chroot_local_user=YES

chroot_list_enable=NO

chroot_list_file=/etc/vsftpd/chroot_list

可以更改ftp的端口号,使用默认值21

listen_port=60021

监听ipv4端口,开了这个就说明vsftpd可以独立运行,不用依赖其他服务

listen=NO

监听ipv6端口

listen_ipv6=YES

打开主动模式

port_enable=YES

启动被动式联机(passivemode)

pasv_enable=YES

被动模式端口范围:注意:linux客户端默认使用被动模式,windows 客户端默认使用主动模式。在ftp客户端中执行"passive"来切换数据通道的模式。也可以使用"ftp -A ip"直接使用主动模式。主动模式、被动模式是有客户端来指定的

上面两个是与passive mode使用的port number有关,如果您想要使用64000到65000这1000个port来进行被动式资料的连接,可以这样设定

这两项定义了可以同时执行下载链接的数量

被动模式起始端口,0为随机分配

pasv_min_port=64000

被动模式结束端口,0为随机分配

pasv_max_port=65000

文件末尾添加

这个是pam模块的名称,我们放置在/etc/pam.d/vsftpd,认证用

pam_service_name=vsftpd

使用允许登录的名单,在/etc/vsftpd/user_list文件中添加新建的用户ftpuser

userlist_enable=YES

限制允许登录的名单,前提是userlist_enable=YES,其实这里有点怪,禁止访问名单在/etc/vsftpd/ftpusers

userlist_deny=NO

允许限制在自己的目录活动的用户拥有写权限

不添加下面这个会报错:500 OOPS: vsftpd: refusing to run with writable root inside chroot()

allow_writeable_chroot=YES

当然我们都习惯支持TCP Wrappers的啦

Tcp wrappers : Transmission Control Protocol (TCP) Wrappers 为由 inetd 生成的服务提供了增强的安全性

tcp_wrappers=YES

FTP访问目录

local_root=/data/ftp/ftpuser

允许新建用户登录FTP

[root@nsl vsftpd]# vim /etc/vsftpd/user_list

将新建用户ftpuser添加到/etc/vsftpd/user_list文件末尾

注意:

这个是允许登录ftp的名单,一行一个用户,不能把多个写到一行

修改用户切换目录的权限

用户切换目录的规则设定在/etc/vsftpd/vsftpd.conf文件中,如果有用户有权限切换目录,则在/etc/vsftpd/chroot_list文件中添加即可(一行一个用户)

例如:

在chroot_list中添加新建用户ftpuser

第一步:打开文件

[root@nsl ~]# vim /etc/vsftpd/chroot_list

第二步:添加ftpuser用户

[root@nsl ~]# ftpuser

第三步:保存文件并退出

6、重启并配置防火墙

[root@nsl ~]# systemctl enable firewalld.service # 重启防火墙开机自启动

[root@nsl ~]# systemctl restart firewalld.service # 重启防火墙服务

[root@nsl ~]# firewall-cmd --version # 查看防火墙版本

[root@nsl ~]# firewall-cmd --list-all # 查看已开放的端口

[root@nsl ~]# firewall-cmd --permanent --zone=public --add-service=ftp # 防火墙开通ftp服务

[root@nsl ~]# firewall-cmd --permanent --zone=public --add-port=21/tcp # 开通ftp服务21命令控制端口

主动模式下数据传输端口等于命令控制端口-1 ======> 21 - 1 = 20

开通ftp服务主动模式的20数据传输端口

[root@nsl ~]# firewall-cmd --permanent --zone=public --add-port=20/tcp

开通ftp服务被动模式的数据端口范围

[root@nsl ~]# firewall-cmd --permanent --zone=public --add-port=64000-65000/tcp

[root@nsl ~]# firewall-cmd --reload # 刷新防火墙,重新载入

设置关闭SELinux对ftp的限制

[root@nsl ~]# setsebool -P ftpd_full_access on

[root@nsl ~]# sed -i s#enforcing#disabled#g /etc/sysconfig/selinux

[root@nsl ~]# setenforce 0 && getenforce

[root@nsl ~]# getenforce

7、重启FTP服务

[root@nsl ~]# systemctl restart vsftpd.service

至此,FTP其实就已经搭建成功,可以登录了!

8、访问测试

查看IP地址

[root@nsl ~]# ip addr

注意:

云服务器的ip地址为公网ip地址

虚拟机的ip地址为NAT模式下的固定ip地址,下图用的就是固定ip

192.168.159.128/24是虚拟机的ipv4的ip地址

新建测试文件

进入之前设置好的路径

[root@nsl ~]# cd /data/ftp/ftpuser/upload

新建测试文件,然后保存退出

[root@nsl ~]# vim 测试_20220712.txt

[root@nsl ~]#

浏览器访问测试

9、ftp命令

[root@nsl ~]# ftp 192.168.10.110

Connected to 192.168.10.110 (192.168.10.110).

220 (vsFTPd 3.0.2)

Name (192.168.10.110:root): ftpuser

331 Please specify the password.

Password:

230 Login successful.

Remote system type is UNIX.

Using binary mode to transfer files.

ftp> ls

227 Entering Passive Mode (192,168,10,110,251,154).

150 Here comes the directory listing.

drwxr-xr-x 2 1002 50 4096 Aug 15 14:26 upload

226 Directory send OK.

ftp> cd upload

250 Directory successfully changed.

ftp> ls

227 Entering Passive Mode (192,168,10,110,250,171).

150 Here comes the directory listing.

-rw-r--r-- 1 0 0 12 Aug 15 14:26 测试_20220712.txt

226 Directory send OK.

ftp> exit

221 Goodbye.

10、lftp

lftp

格式:lftp 用户名:密码@ftp地址:传送端口(默认21)

[root@nsl ~]# lftp ftpuser:ftppassword@192.168.10.110:21

lftp ftpuser@192.168.10.110:~> ls

drwxr-xr-x 2 1002 50 4096 Aug 15 14:26 upload

lftp ftpuser@192.168.10.110:/> cd upload/

lftp ftpuser@192.168.10.110:/upload> ls

-rw-r--r-- 1 0 0 12 Aug 15 14:26 测试_20220712.txt

lftp ftpuser@192.168.10.110:/upload> exit

[root@nsl ~]#

注意window11使用窗体登录ftp服务,发现总是报错550,文件权限权限不够,解决办法是安装

lftp客户端就可以解决,大家有参考价值关注点赞一下,谢谢。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值