在 Linux 下搭建 FTP Server(如 vsftpd) 时,权限设置通常包含 系统用户权限、目录权限、FTP 配置权限、SELinux/防火墙 几个方面。下面用最常见的 vsftpd 为例说明。
useradd -m ftpuser
passwd ftpuser
usermod -s /sbin/nologin ftpuser
FTP 权限本质是 Linux 文件权限
/var/ftp/upload
chown ftpuser:ftpuser /var/ftp/upload
chmod 755 /var/ftp
chmod 775 /var/ftp/upload
说明:
7 = 读+写+执行(目录的执行=进入)775 或 777(不推荐 777)⚠️ 注意:
FTP 用户对其主目录 不能有写权限(vsftpd 安全限制)
/home/ftpuser -> 755
/home/ftpuser/upload -> 775
编辑配置文件:
vim /etc/vsftpd/vsftpd.conf
local_enable=YES
write_enable=YES
chroot_local_user=YES
allow_writeable_chroot=YES
anonymous_enable=NO
userlist_enable=YES
userlist_deny=NO
userlist_file=/etc/vsftpd/user_list
查看状态:
getenforce
如果是 Enforcing,需设置:
setsebool -P ftpd_full_access on
setsebool -P ftp_home_dir on
目录打标签:
semanage fcontext -a -t public_content_rw_t "/var/ftp/upload(/.*)?"
restorecon -Rv /var/ftp/upload
firewall-cmd --add-service=ftp --permanent
firewall-cmd --reload
| 现象 | 原因 |
|---|---|
| 530 Login incorrect | 用户被禁 / shell 不对 |
| 550 Permission denied | 目录无写权限 |
| 500 OOPS chroot | 主目录有写权限 |
| 上传失败 | SELinux 未开 |
如果你用的是 ProFTPD / Pure-FTPd,或想做 虚拟用户 + 配额,可以告诉我,我给你对应方案。