Linux系统中管理FTP用户通常基于vsftpd服务实现,通过系统用户配合配置文件调整,就能完成用户的增删和权限设置,满足不同场景的文件传输需求。

环境准备
首先确认vsftpd服务已经安装并正常运行,若未安装可通过对应包管理器安装,以CentOS系统为例:
# 安装vsftpd yum install vsftpd -y # 启动服务并设置开机自启 systemctl start vsftpd systemctl enable vsftpd
添加FTP用户
1. 创建系统用户
FTP用户本质还是Linux系统用户,先创建对应的系统账户,同时可以指定用户的家目录作为FTP访问的根目录:
# 创建用户ftp_user1,指定家目录为/data/ftp/ftp_user1 useradd -d /data/ftp/ftp_user1 ftp_user1 # 设置用户密码 passwd ftp_user1
2. 限制用户仅能访问FTP
为了避免FTP用户登录系统终端,可将用户的shell设置为不可登录的shell:
usermod -s /sbin/nologin ftp_user1
3. 配置用户权限
vsftpd的用户权限配置主要通过主配置文件/etc/vsftpd/vsftpd.conf和用户自身的目录权限共同控制。
首先调整目录权限,设置用户对FTP根目录的读写权限:
# 修改目录所有者为ftp_user1 chown -R ftp_user1:ftp_user1 /data/ftp/ftp_user1 # 设置目录权限,仅所有者有读写执行权限 chmod 700 /data/ftp/ftp_user1
若需要让用户只能访问指定目录,不能切换到上级目录,需要在vsftpd.conf中开启chroot限制:
# 编辑vsftpd配置文件 vim /etc/vsftpd/vsftpd.conf # 添加或修改以下配置 chroot_local_user=YES allow_writeable_chroot=YES
修改完成后重启vsftpd服务生效:
systemctl restart vsftpd
4. 黑白名单配置
如果需要限制部分用户不能登录FTP,可以通过用户列表控制,在vsftpd.conf中配置:
# 启用用户列表控制 userlist_enable=YES # 指定用户列表文件 userlist_file=/etc/vsftpd/user_list # 若设置为YES,user_list中的用户禁止登录;设置为NO,仅允许user_list中的用户登录 userlist_deny=NO
将允许登录的FTP用户添加到/etc/vsftpd/user_list文件中即可。
删除FTP用户
删除FTP用户需要同时移除系统用户和相关目录,避免残留文件占用空间:
# 删除用户同时删除用户的家目录 userdel -r ftp_user1 # 若之前单独创建了FTP目录,也可手动删除 rm -rf /data/ftp/ftp_user1
如果之前将用户添加到了vsftpd的用户列表中,还需要从/etc/vsftpd/user_list中移除对应用户名。
权限配置注意事项
- 目录权限不要设置为777,过高的权限会带来安全风险,建议根据实际需求设置700或755。
- 开启chroot限制后,用户的FTP根目录不能有写权限,否则登录会报错,可在根目录下创建子目录给用户写入,比如创建
/data/ftp/ftp_user1/upload目录,设置该子目录可写。 - 如果FTP服务使用被动模式,需要在vsftpd.conf中配置被动端口范围,同时开放防火墙对应端口。
# 被动模式端口配置示例 pasv_enable=YES pasv_min_port=30000 pasv_max_port=30010