在 Ubuntu 服务器上搭建 FTP 服务(通常使用 vsftpd)时,目录权限的设置是至关重要的一环,配置不当不仅会导致用户无法访问文件,还可能引发严重的安全隐患(如目录被设置为 777 导致全服务器文件泄露)。
本文将详细介绍如何在 Ubuntu 系统中为 FTP 用户添加目录并正确设置权限,确保用户既能访问文件,又处于受控的安全范围内。
前置准备
确保您的系统已安装 vsftpd,如果没有安装,请运行以下命令:

sudo apt update sudo apt install vsftpd
创建 FTP 用户
为了安全起见,建议不要直接使用 root 用户进行 FTP 连接,我们需要创建一个专用的系统用户。
-
创建新用户(例如命名为
ftpuser):sudo adduser ftpuser
注意:在设置密码时,请务必输入强密码。
-
创建该用户的 FTP 根目录:
sudo mkdir -p /home/ftpuser/ftp_files
添加目录并设置权限
这是本文的核心部分,我们需要将目录的所有权赋予 FTP 用户,并设置正确的读取和写入权限。
递归更改所有权 (chown)
使用 -R 参数可以对目录及其内部所有文件递归地更改所有者。
sudo chown -R ftpuser:ftpuser /home/ftpuser/ftp_files
解释:将 /home/ftpuser/ftp_files 目录及其子目录和文件的所有权更改为用户 ftpuser 和组 ftpuser。
设置目录权限 (chmod)
权限通常使用数字表示:rwx(读、写、执行)分别对应 4、2、1。
-
目录权限 755:这是最标准的安全设置。
- 所有者:读写执行 (7)
- 组用户:读执行 (5)
- 其他用户:读执行 (5)
- 作用:允许用户浏览目录结构(执行权限),但不能随意修改文件内容,除非文件本身权限允许。
-
如果需要允许用户上传文件:您可能需要将上传目录的权限设置为 775。
-
sudo chmod -R 775 /home/ftpuser/ftp_files
-
-
如果需要允许所有用户上传:设置为 777(不推荐,除非是公共测试环境,因为会降低安全性)。
sudo chmod -R 755 /home/ftpuser/ftp_files
配置防火墙
确保 Ubuntu 的防火墙 (UFW) 允许 FTP 流量通过。
sudo ufw allow 20/tcp sudo ufw allow 21/tcp sudo ufw allow in 20:21/tcp to any port
处理 SELinux(常见问题)
Ubuntu 默认可能开启 SELinux,如果设置了正确的权限,用户仍然无法登录,很可能是 SELinux 阻止了访问,您可以检查状态:
sudo getenforce
如果输出为 Enforcing,您可以临时设置为宽容模式进行测试,或者使用 setsebool 命令允许 vsftpd 访问家目录:
sudo setsebool -P ftp_home_dir 1
测试连接
完成上述步骤后,使用 FTP 客户端(如

