ubuntu vsftp如何进行权限设置
小樊
38
2025-12-28 02:45:53
Ubuntu 上 vsftpd 权限设置实操指南
一 基础配置与最小权限
- 安装与备份
- 安装:sudo apt update && sudo apt install vsftpd
- 备份:sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.bak
- 核心配置项(/etc/vsftpd.conf)
- 身份与写权限
- anonymous_enable=NO(禁止匿名,提升安全)
- local_enable=YES(允许本地系统用户登录)
- write_enable=YES(允许上传/删除/改名)
- 本地掩码与默认权限
- local_umask=022(新建文件默认权限为644,目录为755)
- 目录隔离
- chroot_local_user=YES(将用户限制在其主目录)
- allow_writeable_chroot=YES(允许被 chroot 的根目录可写,避免 500 OOPS)
- 访问控制
- userlist_enable=YES
- userlist_file=/etc/vsftpd.user_list
- userlist_deny=NO(白名单模式:仅列表内用户可登录)
- 生效与验证
- 重启:sudo systemctl restart vsftpd
- 日志:/var/log/vsftpd.log(排错首选)
二 用户与目录权限落地
- 创建专用 FTP 用户(禁止 SSH 登录更安全)
- 新建:sudo adduser ftpuser
- 限制登录:sudo usermod -s /usr/sbin/nologin ftpuser
- 主目录权限(两种常见做法,二选一)
- 方案 A(简单):主目录可写
- sudo chown ftpuser:ftpuser /home/ftpuser
- sudo chmod 755 /home/ftpuser(若仍报 500 OOPS,确认已设置 allow_writeable_chroot=YES)
- 方案 B(更稳妥):主目录只读,专用上传目录可写
- sudo chmod 555 /home/ftpuser
- mkdir -p /home/ftpuser/uploads
- sudo chown ftpuser:ftpuser /home/ftpuser/uploads
- sudo chmod 775 /home/ftpuser/uploads
- 用户组协作(多人共享目录)
- sudo groupadd ftpgroup
- sudo usermod -aG ftpgroup ftpuser1
- sudo usermod -aG ftpgroup ftpuser2
- 共享目录示例:
- sudo mkdir /data/ftp
- sudo chown alice:ftpgroup /data/ftp
- sudo chmod 775 /data/ftp(组内成员可读写,其他只读)
三 访问控制与白名单
- 白名单配置(推荐)
- 在 /etc/vsftpd.user_list 中逐行写入允许登录的用户名
- 配置:userlist_enable=YES,userlist_file=/etc/vsftpd.user_list,userlist_deny=NO
- 黑名单配置(可选)
- 将 userlist_deny=YES,列表内用户将被拒绝
- 说明
- 若同时启用 /etc/ftpusers(禁止登录名单),该文件中的用户将被拒绝,优先级通常高于 user_list(取决于具体 PAM/配置)
四 被动模式与防火墙
- vsftpd 被动模式端口
- 配置:pasv_enable=YES
- 建议固定端口段(便于放行):pasv_min_port=1024,pasv_max_port=1048
- UFW 放行示例
- 命令:
- sudo ufw allow 21/tcp
- sudo ufw allow 1024:1048/tcp
- sudo ufw reload
- 云厂商安全组
- 同样需要放行 21/tcp 与所选的被动端口段(如 1024–1048)
五 加密传输与常见问题
- 启用 SSL/TLS(FTPS)
- 配置:ssl_enable=YES
- 建议准备证书(如自签或 Let’s Encrypt),并在配置中指定 rsa_cert_file 与 rsa_private_key_file
- 客户端使用 FTP over TLS 模式连接(如 FileZilla)
- 常见问题速解
- 500 OOPS: refusing to run with writable root inside chroot
- 方案 1:添加 allow_writeable_chroot=YES
- 方案 2:将主目录设为 555,并为上传创建可写子目录(如 uploads)
- 登录被拒或无权限
- 检查 /var/log/vsftpd.log、白名单/黑名单、目录属主与权限(特别是 chroot 目录与上传目录)
- 被动模式连不上
- 核对 pasv_min_port/pasv_max_port 与防火墙/安全组是否放行一致
- 安全提示
- FTP 明文传输,在公网建议使用 SFTP/FTPS;必要时限制可登录用户与可写目录,定期审计日志