如何在CentOS系统中为FTP服务新增一个用户?

在CentOS服务器上配置FTP服务并为特定业务或用户创建独立的FTP账户,是系统管理中一项常见且重要的任务,这不仅便于文件传输,还能通过权限隔离有效提升服务器的安全性,本文将详细介绍如何在CentOS系统中,通过主流的vsftpd(Very Secure FTP Daemon)服务,安全地新增一个FTP用户。

如何在CentOS系统中为FTP服务新增一个用户?

准备工作:安装与启动vsftpd

在新增用户之前,我们需要确保系统已经安装并正确运行了vsftpd服务。

检查vsftpd是否已安装,在终端中执行以下命令:

rpm -qa | grep vsftpd

如果没有任何输出,则表示未安装,对于CentOS 7及以下版本,使用yum安装;对于CentOS 8及以上版本,则使用dnf

# For CentOS 7
sudo yum install vsftpd
# For CentOS 8/9/Stream
sudo dnf install vsftpd

安装完成后,启动服务并设置其开机自启:

sudo systemctl start vsftpd
sudo systemctl enable vsftpd

配置防火墙以允许FTP流量,FTP使用20(数据端口)和21(控制端口)两个端口,为了支持被动模式,建议开放一个端口范围。

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

我们将在后续配置中指定这个被动模式的端口范围。

核心步骤:新增FTP专用用户

我们将创建一个专门用于FTP登录的用户,并对其进行安全限制。

创建系统用户

我们将创建一个名为ftpuser的示例用户,关键在于使用-s /sbin/nologin参数,这会禁止该用户通过SSH等方式登录服务器shell,仅允许FTP服务访问,从而增强安全性,使用-d参数为其指定一个专属的主目录。

如何在CentOS系统中为FTP服务新增一个用户?

sudo useradd -d /var/ftp/ftpuser -s /sbin/nologin ftpuser

这里,/var/ftp/ftpuser将是该用户登录后看到的根目录。

为用户设置密码

为新创建的用户设置一个强密码。

sudo passwd ftpuser

系统会提示您输入并确认新密码。

创建并配置用户主目录

如果指定的主目录不存在,需要手动创建,并设置正确的所有权和权限。

# 创建主目录
sudo mkdir -p /var/ftp/ftpuser
# 将目录所有者更改为新用户
sudo chown -R ftpuser:ftpuser /var/ftp/ftpuser
# 设置目录权限,确保用户有读写执行权限
sudo chmod 755 /var/ftp/ftpuser

优化配置:限制用户活动范围

默认情况下,FTP用户可能会浏览到其主目录之外的系统文件,这存在安全风险,我们需要通过修改vsftpd的配置文件,将用户“囚禁”在其主目录内。

编辑vsftpd的主配置文件:

sudo vi /etc/vsftpd/vsftpd.conf

确保以下配置项被正确设置或取消注释:

如何在CentOS系统中为FTP服务新增一个用户?

配置项 说明
anonymous_enable NO 禁止匿名用户登录
local_enable YES 允许本地用户登录
write_enable YES 允许用户上传文件
chroot_local_user YES 将所有本地用户限制在其主目录内
allow_writeable_chroot YES 允许在chroot环境下对主目录有写权限(重要)
pasv_min_port 30000 被动模式最小端口
pasv_max_port 31000 被动模式最大端口
userlist_enable YES 启用用户列表
userlist_file /etc/vsftpd/user_list 指定用户列表文件路径
userlist_deny NO 设置为NO,表示仅允许user_list中的用户登录

注意: allow_writeable_chroot=YES 是一个非常关键的配置,在高版本的vsftpd中,出于安全考虑,如果用户的根目录具有写权限,连接会被拒绝,添加此配置可以解决这个问题。

将我们创建的ftpuser添加到允许登录的用户列表中:

echo "ftpuser" | sudo tee -a /etc/vsftpd/user_list

所有配置完成后,重启vsftpd服务使更改生效:

sudo systemctl restart vsftpd

至此,一个名为ftpuser、被限制在/var/ftp/ftpuser目录内、无法通过SSH登录的FTP专用用户就已成功创建,您可以使用任何FTP客户端(如FileZilla)通过服务器的IP地址、用户名ftpuser及其密码进行连接测试。


