温馨提示×

centos vsftp如何设置用户

小樊
42
2026-10-02 19:37:08
栏目: 智能运维

在 CentOS 上配置 vsftpd(Very Secure FTP Daemon) 并设置用户,通常分为以下几个步骤。下面以 CentOS 7/8 为例,涵盖系统用户 FTP和虚拟用户 FTP两种常见方式。


一、安装 vsftpd

yum install -y vsftpd
# CentOS 8 可用
# dnf install -y vsftpd

启动并设置开机自启:

systemctl start vsftpd
systemctl enable vsftpd

二、使用系统用户(最简单)

1. 创建 FTP 用户

useradd ftpuser
passwd ftpuser

2. 设置用户家目录(可选)

usermod -d /data/ftp ftpuser

3. 修改 vsftpd 配置

编辑配置文件:

vi /etc/vsftpd/vsftpd.conf

关键配置:

anonymous_enable=NO
local_enable=YES
write_enable=YES
chroot_local_user=YES
allow_writeable_chroot=YES

4. 防火墙和 SELinux

防火墙:

firewall-cmd --permanent --add-service=ftp
firewall-cmd --reload

SELinux:

setsebool -P ftp_home_dir on

5. 重启 vsftpd

systemctl restart vsftpd

✅ 此时可用 ftpuser 登录 FTP


三、限制用户只能 FTP(不能登录系统)

usermod -s /sbin/nologin ftpuser

四、使用虚拟用户(更安全,推荐生产环境)

1. 安装依赖

yum install -y pam* db4*

2. 创建虚拟用户文件

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

3. 配置 PAM

vi /etc/pam.d/vsftpd

清空并写入:

auth required pam_userdb.so db=/etc/vsftpd/vusers
account required pam_userdb.so db=/etc/vsftpd/vusers

4. 创建虚拟用户映射系统用户

useradd -d /data/ftp -s /sbin/nologin vftp

5. 修改 vsftpd 配置

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

6. 为每个虚拟用户单独配置

mkdir /etc/vsftpd/user_conf
vi /etc/vsftpd/user_conf/user1

示例:

local_root=/data/ftp/user1
write_enable=YES

五、常见问题排查

FTP 无法登录

  • 检查 firewall-cmd --list-all
  • 检查 SELinux:getsebool -a | grep ftp
  • 查看日志:/var/log/secure

被动模式(PASV)

在 vsftpd.conf 中添加:

pasv_enable=YES
pasv_min_port=30000
pasv_max_port=31000

防火墙放行:

firewall-cmd --permanent --add-port=30000-31000/tcp
firewall-cmd --reload

如果你需要:

  • 只允许上传不允许删除
  • 多个用户不同目录
  • 结合 Nginx / SFTP

可以告诉我你的使用场景,我可以给你更精确的配置。

0 踩