在 Debian 上,vsftpd(Very Secure FTP Daemon)的“鉴权”通常指用户如何登录 FTP,以及登录时校验什么凭据。下面按常见场景给你梳理一下。
vsftpd 默认使用 系统用户(PAM)鉴权,也就是:
配置文件通常在:
/etc/vsftpd.conf
关键配置:
local_enable=YES
write_enable=YES
然后创建系统用户:
useradd ftpuser
passwd ftpuser
登录方式:
ftp your_server_ip
# 输入 ftpuser / 密码
✅ 优点:简单、安全
❌ 缺点:用户有系统账号
如果你不想给 FTP 用户系统账号,用虚拟用户。
apt update
apt install vsftpd libpam-pwdfile
mkdir /etc/vsftpd
htpasswd -c /etc/vsftpd/vusers.db ftpuser
(没有 htpasswd 可装 apache2-utils)
编辑:
/etc/pam.d/vsftpd
清空后写入:
auth required pam_pwdfile.so pwdfile /etc/vsftpd/vusers.db
account required pam_permit.so
anonymous_enable=NO
local_enable=YES
guest_enable=YES
guest_username=ftp
virtual_use_local_privs=YES
pam_service_name=vsftpd
user_sub_token=$USER
local_root=/srv/ftp/$USER
创建目录:
mkdir -p /srv/ftp/ftpuser
chown -R ftp:ftp /srv/ftp/ftpuser
anonymous_enable=YES
anon_root=/srv/ftp/anon
匿名用户通常:
anonymous| 配置项 | 作用 |
|---|---|
local_enable |
是否允许系统用户 |
anonymous_enable |
是否允许匿名 |
guest_enable |
虚拟用户开关 |
pam_service_name |
指定 PAM 文件 |
virtual_use_local_privs |
虚拟用户权限 |
查看日志:
tail -f /var/log/vsftpd.log
# 或
journalctl -u vsftpd
常见错误:
如果你愿意,我可以:
直接把报错贴出来就行。