相关问答FAQs

为什么FTP客户端连接后提示“530 Login incorrect”?
解答: 这个错误提示登录不正确,但原因可能多种多样,请确认您输入的用户名和密码完全无误,如果确认无误,请检查以下几点:

  1. 用户列表配置: 检查/etc/vsftpd/vsftpd.confuserlist_deny的值,如果设置为YES,则user_list文件中的用户是禁止登录的;如果设置为NO,则只有user_list中的用户才允许登录,确保您的用户在正确的“允许”或“禁止”列表中。
  2. SELinux限制: CentOS的SELinux安全模块可能会阻止FTP用户访问其主目录,可以临时关闭SELinux测试(setenforce 0),如果问题解决,则需要设置正确的SELinux布尔值,执行 sudo setsebool -P ftpd_full_access on 可以允许FTP服务完全访问用户目录。
  3. PAM模块问题: 检查/etc/pam.d/vsftpd文件,确保没有不合理的认证限制。

如何允许FTP用户上传文件到主目录,但禁止其删除文件?
解答: 这可以通过精细的目录权限控制来实现,标准的Linux权限(读、写、执行)无法直接区分“创建”和“删除”权限,因为它们都属于“写”权限,可以利用目录的“粘滞位”(Sticky Bit)来实现类似效果。

  1. 确保用户主目录的所有者是ftpuser,并且用户组也是ftpuser
    sudo chown ftpuser:ftpuser /var/ftp/ftpuser
  2. 给目录设置755775权限,并添加粘滞位。755意味着所有者有读写执行权限,组和其他用户只有读和执行权限。775则给组用户也增加了写权限,粘滞位用t表示。
    # 允许所有者上传,组内其他用户也可以上传,但所有人(包括所有者)都不能删除别人的文件
    sudo chmod 1775 /var/ftp/ftpuser

    设置了粘滞位后,目录中的任何文件(即使是ftpuser自己创建的)都只能被其所有者或root用户删除,这样,用户就可以自由上传文件,但无法删除目录中已存在的文件,除非他是该文件的所有者,这提供了一种更安全的共享目录模式。

【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!

(0)
热舞的头像热舞
上一篇 2025-10-26 23:49
下一篇 2025-10-27 00:01

相关推荐

  • 如何查看服务器的配置内存详细信息?

    在Windows系统中,可以通过”任务管理器”的”性能”标签页查看服务器配置内存;在Linux系统中,可以通过命令”free m”或查看”/proc/meminfo”文件来查看服务器配置内存。

    2024-08-01
    003
  • CentOS如何用ifconfig命令查看所有网络接口信息?

    在 Linux 系统管理中,了解和配置网络接口是一项基础且至关重要的技能,对于许多长期使用 Linux 的管理员而言,ifconfig 是一个耳熟能详的经典命令,在 CentOS 系统中,ifconfig 主要用于配置和显示网络接口的参数信息,尽管在现代 CentOS 版本中,它已逐渐被更强大的 ip 命令所取……

    2025-10-08
    004
  • CentOS如何用命令查看指定网卡的MTU值?

    在网络管理和故障排查中,最大传输单元是一个至关重要的网络参数,它定义了网络层能够传输的单个数据包的最大尺寸(以字节为单位),正确配置和理解MTU值对于优化网络性能、避免连接问题至关重要,在CentOS系统中,无论是服务器运维还是网络调试,查看和调整MTU值都是一项基本技能,本文将详细介绍在CentOS中查看MT……

    2025-10-04
    005
  • CentOS 7执行zip命令提示command not found怎么办?

    在 CentOS 7 服务器管理中,文件的压缩与解压是一项基础且至关重要的技能,无论是为了节省存储空间、快速传输文件,还是进行数据备份,zip 和 unzip 这两个工具都扮演着不可或缺的角色,它们以其跨平台兼容性和操作的简便性,成为了系统管理员和开发者的首选,本文将详细介绍在 CentOS 7 环境下如何安装……

    2025-10-20
    003

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

广告合作

QQ:14239236

在线咨询: QQ交谈

邮件:asy@cxas.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信