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

相关推荐
翼龙云_cloud17 小时前
阿里云渠道商:新手怎么操作阿里云无影云电脑?
运维·服务器·阿里云·云计算·电脑
拾忆,想起17 小时前
Dubbo服务调用流程全解析:从请求到响应的微服务通信之旅
服务器·网络·微服务·云原生·架构·dubbo
回忆是昨天里的海18 小时前
docker存储-目录挂载
运维·docker·容器
永不停歇的蜗牛18 小时前
Maven的POM文件相关标签作用
服务器·前端·maven
爱吃萝卜的美羊羊18 小时前
ubuntu下国内升级ollama
linux·运维·ubuntu
Erwin Rommel55918 小时前
nginx的https服务搭建实验
服务器·nginx·https
mzhan01718 小时前
Linux: console: printk: console_no_auto_verbose
linux·运维·服务器
用什么都重名18 小时前
Docker 镜像源配置指南
运维·docker·容器
河南博为智能科技有限公司19 小时前
高集成度国产八串口联网服务器:工业级多设备联网解决方案
大数据·运维·服务器·数据库·人工智能·物联网
Savvy..19 小时前
天机学堂-Day01
linux·服务器·网络