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

相关推荐

  • 如何用ISO文件安装Linux系统?详细教程步骤指南

    使用ISO文件安装Linux系统是较为常见且灵活的方式,尤其适合需要自定义安装或离线场景的用户,以下以Ubuntu Desktop 22.04 LTS为例,详细讲解从准备到安装完成的完整流程,涵盖不同操作系统的启动盘制作方法、BIOS设置、分区方案及后续配置,帮助新手顺利完成系统部署,安装前的准备工作下载Lin……

    2025年9月22日
    4700
  • linux中如何备份数据库文件

    在Linux环境中,数据库备份是保障数据安全的核心操作,无论是应对硬件故障、软件崩溃还是人为误操作,完善的备份机制都能快速恢复数据,降低业务损失,不同数据库系统的备份方法存在差异,本文将详细介绍MySQL/MariaDB、PostgreSQL、MongoDB等主流数据库在Linux中的备份实践,包括工具使用、命……

    2025年9月9日
    3100
  • Ubuntu升级失败?5分钟修复方案

    使用 fbi(FrameBuffer Imageviewer)适用场景:纯命令行环境(无图形界面)原理:直接调用Linux帧缓冲(/dev/fb0)显示图片安装:# CentOS/RHELsudo yum install fbida使用:fbi -a 图片路径.jpg # -a自动缩放适应屏幕fbi -t 5……

    2025年7月29日
    5100
  • linux中如何开ftp服务

    Linux中开启FTP服务,可安装vsftpd软件包并配置其服务脚本,然后

    2025年8月15日
    6000
  • 如何登陆Linux主机?详细步骤与方法指南

    Linux作为广泛使用的操作系统,其登陆方式因使用场景(本地/远程)、环境(图形/命令行)及安全需求不同而有所差异,掌握正确的登陆方法不仅是基础操作,更是保障系统安全的关键,本文将详细解析Linux主机的各类登陆方式、操作步骤及注意事项,本地登陆:物理接触直接访问本地登陆适用于操作者位于Linux主机物理位置的……

    2025年9月27日
    3800

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信