下面按常见场景给你讲一下 Linux 上 FTP 服务器(以 vsftpd 为例,最常用)的权限配置方法,包括用户隔离、目录权限、写权限、匿名权限等。
# CentOS / RHEL
yum install -y vsftpd
# Ubuntu / Debian
apt install -y vsftpd
启动并设置开机自启:
systemctl start vsftpd
systemctl enable vsftpd
适合 只读公开下载
使用 Linux 系统账号登录,权限 = Linux 文件权限
多个 FTP 账号,但不对应系统账号,更安全
配置文件位置:
/etc/vsftpd/vsftpd.conf
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
chroot_local_user=YES
allow_writeable_chroot=YES
重启:
systemctl restart vsftpd
✅ 用户只能访问 /home/用户名
✅ 有写权限(上传、删除)
FTP 权限 = vsftpd 配置 + Linux 目录权限
useradd ftpuser
passwd ftpuser
mkdir /home/ftpuser/upload
chown ftpuser:ftpuser /home/ftpuser/upload
chmod 755 /home/ftpuser
chmod 775 /home/ftpuser/upload
说明:
755:用户可读可执行775:组可写chroot_local_user=YES
如果用户需要写:
allow_writeable_chroot=YES
anonymous_enable=YES
anon_root=/var/ftp
anon_upload_enable=NO
anon_mkdir_write_enable=NO
只读匿名下载目录:
chown root:root /var/ftp
chmod 755 /var/ftp
vim /etc/vsftpd/vusers.txt
内容:
user1
password1
user2
password2
db_load -T -t hash -f /etc/vsftpd/vusers.txt /etc/vsftpd/vusers.db
vim /etc/pam.d/vsftpd
auth required pam_userdb.so db=/etc/vsftpd/vusers
account required pam_userdb.so db=/etc/vsftpd/vusers
guest_enable=YES
guest_username=ftp
virtual_use_local_privs=YES
user_config_dir=/etc/vsftpd/user_conf
write_enable=YESchmod / chownsetsebool -P ftpd_full_access on
firewall-cmd --add-service=ftp --permanent
firewall-cmd --reload
✅ 不使用匿名写
✅ 使用虚拟用户
✅ 启用 chroot
✅ 限制被动端口范围
✅ 配合 TLS(FTPS)
如果你愿意,可以告诉我:
我可以直接给你一套可用的完整配置。