温馨提示×

FileZilla在Ubuntu上如何限制访问权限

小樊
43
2025-12-18 05:37:13
栏目: 智能运维

在 Ubuntu 上限制 FileZilla 的访问权限

一、先明确限制对象与协议

  • FileZilla 是客户端,真正的“权限”由服务器决定。常见服务器有两类:
    • vsftpd(FTP/FTPS):通过系统用户、目录权限与 chroot 控制访问。
    • OpenSSH/SFTP:通过系统用户、用户组与文件系统权限控制访问。
  • 客户端侧建议:仅保存站点、启用TLS/SSLSFTP、必要时使用受限系统账号仅读权限连接,避免以 root 直连。

二、使用 vsftpd 时的权限限制(FTP/FTPS)

  • 安装与基础安全
    • 安装:sudo apt update && sudo apt install vsftpd
    • 建议:禁止匿名、仅允许本地用户、按需开启写入
      • 配置示例(/etc/vsftpd.conf):
        • anonymous_enable=NO
        • local_enable=YES
        • write_enable=NO(只读场景;需要上传再改为 YES)
        • xferlog_enable=YESconnect_from_port_20=YES
  • 将用户限制在其主目录(chroot)
    • 方案A(全局限制):
      • chroot_local_user=YES
      • 为规避 vsftpd 的“可写根目录”安全检查,使用:allow_writeable_chroot=YES
    • 方案B(白名单/黑名单):
      • chroot_list_enable=YES
      • chroot_list_file=/etc/vsftpd.chroot_list
      • /etc/vsftpd.chroot_list 中逐行写入需要限制的用户名
  • 目录权限与所有权
    • 典型只读主目录:sudo chown ftpuser:ftpuser /home/ftpuser && sudo chmod 755 /home/ftpuser
    • 需要上传时再放宽到 775/700(谨慎授予组与其他人写权限)
  • 重启与验证
    • sudo systemctl restart vsftpd && sudo systemctl status vsftpd
    • 客户端用 FileZilla 连接,协议选 FTP - Explicit TLS,验证仅能访问指定目录。

三、使用 OpenSSH/SFTP 时的权限限制(推荐更安全的方案)

  • 准备系统用户与目录
    • 新建只读用户:sudo adduser --shell /usr/sbin/nologin --home /srv/ftp/readonly ftpuser
    • 只读共享目录:sudo mkdir -p /srv/ftp/readonly && sudo chown ftpuser:ftpuser /srv/ftp/readonly && sudo chmod 755 /srv/ftp/readonly
  • 按需细化权限
    • 只读:chmod 755 /srv/ftp/readonly,文件 644
    • 可写:chmod 775 /srv/ftp/readonly,必要时将用户加入同组并设 setgid 保持子目录属组一致
  • 客户端连接
    • FileZilla 站点管理:协议选 SFTP,主机填服务器 IP,登录类型选“正常”,用户填 ftpuser,密码或密钥登录
    • 由于 SFTP 基于 SSH,系统层面的用户、组与目录权限即最终权限边界

四、按用户或网段进一步限制

  • 仅允许特定用户登录
    • vsftpd:userlist_enable=YESuserlist_deny=NOuserlist_file=/etc/vsftpd.user_list,在列表中写入允许的用户
  • 仅允许特定 IP 访问
    • 启用 TCP Wrappers:sudo nano /etc/hosts.allow 写入 vsftpd: 192.168.1.0/24 203.0.113.10
    • /etc/hosts.deny 写入 vsftpd: ALL
  • 防火墙与被动端口(FTP)
    • 放行控制端口:sudo ufw allow 21/tcp
    • 若启用被动模式,配置端口范围(如 50000–50009)并放行:sudo ufw allow 50000:50009/tcp
    • 注意:SFTP 使用 22/TCP,无需额外数据端口范围。

五、常见问题与排错要点

  • 出现 “500 OOPS: vsftpd: refusing to run with writable root inside chroot()”
    • 在启用 chroot_local_user=YES 时,添加 allow_writeable_chroot=YES,或将用户根目录设为不可写(更推荐做法:根目录只读,给用户一个可写的子目录,如 upload/,权限 775/755 视需求设置)。
  • 登录后目录为空或无法列目录
    • 检查用户家目录与共享目录的所有者/权限SELinux/AppArmor上下文;确保目录对 FTP 用户可读(列目录)或可写(上传)。
  • 被动模式连接失败
    • 确认服务器防火墙与云安全组已放行 21/TCP 与被动端口范围;客户端在站点设置里启用被动模式。

0