在 CentOS 上搭建 FTP 服务器(常用 vsftpd),权限设置主要涉及系统用户权限、vsftpd 配置、目录权限、SELinux、防火墙等方面。下面按常见场景说明。
yum install -y vsftpd
systemctl enable vsftpd
systemctl start vsftpd
用户就是 Linux 用户,权限由目录权限 + vsftpd 配置决定。
useradd ftpuser
passwd ftpuser
默认家目录:
/home/ftpuser
chown -R ftpuser:ftpuser /home/ftpuser
chmod 755 /home/ftpuser
✅ 用户只能访问自己的家目录(默认)
编辑:
vi /etc/vsftpd/vsftpd.conf
确保:
chroot_local_user=YES
allow_writeable_chroot=YES
重启:
systemctl restart vsftpd
⚠️ 不加 allow_writeable_chroot 可能登录失败
anonymous_enable=YES
/var/ftp
chown root:root /var/ftp
chmod 755 /var/ftp
anon_upload_enable=YES
anon_mkdir_write_enable=YES
目录需可写:
mkdir /var/ftp/pub
chown ftp:ftp /var/ftp/pub
chmod 777 /var/ftp/pub
write_enable=NO
write_enable=YES
CentOS 默认开启 SELinux,FTP 很容易受限制。
getenforce
setsebool -P ftp_home_dir on
setsebool -P allow_ftpd_anon_write on
setenforce 0
(生产环境不建议长期关闭)
firewall-cmd --permanent --add-service=ftp
firewall-cmd --reload
如用被动模式,还需:
pasv_min_port=30000
pasv_max_port=31000
防火墙放行:
firewall-cmd --permanent --add-port=30000-31000/tcp
firewall-cmd --reload
local_enable=YES
write_enable=YES
chroot_local_user=YES
allow_writeable_chroot=YES
chown ftpuser:ftpuser /home/ftpuser
chmod 755 /home/ftpuser
如果你能告诉我:
我可以给你一份针对性配置方案。