在 CentOS 上配置 vsftpd(Very Secure FTP Daemon) 并设置用户,通常分为以下几个步骤。下面以 CentOS 7/8 为例,涵盖系统用户 FTP和虚拟用户 FTP两种常见方式。
yum install -y vsftpd
# CentOS 8 可用
# dnf install -y vsftpd
启动并设置开机自启:
systemctl start vsftpd
systemctl enable vsftpd
useradd ftpuser
passwd ftpuser
usermod -d /data/ftp ftpuser
编辑配置文件:
vi /etc/vsftpd/vsftpd.conf
关键配置:
anonymous_enable=NO
local_enable=YES
write_enable=YES
chroot_local_user=YES
allow_writeable_chroot=YES
防火墙:
firewall-cmd --permanent --add-service=ftp
firewall-cmd --reload
SELinux:
setsebool -P ftp_home_dir on
systemctl restart vsftpd
✅ 此时可用 ftpuser 登录 FTP
usermod -s /sbin/nologin ftpuser
yum install -y pam* db4*
vi /etc/vsftpd/vusers.txt
内容:
user1
123456
user2
654321
生成数据库:
db_load -T -t hash -f /etc/vsftpd/vusers.txt /etc/vsftpd/vusers.db
chmod 600 /etc/vsftpd/vusers.db
vi /etc/pam.d/vsftpd
清空并写入:
auth required pam_userdb.so db=/etc/vsftpd/vusers
account required pam_userdb.so db=/etc/vsftpd/vusers
useradd -d /data/ftp -s /sbin/nologin vftp
anonymous_enable=NO
local_enable=YES
write_enable=YES
guest_enable=YES
guest_username=vftp
pam_service_name=vsftpd
user_config_dir=/etc/vsftpd/user_conf
chroot_local_user=YES
allow_writeable_chroot=YES
mkdir /etc/vsftpd/user_conf
vi /etc/vsftpd/user_conf/user1
示例:
local_root=/data/ftp/user1
write_enable=YES
firewall-cmd --list-allgetsebool -a | grep ftp/var/log/secure在 vsftpd.conf 中添加:
pasv_enable=YES
pasv_min_port=30000
pasv_max_port=31000
防火墙放行:
firewall-cmd --permanent --add-port=30000-31000/tcp
firewall-cmd --reload
如果你需要:
可以告诉我你的使用场景,我可以给你更精确的配置。