服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

Linux|Centos|Ubuntu|系统进程|Fedora|注册表|Bios|Solaris|Windows7|Windows10|Windows11|windows server|

服务器之家 - 服务器系统 - Centos - CentOS7 安装配置FTP服务器详解

CentOS7 安装配置FTP服务器详解

2023-06-25 10:06AquaMriusC Centos

CentOS7 安装配置FTP服务器详解 1、FTP简介 ftp(File Transfer Protocol文件传输协议)是基于TCP/IP 协议的应用层协议,用于文件的传输,包括ftp服务器(或服务端)和ftp客户端 ftp客户端与服务器创建网络连接,请求登录服务器,登录成功

CentOS7 安装配置FTP服务器详解

1、FTP简介

ftp(File Transfer Protocol文件传输协议)是基于TCP/IP 协议的应用层协议,用于文件的传输,包括ftp服务器(或服务端)和ftp客户端

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

2、关闭防火墙

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

[root@centos7 ~]# systemctl status firewalld.service        # 查看防火墙状态
[root@centos7 ~]# systemctl stop firewalld.service          # 停止防火墙服务
[root@centos7 ~]# systemctl disable firewalld.service       # 关闭防火墙开启自启动
# 把文件中的SELINUX=enforcing 改为SELINUX=disabled
[root@centos7 ~]# vim /etc/selinux/config          
[root@centos7 ~]# setenforce 0                              # 使修改马上生效

3、安装FTP软件包

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

查看是否已经安装了vsftpd

# 如果没有返回任何结果,表示没有安装;如果返回文件包名,这表示已经安装了该服务;
[root@centos7 ~]# rpm -qa|grep vsftpd
vsftpd-3.0.2-29.el7_9.x86_64               # 代表已安装
[root@centos7 ~]# vsftpd -version
vsftpd: version 3.0.2                      # 代表已安装
[root@centos7 ~]# rpm -e vsftpd            # 卸载vsftpd
# 再次检查
[root@centos7 ~]# rpm -qa|grep vsftpd
[root@centos7 ~]# vsftpd -version
bash: vsftpd: 未找到命令...

开始安装vsftpd

  • 安装ftp服务器
# 如果已经安装,再次执行yum就会把软件包升级到最新版本
[root@centos7 ~]# yum install -y vsftpd
  • 安装ftp客户端
[root@centos7 ~]# yum install -y ftp lftp
  • 设置为开机自动启动服务
[root@centos7 ~]# systemctl enable vsftpd.service 
  • 启动vsftpd服务
# ftp服务器的服务名是vsftpd,相关的操作如下:
[root@centos7 ~]# systemctl start  vsftpd.service      # 启动服务
systemctl stop  vsftpd.service        # 停止服务
systemctl restart vsftpd.service      # 重启服务
systemctl status vsftpd.service       # 查看服务状态
systemctl enable vsftpd.service       # 设置开机自启动vsftpd服务
systemctl disable vsftpd.service      # 禁用开机自启动vsftpd服务

4、新建用户和FTP目录

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

  • 新建FTP目录并授权
# 创建文件目录
mkdir -p /data/ftp/ftpuser
# 为该目录配置权限
chmod -R 755 /data/ftp/ftpuser

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

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

echo /usr/bin/nologin>>/etc/shells
  • 新建ftp组及用户
# 新建用户组ftp
groupadd ftp
# 指定用户主目录:/data/ftp/ftpuser -M
# 指定用户的shell: -s /usr/bin/nologin
# 新建用户ftpuser,并且设置不支持ssh系统登录,只能登录ftp服务器
# -g 用户组; -d 指定家目录; -s 不能登陆系统; -M 不创建家目录
useradd -g ftp -d /data/ftp/ftpuser -M -s /usr/bin/nologin ftpuser

==============================================================
# 如果要恢复ftpuser用户的ssh登录(可登入CentOS7系统),执行下面的语句即可
usermod -s /bin/bash ftpuser
  • 设置密码
# echo "新密码" | passwd --stdin 用户名
echo "ftppassword" | passwd --stdin ftpuser
  • 新建FTP用户可写目录
# 由于/data/ftp/ftpuser的用户是root,其它用户都没有写的权限
# 所以要在该目录下新建一个目录用于文件的上传下载
mkdir -p /data/ftp/ftpuser/upload
chown ftpuser:ftp /data/ftp/ftpuser/upload
chmod 755 /data/ftp/ftpuser/upload

5、配置ftp服务器

备份配置文件

# 防止后期配置文件出错后无法还原
[root@centos7 ~]# cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.backup
[root@centos7 ~]# cd /etc/vsftpd/
[root@centos7 ssh]# ll
......
-rw------- 1 root root 5116 610 2021 vsftpd.conf
-rw------- 1 root root 5116 815 22:05 vsftpd.conf.backup
......

编辑配置文件

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

vim /etc/vsftpd/user_list

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

CentOS7 安装配置FTP服务器详解

注意:

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

修改用户切换目录的权限

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

例如:

