在 CentOS 上搭建 FTP 服务器 并实现 多用户管理,常用方案是 vsftpd + 系统用户/虚拟用户。下面按“从简单到规范”给你讲三种常见做法。
yum install -y vsftpd
systemctl enable vsftpd
systemctl start vsftpd
useradd ftpuser1
passwd ftpuser1
useradd ftpuser2
passwd ftpuser2
默认这些用户也可以登录系统,若只做 FTP,可加:
useradd -s /sbin/nologin ftpuser1
mkdir -p /home/ftpuser1
chown ftpuser1:ftpuser1 /home/ftpuser1
编辑 /etc/vsftpd/vsftpd.conf
local_enable=YES
write_enable=YES
chroot_local_user=YES
allow_writeable_chroot=YES
重启:
systemctl restart vsftpd
✅ 每个用户登录后只能看到自己的目录
虚拟用户 不占用系统账号,更容易管理。
yum install -y vsftpd pam pam-devel db4-utils
vim /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/vsfts/vusers.db
vim /etc/pam.d/vsftpd.virtual
内容:
auth required pam_userdb.so db=/etc/vsftpd/vusers
account required pam_userdb.so db=/etc/vsftpd/vusers
useradd -d /home/ftproot -s /sbin/nologin vftp
mkdir -p /home/ftproot
chown vftp:vftp /home/ftproot
anonymous_enable=NO
local_enable=YES
write_enable=YES
guest_enable=YES
guest_username=vftp
pam_service_name=vsftpd.virtual
user_config_dir=/etc/vsftpd/user_conf
chroot_local_user=YES
allow_writeable_chroot=YES
mkdir -p /etc/vsftpd/user_conf
vim /etc/vsftpd/user_conf/user1
内容:
local_root=/data/ftp/user1
mkdir -p /data/ftp/user1
chown vftp:vftp /data/ftp/user1
write_enable=NO
local_max_rate=100000
tcp_wrappers=YES
在 /etc/hosts.allow 控制
firewall-cmd --add-service=ftp --permanent
firewall-cmd --reload
setsebool -P ftpd_full_access on
| 场景 | 推荐方案 |
|---|---|
| 内部少量用户 | 系统用户 |
| 多用户 / 对外 | 虚拟用户 |
| 高安全 | 虚拟用户 + chroot |
如果你愿意,我可以:
你现在是 CentOS 几?准备 对内还是对外 用?