CentOS7基础配置篇:

http://vincentcassano.cn/archives/centos7ji-chu-pei-zhi

理论部分

FTP介绍

FTP是什么?

FTP(File Transfer Protocol,文件传输协议)是一种应用层协议,用于在客户端和服务器之间通过 TCP/IP 网络进行文件的上传与下载。它是最古老、最常用的互联网文件传输协议之一。

简单来说:FTP 就是通过网络,把文件从一台机器传到另一台机器的工具和规则。

使用 FTP 的好处

  • 跨平台传输:几乎所有操作系统都支持 FTP,可以方便地在不同系统间交换文件。

  • 高效文件传输:支持大文件、批量文件传输,并提供断点续传功能。

  • 权限控制:通过账号和密码进行身份验证,支持不同用户的访问权限划分。

  • 广泛应用:常见于网站更新(上传网页文件)、企业内部文件分发与备份。

FTP的工作原理

  • FTP 使用 客户端-服务器架构,通过 TCP 传输数据,默认使用两个端口:

  • 21端口:命令端口,用于传输控制信息(如登录、文件操作指令)。

  • 20端口:数据端口,用于传输实际的文件数据。

FTP 有两种传输模式:

  • 主动模式(PORT):由服务器主动连接客户端数据端口传输文件。

  • 被动模式(PASV):由客户端主动连接服务器指定的端口传输文件(更适合防火墙环境)。

FTP 本身明文传输,存在安全隐患,因此出现了 FTPS(在 FTP 基础上加 SSL/TLS 加密)和 SFTP(基于 SSH 的安全文件传输协议)。

实践部分

一、基础环境

操作系统:CentOS7 + Windows10
支持平台:VMware17

NFS服务端:192.168.20.10 CentOS7
NFS客户端:192.168.20.11 Windows10

二、具体操作

基础配置

#修改本地源并挂载和网卡
vi /etc/yum.repos.d/CentOS-Base.repo

#进入配置文件后修改为以下配置
----
...... #注释不用管

[base]
name=CentOS-$releasever - Base
baseurl=file:///mnt
gpgcheck=0
----

#在VM软件右下角有个CD/DVD右键连接
mount /dev/cdrom /mnt

#关闭防火墙和安全模式
systemctl stop firewalld
setenforce 0

基础软件

vsftpd:Very Secure FTP Daemon,Linux 下常用的 FTP 服务端主程序,提供 FTP 文件传输服务,具备高安全性、稳定性和轻量化的特点。其核心守护进程负责处理客户端连接、身份验证、文件上传下载以及权限控制等功能。

vsftpd.conf配置文件解读:

# 允许匿名用户登录 (YES 表示允许, NO 表示禁止)
anonymous_enable=YES    # 允许匿名访问,一般生产环境建议 NO

# 允许本地用户登录 (使用系统账户)
local_enable=YES        # 系统用户可用 FTP 登录

# 允许写操作 (如上传、删除、改名)
write_enable=YES        # 开启写权限

# 本地用户默认 umask (权限掩码),默认 077,这里改为 022 (典型)
local_umask=022         # 上传文件的默认权限

# 是否允许匿名用户上传文件 (需要 write_enable=YES 且目录可写)
#anon_upload_enable=YES  # 一般不建议开启,风险大

# 是否允许匿名用户新建目录
#anon_mkdir_write_enable=YES

# 进入目录时显示消息 (如 .message 文件里的提示)
dirmessage_enable=YES   # 开启目录提示信息

# 开启上传/下载日志记录
xferlog_enable=YES      # 开启传输日志

# 强制 PORT 模式使用 20 端口传输数据
connect_from_port_20=YES

# 日志格式是否使用标准 xferlog 格式
xferlog_std_format=YES

# 空闲会话超时时间 (秒)
#idle_session_timeout=600  # 默认 600s

# 数据连接超时时间 (秒)
#data_connection_timeout=120

# 服务器监听模式 (listen=NO 表示不监听 IPv4 独立模式)
listen=NO               # 用 IPv6 模式时要关闭它

# IPv6 监听 (YES 表示开启)
listen_ipv6=YES         # 监听 IPv6 地址,同时兼容 IPv4

# PAM 验证服务名 (对应 /etc/pam.d/vsftpd)
pam_service_name=vsftpd

# 是否启用用户列表限制
userlist_enable=YES     # 开启用户列表功能 (黑名单/白名单)

# 是否启用 tcp_wrappers (基于 hosts.allow / hosts.deny 的访问控制)
tcp_wrappers=YES

操作:

# 启动vsftp服务
systemctl restart vsftpd

# 修改vsftp配置文件
vim /etc/vsftpd/vsftpd.conf
---------------
......
# Allow anonymous FTP? (Beware - allowed by default if you comment this out).
anonymous_enable=NO     //禁止匿名用户登录
...
chroot_local_user=YES   //所有本地用户都会被限制在自己的 home 目录下,不能切换到
chroot_list_enable=YES  //所有用户默认被锁在家目录
# (default follows)
chroot_list_file=/etc/vsftpd/chroot_list  //chroot_list中的用户例外,不锁死,可切换目录
......
userlist_enable=NO      //禁用用户列表功能
......
allow_writeable_chroot=YES  //强制允许用户在 可写的家目录 下使用 FTP
---------------

# 创建修改用户列表文件
vim /etc/vsftpd/chroot_list   #添加用户ftproot
vim /etc/vsftpd/user_list     #添加用户ftproot

# 创建用户并 指定目录和组,禁止此用户登录系统,设置用户密码
useradd -d /tmp/ftproot -g ftp -s /sbin/nologin ftproot
passwd ftproot

# 修改目录所有者和权限
cd /tmp/
chown ftproot:ftp ftproot
chmod 777 ftproot
ll

# 创建测试文件并重启服务
cd ftproot/
touch index.txt
systemctl restart vsftpd

---------------------------------------------
# Windows系统中挂载此目录
# 文件资源管理器 -> 添加网络位置

ftp://192.168.20.10