准确--在 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 服务器应能正常运行并支持用户登录、上传下载及目录隔离功能。

相关推荐
KoiHeng2 小时前
操作系统简要知识
linux·笔记
Johny_Zhao6 小时前
Docker + CentOS 部署 Zookeeper 集群 + Kubernetes Operator 自动化运维方案
linux·网络安全·docker·信息安全·zookeeper·kubernetes·云计算·系统运维
小毛驴8506 小时前
Linux 后台启动java jar 程序 nohup java -jar
java·linux·jar
一心0927 小时前
ubuntu 20.04.6 sudo 源码包在线升级到1.9.17p1
运维·ubuntu·sudo·漏洞升级
好好学习啊天天向上7 小时前
世上最全:ubuntu 上及天河超算上源码编译llvm遇到的坑,cmake,ninja完整过程
linux·运维·ubuntu·自动性能优化
你想考研啊8 小时前
三、jenkins使用tomcat部署项目
运维·tomcat·jenkins
tan180°8 小时前
MySQL表的操作(3)
linux·数据库·c++·vscode·后端·mysql
代码老y9 小时前
Docker:容器化技术的基石与实践指南
运维·docker·容器
典学长编程9 小时前
Linux操作系统从入门到精通!第二天(命令行)
linux·运维·chrome
wuk9989 小时前
基于MATLAB编制的锂离子电池伪二维模型
linux·windows·github