在 CentOS 上配置 FTP 服务器(vsftpd)并设置用户,常见做法如下(以 vsftpd 为例,最常用、稳定)。
yum install -y vsftpd
启动并设置开机自启:
systemctl start vsftpd
systemctl enable vsftpd
编辑配置文件:
vim /etc/vsftpd/vsftpd.conf
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
chroot_local_user=YES
allow_writeable_chroot=YES
listen=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
✅ 说明:
useradd ftpuser
passwd ftpuser
设置主目录(可选):
mkdir -p /home/ftpuser/ftp
chown -R ftpuser:ftpuser /home/ftpuser/ftp
yum install -y db4-utils
vim /etc/vsftpd/vusers.txt
内容格式:
ftpuser1
123456
ftpuser2
654321
生成数据库:
db_load -T -t hash -f /etc/vsftpd/vusers.txt /etc/vsftpd/vusers.db
chmod 600 /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
useradd -d /home/ftpshare -s /sbin/nologin vftpuser
mkdir -p /home/ftpshare
chown vftpuser:vftpuser /home/ftpshare
guest_enable=YES
guest_username=vftpuser
virtual_use_local_privs=YES
user_config_dir=/etc/vsftpd/user_conf
mkdir /etc/vsftpd/user_conf
vim /etc/vsftpd/user_conf/ftpuser1
示例:
local_root=/home/ftpshare/ftpuser1
write_enable=YES
firewall-cmd --permanent --add-service=ftp
firewall-cmd --reload
setsebool -P ftp_home_dir on
setsebool -P allow_ftpd_full_access on
systemctl restart vsftpd
ftp localhost
或使用 FileZilla / WinSCP 连接。
| 问题 | 解决 |
|---|---|
| 530 Login incorrect | PAM 或密码错误 |
| 500 OOPS: chroot | 目录权限问题 |
| 无法上传 | write_enable / SELinux |
如果你告诉我:
我可以给你一份 完全适配你环境的配置方案。