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

发布于:2024-11-28 ⋅ 阅读:(14) ⋅ 点赞:(0)

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

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


配置 FTP 服务器

1. 安装 vsftpd

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

sudo yum install vsftpd -y   # RHEL/CentOS 系列
sudo apt install vsftpd -y   # Debian/Ubuntu 系列

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


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

    sudo mkdir -p /ZG_data/shareddata/ftpdata   # 创建目录
    sudo chmod 755 /ZG_data/shareddata/ftpdata  # 设置目录权限
    

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

  2. 创建 FTP 用户

    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 文件:

sudo vi /etc/vsftpd/vsftpd.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. 添加用户到允许列表

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

    • 创建 chroot_list 文件:
      sudo touch /etc/vsftpd/chroot_list
      
    • 添加用户到隔离列表:
      echo "ftpzg" | sudo tee -a /etc/vsftpd/chroot_list
      
  3. 检查 PAM 配置文件
    打开 /etc/pam.d/vsftpd 文件:

    sudo vi /etc/pam.d/vsftpd
    

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

    # auth    required        pam_shells.so
    

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


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

    sudo systemctl restart vsftpd
    sudo systemctl enable vsftpd
    
  2. 检查服务状态

    sudo systemctl status vsftpd
    

    应显示 active (running) 状态。


验证 FTP 服务

1. 检查服务监听

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

ss -tuln | grep 59999

应显示类似以下内容:

tcp    LISTEN    0    128    :::59999   :::*

2. 本地登录测试

使用命令行测试 FTP 服务:

ftp 127.0.0.1 59999

输入用户名和密码:

Name (127.0.0.1:root): ftpzg
Password: XXXXXXXXX

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

  1. 上传文件
    put aaa.txt
    
  2. 下载文件
    get aaa.txt
    

3. 远程登录测试

在另一台主机上测试:

ftp 192.168.6.101 59999

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


4. 验证用户目录隔离

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

cd /etc

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


5. 检查日志文件

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

  1. vsftpd 日志
    sudo cat /var/log/vsftpd.log
    
  2. 系统日志
    sudo journalctl -u vsftpd
    

注意事项

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

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