在 Linux 上配置 FTP 权限,通常取决于你使用的 FTP 服务器软件。最常见的是 vsftpd,其次是 ProFTPD。下面我以 vsftpd 为主,给你一个从安装到权限配置的完整说明,并补充常见场景。
yum install -y vsftpd
apt update
apt install -y vsftpd
启动并设置开机自启:
systemctl start vsftpd
systemctl enable vsftpd
FTP 权限 = Linux 文件系统权限 + FTP 服务配置
主要控制点:
配置文件路径:
/etc/vsftpd/vsftpd.conf # CentOS
/etc/vsftpd.conf # Ubuntu
anonymous_enable=NO
local_enable=YES
write_enable=YES
chroot_local_user=YES
allow_writeable_chroot=YES
⚠️ 如果不加 allow_writeable_chroot=YES,用户家目录可写时会登录失败。
usermod -d /data/ftp user1
FTP 权限最终受 Linux 权限控制。
ftpuser 上传到 /data/ftpmkdir -p /data/ftp
useradd -d /data/ftp -s /sbin/nologin ftpuser
passwd ftpuser
chown ftpuser:ftpuser /data/ftp
chmod 755 /data/ftp
如果用户需要上传文件:
chmod 777 /data/ftp
# 或更安全
chown ftpuser:ftpuser /data/ftp
chmod 755 /data/ftp
userlist_enable=YES
userlist_file=/etc/vsftpd/user_list
userlist_deny=NO
在 /etc/vsftpd/user_list 中加入允许的用户:
ftpuser
查看状态:
getenforce
临时关闭(测试用):
setenforce 0
永久关闭(不推荐):
vi /etc/selinux/config
SELINUX=disabled
或允许 FTP:
setsebool -P ftp_home_dir on
setsebool -P allow_ftpd_full_access on
firewall-cmd --add-service=ftp --permanent
firewall-cmd --reload
pasv_enable=YES
pasv_min_port=30000
pasv_max_port=31000
防火墙放行端口:
firewall-cmd --add-port=30000-31000/tcp --permanent
firewall-cmd --reload
| 问题 | 原因 |
|---|---|
| 530 Login incorrect | 密码错误 / shell 被禁止 |
| 500 OOPS: chroot | 家目录权限不对 |
| 无法上传 | write_enable 未开 |
| 连接超时 | 防火墙 / 被动模式 |
useradd -d /data/ftp -s /sbin/nologin ftpuser
passwd ftpuser
chown ftpuser:ftpuser /data/ftp
local_enable=YES
write_enable=YES
chroot_local_user=YES
allow_writeable_chroot=YES
如果你愿意,我可以:
你可以直接贴出:
Linux 版本 + FTP 软件 + 报错信息