温馨提示×

CentOS FTPServer如何设置用户

小樊
46
2026-08-19 01:34:00
栏目: 智能运维

CentOS 上配置 FTP 服务器(vsftpd)并设置用户,常见做法如下(以 vsftpd 为例,最常用、稳定)。


一、安装 vsftpd

yum install -y vsftpd

启动并设置开机自启:

systemctl start vsftpd
systemctl enable vsftpd

二、配置 vsftpd

编辑配置文件:

vim /etc/vsftpd/vsftpd.conf

1️⃣ 基础配置(推荐)

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

✅ 说明:

  • 禁止匿名登录
  • 允许本地用户登录
  • 限制用户只能访问自己的主目录(chroot)

三、创建 FTP 用户

方式一:普通系统用户(适合内部使用)

useradd ftpuser
passwd ftpuser

设置主目录(可选):

mkdir -p /home/ftpuser/ftp
chown -R ftpuser:ftpuser /home/ftpuser/ftp

方式二:虚拟用户(更安全,推荐生产环境)

1️⃣ 安装依赖

yum install -y db4-utils

2️⃣ 创建虚拟用户文件

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

3️⃣ 配置 PAM

vim /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 /home/ftpshare -s /sbin/nologin vftpuser
mkdir -p /home/ftpshare
chown vftpuser:vftpuser /home/ftpshare

5️⃣ 修改 vsftpd.conf(虚拟用户)

guest_enable=YES
guest_username=vftpuser
virtual_use_local_privs=YES
user_config_dir=/etc/vsftpd/user_conf

6️⃣ 为虚拟用户单独配置权限

mkdir /etc/vsftpd/user_conf
vim /etc/vsftpd/user_conf/ftpuser1

示例:

local_root=/home/ftpshare/ftpuser1
write_enable=YES

四、防火墙 & SELinux

防火墙

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

SELinux(常见坑)

setsebool -P ftp_home_dir on
setsebool -P allow_ftpd_full_access on

五、重启 vsftpd

systemctl restart vsftpd

六、测试 FTP

ftp localhost

或使用 FileZilla / WinSCP 连接。


七、常见问题

问题 解决
530 Login incorrect PAM 或密码错误
500 OOPS: chroot 目录权限问题
无法上传 write_enable / SELinux

如果你告诉我:

  • CentOS 7 还是 8/Stream
  • 是否必须虚拟用户
  • 是否要限制目录/限速

我可以给你一份 完全适配你环境的配置方案

0