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

相关推荐

  • 如何从零搭建Linux服务器?详细步骤与方法指南

    在搭建Linux服务器之前,首先需要明确服务器的用途,例如是用于Web服务、数据库存储、文件共享还是容器部署等,不同用途对硬件和系统配置的要求差异较大,若为小型个人项目或测试环境,可选用普通PC或云服务器(如阿里云、腾讯云等);若为企业级应用,建议选择具备冗余电源、RAID磁盘阵列的服务器硬件,网络方面,需确保……

    2025年9月21日
    2100
  • Linux如何创建目录符号链接?

    符号链接(软链接)与硬链接的区别类型符号链接(Soft Link)硬链接(Hard Link)适用对象目录和文件均可仅限文件(不支持目录)存储原理存储目标路径的引用(类似快捷方式)直接指向文件的物理数据块(inode)跨文件系统支持 ✔️不支持 ❌删除原目标链接失效 ❌链接仍有效 ✔️(数据不删除)创建命令ln……

    2025年6月21日
    6300
  • Linux查看线程的常用命令和方法有哪些?

    在Linux系统中,线程是进程内的执行单元,多个线程共享进程的资源(如内存、文件描述符等),但拥有独立的栈和程序计数器,查看线程信息对于系统调试、性能优化和问题排查至关重要,Linux提供了多种命令和工具来查看线程,本文将详细介绍这些方法,包括它们的用法、输出解析及适用场景,使用ps命令查看线程ps(Proce……

    2025年9月9日
    3100
  • Linux如何指定某网卡为默认网卡?

    在Linux系统中,默认网卡是指系统用于访问外部网络(非本地局域网)的主要网络接口,其与默认网关直接关联——当目标地址不在直连网络范围内时,数据包会被自动发往默认网关,再由网关进行转发,正确指定默认网卡对多网卡环境(如服务器双网卡、双WAN口路由、虚拟机多网卡)至关重要,可确保网络流量按预期路径传输,避免路由冲……

    2025年9月26日
    1700
  • 如何快速替换Linux默认路由?

    在Linux系统中,网关是连接不同网络的关键节点,负责转发数据包,修改网关可能因网络配置变更、故障切换或优化需求而产生,以下是专业、安全且完整的操作指南,涵盖主流发行版和多种方法:临时修改网关(重启失效)使用 ip route 命令(推荐)sudo ip route replace default via &l……

    2025年7月23日
    4000

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信