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

相关推荐

  • 1个月能学会Linux基础吗?

    掌握核心操作与基础管理操作系统入门安装 Linux 发行版(推荐 CentOS 7/8 或 Ubuntu LTS),使用虚拟机(VirtualBox/VMware)搭建实验环境,理解文件系统结构:, /etc, /var, /home 等目录作用,熟悉命令行界面(CLI):基础命令如 ls, cd, pwd……

    2025年7月14日
    19400
  • Linux系统升级PHP7.0版本的具体操作步骤是怎样的?

    在Linux系统中升级或安装PHP 7.0需要根据不同的发行版选择合适的方法,以下是详细步骤,涵盖备份、源配置、安装及测试全流程,确保操作安全可靠,升级前的准备工作在开始操作前,务必备份现有PHP配置、扩展及网站数据,避免升级过程中出现数据丢失或服务中断,需备份的关键文件包括:PHP配置文件:通常位于/etc……

    2025年8月25日
    16200
  • 给Linux系统分区时,如何合理规划分区大小与类型以提升性能?

    在Linux系统中,合理的分区规划是系统稳定运行、数据安全及性能优化的基础,分区不仅影响系统的启动速度、存储效率,还关系到数据备份与系统维护的便捷性,本文将从分区前的准备、分区类型与文件系统选择、常见分区方案、操作步骤及注意事项等方面,详细说明如何为Linux系统进行合理分区,分区前的准备工作在动手分区前,需完……

    2025年8月26日
    15300
  • Linux系统如何更改输入法?

    在Linux系统中更改输入法是一个常见需求,尤其对于需要输入中文或其他非拉丁语系文字的用户,Linux发行版众多,桌面环境(如GNOME、KDE、XFCE等)也各不相同,但输入法配置的核心逻辑相似,主要涉及输入法框架(如IBus、Fcitx5)和具体输入法引擎(如拼音、五笔)的安装与设置,本文将以主流发行版和桌……

    2025年9月26日
    21700
  • linux如何进入系统检测

    nux进入系统检测通常通过查看系统日志、运行硬件检测工具及检查系统服务状态等方式进行

    2025年8月19日
    16900

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信