准确--在 AlmaLinux 9.2 上快速搭建 FTP 服务器

FTP 服务器配置与验证完整步骤

以下内容是针对在 192.168.6.101 配置 FTP 服务器,端口为 59999 的完整详细操作步骤,包括配置与验证。每个步骤都附有详细注释。


配置 FTP 服务器

1. 安装 vsftpd

根据系统类型,执行以下命令安装 FTP 服务:

bash 复制代码
sudo yum install vsftpd -y   # RHEL/CentOS 系列
sudo apt install vsftpd -y   # Debian/Ubuntu 系列

注: 如果已安装可跳过此步骤。


2. 创建 FTP 目录与用户
  1. 创建存放 FTP 文件的目录

    bash 复制代码
    sudo mkdir -p /ZG_data/shareddata/ftpdata   # 创建目录
    sudo chmod 755 /ZG_data/shareddata/ftpdata  # 设置目录权限

    注: 目录权限为 755,确保用户可正常访问。

  2. 创建 FTP 用户

    bash 复制代码
    sudo useradd ftpzg -d /ZG_data/shareddata/ftpdata -s /sbin/nologin
    echo "XXXXXXX" | sudo passwd ftpzg --stdin
    • 用户名为 ftpzg
    • 主目录为 /ZG_data/shareddata/ftpdata
    • 禁用 Shell 登录功能,提升安全性。

3. 编辑配置文件

编辑 /etc/vsftpd/vsftpd.conf 文件:

bash 复制代码
sudo vi /etc/vsftpd/vsftpd.conf

将以下内容写入或替换原配置文件:

conf 复制代码
# 禁止匿名用户登录,确保安全
anonymous_enable=NO

# 允许本地用户登录
local_enable=YES

# 启用写权限,允许上传文件
write_enable=YES

# 设置本地用户的权限掩码为 002(775 权限)
local_umask=002

# 显示进入目录的欢迎信息
dirmessage_enable=YES

# 启用上传/下载日志
xferlog_enable=YES

# 禁止使用端口 20 进行主动模式传输
connect_from_port_20=NO

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

# 设置会话超时时间为 600 秒
idle_session_timeout=600

# 启用用户目录隔离
chroot_list_enable=YES

# 指定目录隔离列表文件路径
chroot_list_file=/etc/vsftpd/chroot_list

# 监听 IPv6,禁用 IPv4
listen=NO
listen_ipv6=YES

# PAM 认证模块
pam_service_name=vsftpd

# 启用用户列表功能
userlist_enable=YES
userlist_deny=NO  # 用户列表为允许模式

# 设置最大客户端连接数和每 IP 的最大连接数
max_clients=1000
max_per_ip=50

# 设置本地用户的根目录
local_root=/ZG_data/shareddata/ftpdata

# 允许用户在 chroot 环境中具有写权限
allow_writeable_chroot=YES

# 设置 FTP 服务器监听端口
listen_port=59999

# 启用被动模式,指定端口范围
pasv_enable=YES
pasv_min_port=60001
pasv_max_port=60999
pasv_promiscuous=YES  # 允许连接服务器之外的 IP

4. 配置用户访问权限
  1. 添加用户到允许列表

    bash 复制代码
    echo "ftpzg" | sudo tee -a /etc/vsftpd/user_list
  2. 配置用户目录隔离

    • 创建 chroot_list 文件:

      bash 复制代码
      sudo touch /etc/vsftpd/chroot_list
    • 添加用户到隔离列表:

      bash 复制代码
      echo "ftpzg" | sudo tee -a /etc/vsftpd/chroot_list
  3. 检查 PAM 配置文件

    打开 /etc/pam.d/vsftpd 文件:

    bash 复制代码
    sudo vi /etc/pam.d/vsftpd

    注释掉以下行(如果存在):

    conf 复制代码
    # auth    required        pam_shells.so

    注: 这会避免因用户的 /sbin/nologin 被拒绝登录 FTP。


5. 启动 vsftpd 服务
  1. 启动服务并设置开机自启

    bash 复制代码
    sudo systemctl restart vsftpd
    sudo systemctl enable vsftpd
  2. 检查服务状态

    bash 复制代码
    sudo systemctl status vsftpd

    应显示 active (running) 状态。


验证 FTP 服务

1. 检查服务监听

确保服务监听在正确的端口:

bash 复制代码
ss -tuln | grep 59999

应显示类似以下内容:

复制代码
tcp    LISTEN    0    128    :::59999   :::*

2. 本地登录测试

使用命令行测试 FTP 服务:

bash 复制代码
ftp 127.0.0.1 59999

输入用户名和密码:

复制代码
Name (127.0.0.1:root): ftpzg
Password: XXXXXXXXX

验证登录后可执行以下操作:

  1. 上传文件

    bash 复制代码
    put aaa.txt
  2. 下载文件

    bash 复制代码
    get aaa.txt

3. 远程登录测试

在另一台主机上测试:

bash 复制代码
ftp 192.168.6.101 59999

输入用户名 ftpzg 和密码 Hrbzg@0701,验证是否能登录并进行文件操作(上传、下载)。


4. 验证用户目录隔离

登录后尝试访问非用户目录:

bash 复制代码
cd /etc

应显示"权限被拒绝",验证用户仅可访问 /ZG_data/shareddata/ftpdata


5. 检查日志文件

如遇问题,可查看以下日志文件进行排查:

  1. vsftpd 日志

    bash 复制代码
    sudo cat /var/log/vsftpd.log
  2. 系统日志

    bash 复制代码
    sudo journalctl -u vsftpd

注意事项

  • 防火墙与 SELinux:已确认防火墙和 SELinux 均关闭,无需额外配置。
  • 端口验证:确保 59999 和被动模式端口范围(60001-60999)开放,便于连接。

通过上述步骤,FTP 服务器应能正常运行并支持用户登录、上传下载及目录隔离功能。

相关推荐
linux修理工9 分钟前
下载亚马逊Corretto 17的方法(OpenJDK 17发行版)
java·运维·服务器
gbling16 分钟前
网页多次重定向问题
运维·nginx
Xi-Xu17 分钟前
在云服务器上安全运行 OpenClaw:从安装到加固的完整指南
运维·服务器·人工智能·安全
孫治AllenSun38 分钟前
【Linux】配置服务自启动
linux·运维·服务器
小生不才yz1 小时前
【Makefile 专家之路 | 基础篇】03. 规矩方圆:书写规则详解(通配符、文件搜索与伪目标)
linux
Lueeee.1 小时前
Linux下的ULN2003驱动板与28BYJ-48步进电机驱动移植
linux·驱动开发
海特伟业1 小时前
隧道调频广播覆盖-隧道调频广播无线覆盖系统建设要点、难点分析与解决应对
运维·设计模式
中国IT2 小时前
第3章:Docker与传统虚拟化比较
运维·docker·容器
洛菡夕2 小时前
nginx核心功能
linux·nginx
九硕智慧建筑一体化厂家2 小时前
DDC:看似普通的存在,在楼宇自控系统中却主宰智能建筑高效运行?
大数据·运维·人工智能·网络协议·制造·设计规范