温馨提示×

centos ftpserver共享文件夹管理

小樊
36
2025-11-29 20:54:39
栏目: 智能运维

CentOS FTP 服务器共享文件夹管理

一 场景与方案选型

  • 常见需求包括:为多个用户提供一个可读写的公共目录、为每个用户隔离个人目录、仅开放只读的公共资料库、以及更安全的 SFTP 共享。下表给出常用方案与要点:
场景 推荐方案 关键要点
多用户公共目录(可读写) vsftpd + 共享组 + ACL 共享目录属主 root:共享组,权限 770;用户加入共享组;必要时用 ACL 给个别用户额外授权
用户个人目录隔离 vsftpd + chroot 启用 chroot 锁定用户到家目录;如需可写,使用 allow_writeable_chroot 或“可写子目录”方案
只读公共资料库 vsftpd 匿名或本地只读 匿名根目录设为只读共享目录;或本地用户只读策略
更安全的共享(SFTP) OpenSSH SFTP + chroot 使用组限制、目录 root 属主、权限 755、子目录授权上传,必要时 ForceCommand internal-sftp

上述做法在 CentOS 上均易落地,且便于权限审计与维护。

二 快速搭建 vsftpd 公共共享目录(本地用户)

  • 安装与启动
    • 安装:sudo yum install -y vsftpd
    • 开机自启并启动:sudo systemctl enable --now vsftpd
    • 检查端口:sudo ss -tlnp | grep :21
  • 创建共享目录与组
    • 目录:sudo mkdir -p /ftp/share
    • 组:sudo groupadd ftpgrp
    • 权限:sudo chown root:ftpgrp /ftp/share && sudo chmod 770 /ftp/share
  • 创建用户并加入共享组(禁止登录 shell,仅用于 FTP)
    • sudo useradd -d /ftp/share -s /sbin/nologin ftpuser1
    • sudo usermod -aG ftpgrp ftpuser1
    • 如需个人隔离目录:sudo mkdir -p /ftp/home/ftpuser1 && sudo chown ftpuser1:ftpuser1 /ftp/home/ftpuser1 && sudo chmod 700 /ftp/home/ftpuser1
  • 配置 vsftpd(/etc/vsftpd/vsftpd.conf)
    • 核心:
      • anonymous_enable=NO
      • local_enable=YES
      • write_enable=YES
      • local_umask=022
      • chroot_local_user=YES
      • allow_writeable_chroot=YES
      • listen=YES
    • 可选:启用用户名单
      • userlist_enable=YES
      • userlist_file=/etc/vsftpd/user_list
      • userlist_deny=NO(白名单模式)
  • 防火墙放行
    • 被动模式需放行 FTP 数据端口范围(示例 30000–31000):
      • sudo firewall-cmd --permanent --add-service=ftp
      • sudo firewall-cmd --permanent --add-port=30000-31000/tcp
      • sudo firewall-cmd --reload
  • 重启生效:sudo systemctl restart vsftpd
  • 客户端测试
    • 使用 FileZilla/命令行 ftp 连接,验证登录、列目录、上传/下载、公共目录写入与隔离目录不可越权访问。

三 权限与 SELinux 要点

  • 共享目录推荐“root 属主 + 共享组 + 770”,必要时用 ACL 精细化授权:
    • 例:sudo setfacl -m u:ftpuser2:rwx /ftp/share(仅给特定用户额外写权限)
  • SELinux(若启用)
    • 允许本地用户家目录访问:sudo setsebool -P ftp_home_dir on
    • 若自定义目录,修正类型:sudo chcon -Rt public_content_rw_t /ftp/share(只读共享可用 public_content_t)
  • chroot 可写性
    • 若 chroot 目录可写,vsftpd 需配置 allow_writeable_chroot=YES;更安全的做法是保持 chroot 目录只读,在内部为上传创建可写子目录(如 upload,权限 770 并归属相应用户/组)。

四 常见问题与排查

  • 无法启动 vsftpd
    • 检查端口占用:sudo ss -tlnp | grep :21;若被占用,释放或调整端口后重启服务。
  • 登录失败或被动模式不可用
    • 核对 /etc/vsftpd/vsftpd.conf 关键项(local_enable/write_enable、chroot 相关、listen);确保防火墙放行控制端口与被动端口范围。
  • 能登录但无法写入共享目录
    • 核对共享目录属主/属组与权限(root:ftpgrp,770),用户是否在 ftpgrp;若启用 SELinux,检查布尔值与上下文是否正确。
  • 用户被越权访问
    • 确认 chroot 生效且用户家目录不可向上遍历;公共目录避免给“其他用户”写权限;必要时用 ACL 精确授权。

五 SFTP 共享目录管理(更安全的替代)

  • 适用场景:需要更强的传输安全(加密通道)且以目录为边界进行隔离与授权。
  • 基本思路
    • 创建 sftp 组与共享目录:sudo groupadd sftpusers;sudo mkdir -p /sftp/share
    • 共享目录权限:sudo chown root:sftpusers /sftp/share && sudo chmod 755 /sftp/share
    • 可写子目录:sudo mkdir /sftp/share/upload && sudo chown ftpuser1:sftpusers /sftp/share/upload && sudo chmod 770 /sftp/share/upload
    • 配置 /etc/ssh/sshd_config(片段):
      • Match Group sftpusers
        • ChrootDirectory /sftp/%u
        • ForceCommand internal-sftp
        • AllowTcpForwarding no
        • X11Forwarding no
    • 重启 SSH:sudo systemctl restart sshd
  • 说明
    • 通过组限制与 chroot,用户登录后根即为各自目录;在共享目录内为需要协作的用户创建可写子目录并授权,实现“公共可写、个人隔离”。

0