如何在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

相关推荐

  • CentOS 6.8 安装失败怎么办?常见问题及解决方法解析!

    CentOS 6.8 作为一款经典的企业级 Linux 发行版,在长期服务支持周期结束后,其软件包更新已基本停滞,导致用户在尝试安装新组件或依赖时频繁遇到“无法安装”的问题,本文将系统分析 CentOS 6.8 安装失败的核心原因及解决路径,帮助用户突破技术障碍,核心问题根源CentOS 6.8 于 2020……

    2025-10-22
    0014
  • 如何在福州找到专业的网站搭建服务?

    福州建网站服务提供专业的网站搭建解决方案,包括定制设计、功能开发和后期维护。我们致力于帮助客户创建具有吸引力和高效能的网站,以提升在线品牌形象和用户体验。

    2024-07-28
    0016
  • CentOS yum命令提示报错,到底是什么原因造成的?

    在CentOS系统的运维管理中,yum(Yellowdog Updater, Modified)作为其核心的软件包管理器,扮演着至关重要的角色,它负责安装、更新、删除和管理RPM软件包,并自动处理依赖关系,极大地简化了系统管理工作,在日常使用中,用户时常会遇到各种各样的yum错误提示,这些提示往往晦涩难懂,让初……

    2025-10-12
    0011
  • CentOS7出现10065错误连接被拒绝如何解决?

    在 CentOS 7 的使用和维护过程中,网络连接问题是系统管理员和开发者经常遇到的挑战之一,一个令人困惑的错误代码便是“10065”,虽然在 Windows 系统中这个错误代码(WSAECONNREFUSED)更为人熟知,但在跨平台应用或特定网络环境下,在 CentOS 7 上也可能遇到类似或直接报告的错误……

    2025-10-08
    0019

发表回复

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

广告合作

QQ:14239236

在线咨询: QQ交谈

邮件:asy@cxas.com

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

关注微信