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

相关推荐
R&L_201810013 分钟前
LINUX CPU 热点分析
linux
CodeYp201943 分钟前
第6讲:Ext 系列文件系统
linux·文件系统·ext
爱吃香菜的初学者1 小时前
十九.Linux——TCP协议(1)
linux·网络·tcp/ip
Rambo.Fan1 小时前
02 · 重建与修复手册(新服务器 playbook)
运维·服务器·django
Zevalin爱灰灰1 小时前
Linux入门第二部分(ARM裸机篇) 第三章 汇编LED驱动实验
linux·汇编·arm开发
李纲明1 小时前
WordPress 报建立数据库连接时出错:先核 wp-config 四元组,再查 MySQL 服务与表修复
运维·数据库·mysql·wordpress·排障·devdiy
EVEN-09131 小时前
Linux-IPC进程间通信
linux·运维·服务器
徐小黑ACG1 小时前
docker 基础教程
运维·docker·容器
多弗朗皮卡丘1 小时前
Linux 进程信号
linux·运维·服务器
^乘风破浪^1 小时前
Kali配置i3wm教程1
linux·kali·i3wm