下面按**最常见的 Linux FTP 服务端(vsftpd)**给你讲,其他服务(proftpd / pure-ftpd)思路类似。
FTP 权限 = Linux 系统用户权限 + FTP 服务配置限制
也就是说:
# CentOS / Rocky
yum install vsftpd -y
# Ubuntu / Debian
apt install vsftpd -y
不要用 root
useradd -m ftpuser
passwd ftpuser
指定家目录(可选):
usermod -d /data/ftp ftpuser
假设 FTP 根目录是 /data/ftp
chown -R ftpuser:ftpuser /data/ftp
chmod 755 /data/ftp
mkdir /data/ftp/upload
chmod 777 /data/ftp/upload
⚠️ 不要整个根目录 777,不安全
编辑:
vim /etc/vsftpd/vsftpd.conf
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
chroot_local_user=YES
allow_writeable_chroot=YES
userlist_enable=YES
userlist_deny=YES
在 /etc/vsftpd/user_list 里加用户名
如果你不想给系统真实用户:
db_load 建虚拟用户vftp)这个稍微复杂,需要我可以单独写一版。
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
systemctl restart vsftpd
systemctl enable vsftpd
| 问题 | 原因 |
|---|---|
| 530 Login incorrect | 用户被禁 / PAM 问题 |
| 550 Permission denied | 目录无写权限 |
| 500 OOPS chroot | 根目录有写权限但不允许 |
| 不能列目录 | PASV 端口未开 |
如果你告诉我:
我可以直接给你一份可用配置文件。