# 在chroot_list中添加新建用户ftpuser
# 第一步:打开文件
vim /etc/vsftpd/chroot_list
# 第二步:添加ftpuser用户
ftpuser
# 第三步:保存文件并退出

6、重启并配置防火墙

systemctl enable firewalld.service                           # 重启防火墙开机自启动
systemctl restart firewalld.service                          # 重启防火墙服务
firewall-cmd --version                                       # 查看防火墙版本
firewall-cmd --list-all       					             # 查看已开放的端口
firewall-cmd --permanent --zone=public --add-service=ftp     # 防火墙开通ftp服务
firewall-cmd --permanent --zone=public --add-port=21/tcp     # 开通ftp服务21命令控制端口
# 主动模式下数据传输端口等于命令控制端口-1 ======> 21 - 1 = 20
# 开通ftp服务主动模式的20数据传输端口
firewall-cmd --permanent --zone=public --add-port=20/tcp    
# 开通ftp服务被动模式的数据端口范围
firewall-cmd --permanent --zone=public --add-port=64000-65000/tcp 
firewall-cmd --reload                            # 刷新防火墙,重新载入
# 设置关闭SELinux对ftp的限制
setsebool -P ftpd_full_access on
sed -i s#enforcing#disabled#g /etc/sysconfig/selinux
setenforce 0 && getenforce
getenforce

7、重启FTP服务

systemctl restart vsftpd.service

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

8、访问测试

查看IP地址

ip addr

注意:

  • 云服务器的ip地址为公网ip地址
  • 虚拟机的ip地址为NAT模式下的固定ip地址,下图用的就是固定ip

CentOS7 安装配置FTP服务器详解

新建测试文件

# 进入之前设置好的路径
[root@centos7 ~]# cd /data/ftp/ftpuser/upload
# 新建测试文件,然后保存退出
[root@centos7 upload]# vim 测试_20220712.txt
[root@centos7 upload]#

浏览器访问测试

CentOS7 安装配置FTP服务器详解

终端访问测试

  • ftp命令
[root@centos7 ~]# 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.
[root@centos7 ~]#
  • lftp命令
# 格式:lftp 用户名:密码@ftp地址:传送端口(默认21)
[root@centos7 ~]# 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@centos7 ~]# 

参考网址:

CentOS7配置ftp服务

FTP上传和下载文件名称中文乱码问题

到此这篇关于CentOS7 安装配置FTP服务器详解的文章就介绍到这了,更多相关内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文地址:https://blog.csdn.net/weixin_45688268/article/details/126337169

延伸 · 阅读

精彩推荐
  • CentosCentOS6/7 专用破解版锐速一键安装脚本

    CentOS6/7 专用破解版锐速一键安装脚本

    Vultr 的所有机房都位于国外,当晚上上网高峰期来临时,在连接速度上会比较慢,所以我们有必要安装一些程序来加速连接速度。本次推荐安装的是站长一...

    白石头博客17902020-04-07
  • CentosCentos 6.5下安装配置VNC(tigervnc)服务的详细配置

    Centos 6.5下安装配置VNC(tigervnc)服务的详细配置

    这篇文章主要介绍了Centos 6.5下安装配置VNC(tigervnc)服务的详细配置,需要的朋友可以参考下...

    Centos之家5952019-05-29
  • CentosCentOS Ubuntu Debian三个linux的异同对比

    CentOS Ubuntu Debian三个linux的异同对比

    Linux有非常多的发行版本,从性质上划分,大体分为由商业公司维护的商业版本与由开源社区维护的免费发行版本;CentOS、Ubuntu、Debian三个linux都是非常优秀...

    服务器之家3682019-07-03
  • CentosCentos学习路线指南

    Centos学习路线指南

    Linux对于新人来说,Linux到底学了什么知识,到达了何种程度,一直是个困惑。今天小编就整理下Linux不同阶段对应的知识体系,即Linux的学习路线指南;一...

    服务器之家3122019-06-29
  • CentosCentOS下MySQL的彻底卸载的几种方法

    CentOS下MySQL的彻底卸载的几种方法

    本篇文章主要介绍了CentOS下MySQL的彻底卸载的几种方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧...

    Study Notes5372022-02-13
  • CentosCentos命令中nohup的用途的讲解

    Centos命令中nohup的用途的讲解

    今天小编为大家带来的是Centos命令中nohup的用途的讲解;希望对大家会有帮助;有需要的朋友可以过来看看 ...

    服务器之家6282019-07-01
  • Centos在国外主机上将Linux系统时间修改为北京时间的方法

    在国外主机上将Linux系统时间修改为北京时间的方法

    这篇文章主要介绍了在国外主机上将Linux系统时间修改为北京时间的方法,即为date命令的相关基本应用,需要的朋友可以参考下 ...

    moon's blog7072019-09-16
  • Centos在CentOS系统上安装Eclipse的教程

    在CentOS系统上安装Eclipse的教程

    这篇文章主要介绍了在CentOS系统上安装Eclipse的教程,Eclipse是被广大开发者熟知的拥有多种编程语言开发插件的IDE,需要的朋友可以参考下 ...

    开源中文社区5382019-09-17