Linux系统如何添加FTP用户并配置其访问权限与登录目录?

在Linux系统中添加FTP用户通常涉及安装FTP服务、创建用户、配置权限及优化安全设置等步骤,以下以常用的vsftpd(Very Secure FTP Daemon)为例,详细讲解完整流程。

linux如何添加ftp用户

安装FTP服务(vsftpd)

vsftpd是Linux下安全性较高的FTP服务器软件,首先需根据系统发行版选择安装命令。

  • Ubuntu/Debian系统
    更新软件列表后安装:

    sudo apt update && sudo apt install vsftpd -y
  • CentOS/RHEL系统
    使用yum或dnf安装:

    sudo yum install vsftpd -y  # CentOS 7及以下
    # 或
    sudo dnf install vsftpd -y  # CentOS 8/RHEL 8+

    安装完成后,检查服务状态:

    sudo systemctl status vsftpd  # 应显示“active (running)”

创建FTP专用用户

为避免FTP用户直接登录系统,需创建独立的系统用户,并限制其shell权限

创建用户并设置家目录

假设添加FTP用户名为ftpuser,家目录/home/ftpuser,禁止其登录系统shell:

sudo useradd -m -d /home/ftpuser -s /sbin/nologin ftpuser

参数说明:

  • -m:自动创建家目录(若不存在);
  • -d /home/ftpuser:指定用户家目录(FTP默认访问路径);
  • -s /sbin/nologin:禁止用户通过SSH等方式登录系统,提升安全性。

设置用户密码

ftpuser设置登录密码:

sudo passwd ftpuser

根据提示输入两次密码,确保密码复杂度(包含大小写、数字、特殊字符)。

配置用户目录权限

FTP用户需对家目录有读写权限,但需限制系统级访问。

linux如何添加ftp用户

设置目录所有者

确保家目录所有者为ftpuser

sudo chown -R ftpuser:ftpuser /home/ftpuser

设置目录权限

sudo chmod -R 755 /home/ftpuser  # 所有者可读写执行,其他用户可读执行

若需允许用户上传文件,可单独创建上传目录并设置权限:

sudo mkdir /home/ftpuser/upload
sudo chown -R ftpuser:ftpuser /home/ftpuser/upload
sudo chmod -R 777 /home/ftpuser/upload  # 上传目录需开放写权限(生产环境建议755+所有者权限)

配置vsftpd服务

核心配置文件为/etc/vsftpd/vsftpd.conf,需根据需求修改关键参数。

备份原配置文件

sudo cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak

编辑配置文件

使用vimnano打开配置文件:

sudo vim /etc/vsftpd/vsftpd.conf

取消注释或修改以下参数:

