温馨提示×

Linux FTP目录怎么设置

小樊
46
2026-07-06 04:36:09
栏目: 智能运维

在 Linux 上设置 FTP 目录,常见的是使用 vsftpd(最常用)。下面按实战步骤说明,包含目录权限、用户隔离、常见问题,你可以直接照着做。


一、安装 FTP 服务(vsftpd)

CentOS / Rocky / Alma

yum install -y vsftpd
systemctl enable vsftpd
systemctl start vsftpd

Ubuntu / Debian

apt update
apt install -y vsftpd
systemctl enable vsftpd
systemctl start vsftpd

二、创建 FTP 用户和目录(推荐方式)

1️⃣ 创建 FTP 用户

useradd -m ftpuser
passwd ftpuser

2️⃣ 创建 FTP 目录

mkdir -p /data/ftp
chown ftpuser:ftpuser /data/ftp
chmod 755 /data/ftp

✅ 推荐目录结构:

/data/ftp
├── upload
├── download

三、配置 vsftpd(核心)

配置文件路径:

/etc/vsftpd/vsftpd.conf   # CentOS
/etc/vsftpd.conf          # Ubuntu

常用配置(重点)

# 禁止匿名登录
anonymous_enable=NO

# 允许本地用户登录
local_enable=YES

# 允许上传
write_enable=YES

# 用户只能访问自己的目录(重要)
chroot_local_user=YES

# 允许写 chroot 目录(新版必须)
allow_writeable_chroot=YES

# 指定 FTP 根目录(可选)
local_root=/data/ftp

# 被动模式(云服务器必须)
pasv_enable=YES
pasv_min_port=30000
pasv_max_port=31000

修改后重启:

systemctl restart vsftpd

四、设置用户 FTP 根目录(两种方式)

✅ 方式一:统一目录(推荐)

local_root=/data/ftp

每个用户都进入这个目录。


✅ 方式二:每个用户不同目录(企业常用)

mkdir /data/ftp/user1
chown ftpuser:ftpuser /data/ftp/user1

在配置中:

user_sub_token=$USER
local_root=/data/ftp/$USER

五、目录权限注意事项(非常重要)

FTP 根目录不能有写权限

chmod 555 /data/ftp

上传目录要可写

mkdir /data/ftp/upload
chown ftpuser:ftpuser /data/ftp/upload
chmod 755 /data/ftp/upload

❌ 错误示例:

500 OOPS: vsftpd: refusing to run with writable root inside chroot()

六、防火墙 & SELinux

防火墙

# 开放 FTP
firewall-cmd --add-service=ftp --permanent
firewall-cmd --add-port=30000-31000/tcp --permanent
firewall-cmd --reload

SELinux(CentOS)

setsebool -P ftp_home_dir on
setsebool -P allow_ftpd_full_access on

七、测试 FTP

本地测试

ftp localhost

客户端

  • FileZilla
  • WinSCP
  • lftp

八、常见问题速查

问题 解决方法
无法登录 检查 local_enable=YES
不能上传 检查 write_enable=YES
500 OOPS 根目录权限过高
云服务器连不上 开启被动模式

九、如果你告诉我:

  • ✅ 是 云服务器还是本地
  • ✅ 用 vsftpd / pure-ftpd / proftpd
  • ✅ 是否 只允许特定目录
  • ✅ 是否 匿名访问

我可以给你 完全定制化的配置方案(含安全加固)。

0