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

相关推荐
jianchwa16 分钟前
3.10 内核 BUG_ON() at xfs_vm_writepage() -> page_buffers()
linux·运维·bug
zqzgng16 分钟前
怎样安装和启动Apache HTTP服务器(httpd)和PHP?
linux·运维·服务器
vvw&22 分钟前
如何在 Ubuntu 22.04 上安装 Metabase 数据可视化分析工具
linux·运维·服务器·ubuntu·信息可视化·数据可视化·metabase
网安CILLE1 小时前
2024下半年——【寒假】自学黑客计划(网络安全)
linux·网络·安全·web安全·网络安全·密码学·ddos
我是唐青枫1 小时前
Linux iptables 命令详解
linux·运维·网络
九河云2 小时前
AWS账户注册未完成会收费吗?
服务器·网络·云计算·aws
Mr.yuliu2 小时前
IT成长之路-ubuntu驱动篇
linux·服务器·ubuntu
咖猫2 小时前
linux bash shell http请求脚本
linux·http·bash
徐子元竟然被占了!!2 小时前
windows 服务器角色
服务器·windows