参数 说明
anonymous_enable NO 禁止匿名登录(默认开启,需手动关闭)
local_enable YES 允许本地用户登录
write_enable YES 允许用户上传、修改文件
chroot_local_user YES 限制用户仅能访问家目录(防止越权)
allow_writeable_chroot YES 允许被限制在家目录的用户写文件(需配合chroot_local_user
user_sub_token $USER 动态匹配用户名
local_root /home/$USER 设置用户家目录为FTP根目录
pasv_min_port 10000 被动模式最小端口(避免端口冲突)
pasv_max_port 10100 被动模式最大端口
listen YES 监听IPv4地址
listen_ipv6 NO 禁用IPv6监听(若无需IPv6支持)

创建用户配置目录(可选)

若需为不同用户设置独立权限(如限制访问目录),可创建用户配置文件目录:

sudo mkdir /etc/vsftpd/user_conf

ftpuser创建单独配置文件/etc/vsftpd/user_conf/ftpuser如下:

local_root=/home/ftpuser/web  # 指定FTP根目录为子目录
write_enable=YES

启动服务并配置防火墙

启动vsftpd并设置开机自启

sudo systemctl restart vsftpd
sudo systemctl enable vsftpd

开放防火墙端口

  • Ubuntu/Debian(ufw)
    sudo ufw allow 21/tcp    # FTP控制端口
    sudo ufw allow 10000:10100/tcp  # 被动模式数据端口
    sudo ufw reload
  • CentOS/RHEL(firewalld)
    sudo firewall-cmd --permanent --add-service=ftp  # 添加FTP服务
    sudo firewall-cmd --permanent --add-port=10000-10100/tcp  # 被动模式端口
    sudo firewall-cmd --reload

测试FTP连接

命令行测试

使用ftp命令连接本地服务器:

linux如何添加ftp用户

ftp localhost

输入用户名ftpuser和密码,成功后执行ls查看文件,put test.txt测试上传,get test.txt测试下载,最后bye退出。

客户端工具测试

使用FileZilla等FTP客户端,输入服务器IP、用户名、密码、端口(默认21),选择“FTP-文件传输模式”(若需加密可选“FTPES”),连接后测试文件传输功能。

安全优化建议

  1. 禁用root登录:确保vsftpd.confuserlist_enable=YESuserlist_file=/etc/vsftpd/user_listuserlist_deny=YES,并将root加入/etc/vsftpd/user_list,禁止root通过FTP登录。
  2. 限制用户访问:通过/etc/vsftpd/chroot_list文件(需配置chroot_list_enable=YES)指定允许/禁止chroot的用户。
  3. 定期更新:使用sudo apt upgradesudo yum update保持vsftpd版本最新,修复安全漏洞。

相关问答FAQs

问题1:FTP用户登录时提示“530 Login incorrect”,如何排查?
解答:

  1. 检查用户名密码是否正确(sudo passwd ftpuser重置密码);
  2. 确认用户是否创建成功(cat /etc/passwd | grep ftpuser);
  3. 检查vsftpd服务状态(sudo systemctl status vsftpd);
  4. 查看日志文件(/var/log/vsftpd.log),定位错误信息(如权限不足、防火墙拦截);
  5. 若使用SELinux,执行setenforce 0临时关闭,若问题解决则需配置SELinux策略(sudo setsebool -P ftpd_full_access on)。

问题2:如何限制FTP用户只能访问指定的子目录(如/home/ftpuser/web),不能跳出该目录?
解答:

  1. 确保vsftpd.conf中chroot_local_user=YESallow_writeable_chroot=YES已配置;
  2. 方法一(推荐):在用户家目录下创建子目录web,设置权限后通过local_root参数指定:
    sudo mkdir /home/ftpuser/web
    sudo chown -R ftpuser:ftpuser /home/ftpuser/web
    sudo chmod -R 755 /home/ftpuser/web

    vsftpd.conf中添加:local_root=/home/ftpuser/web

  3. 创建用户配置文件/etc/vsftpd/user_conf/ftpuser为:local_root=/home/ftpuser/web,重启vsftpd服务即可生效。

原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/33078.html

(0)
酷番叔酷番叔
上一篇 2025年9月30日 11:15
下一篇 2025年9月30日 11:31

相关推荐

  • 如何轻松获取临时root权限?

    在Linux系统中,root权限是最高级别的管理员权限,允许用户执行所有系统操作(包括安装软件、修改核心配置等),但不当使用可能导致系统崩溃或安全风险,操作前请务必确认必要性并备份关键数据,以下是进入root权限的详细方法:使用sudo命令适用场景:日常管理任务(需用户已加入sudo组),步骤: sudo &l……

    2025年6月26日
    9000
  • Linux如何快速查询DNS地址?

    查看当前配置的DNS服务器(/etc/resolv.conf文件)这是最直接的方式,系统默认从此文件读取DNS配置:cat /etc/resolv.conf输出示例:nameserver 8.8.8.8 # 主DNS服务器nameserver 192.168.1.1 # 备用DNS服务器⚠️ 注意:若使用Net……

    2025年6月23日
    10100
  • Linux系统如何通过命令行更改IP地址配置?

    在Linux系统中,IP地址的配置是网络管理的基础操作,无论是临时调试还是长期部署,都可能需要根据实际需求调整IP地址,Linux下更改IP地址的方法主要分为临时更改和永久更改两种,且不同发行版(如Ubuntu/Debian和CentOS/RHEL)的配置工具和文件路径可能存在差异,本文将详细讲解各类场景下的操……

    2025年9月26日
    15600
  • 如何在Linux操作系统下安装MyEclipse?具体步骤与方法解析

    在Linux操作系统下安装MyEclipse,需完成环境准备、软件下载、安装部署、环境变量配置及启动验证等步骤,具体操作如下:环境准备MyEclipse是基于Java开发的IDE,需先安装JDK(Java Development Kit),并确保系统满足基本要求,系统要求:推荐Linux发行版:Ubuntu 1……

    2025年9月29日
    6100
  • Debian/Ubuntu如何快速安装必备工具?

    Linux硬盘对拷详细指南硬盘对拷(磁盘克隆)是将一个硬盘的所有数据完整复制到另一个硬盘的过程,常用于系统迁移、数据备份或硬盘升级,Linux系统提供多种可靠的工具实现此操作,无需第三方软件,以下是四种常用方法及详细步骤,操作前请务必备份重要数据,避免误操作导致数据丢失,📋 准备工作连接硬盘:将源盘(被克隆的硬……

    2025年7月21日
    9200

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信