Linux如何配置FTP服务?

在Linux系统中配置FTP服务通常使用vsftpd(Very Secure FTP Daemon),这是一款轻量级、安全且稳定的FTP服务器软件,以下是详细的配置步骤,涵盖安装、配置用户权限、防火墙设置及服务管理等内容。

linux如何配置ftp

安装vsftpd

首先根据Linux发行版选择合适的包管理器安装vsftpd。

  • 基于Debian/Ubuntu的系统
    sudo apt update
    sudo apt install vsftpd -y
  • 基于CentOS/RHEL的系统
    sudo yum install vsftpd -y  # CentOS 7及以下
    sudo dnf install vsftpd -y # CentOS 8及以上

    安装完成后,vsftpd服务默认未启动,需通过systemctl status vsftpd检查状态。

配置vsftpd核心文件

vsftpd的主配置文件位于/etc/vsftpd/vsftpd.conf,建议先备份原文件:

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

然后编辑配置文件,以下为关键配置项及其作用(可通过表格清晰对比):

配置项 作用 推荐值
anonymous_enable 是否允许匿名用户登录 NO(禁止匿名访问)
local_enable 是否允许本地用户登录 YES(允许系统用户登录)
write_enable 是否允许FTP命令修改文件 YES(允许上传/删除等操作)
chroot_local_user 是否限制用户仅能访问自家目录 YES(增强安全性)
allow_writeable_chroot chroot_local_user=YES时,是否允许家目录可写 YES(需配合目录权限)
pasv_enable 是否启用被动模式(推荐用于客户端防火墙环境) YES
pasv_min_port / pasv_max_port 被动模式端口范围 10000 10100(需防火墙放行)
userlist_enable 是否启用用户列表文件 YES
userlist_file 用户列表文件路径 /etc/vsftpd/user_list
tcp_wrappers 是否使用TCP Wrappers访问控制 YES(可通过hosts.allow/deny限制IP)

编辑配置文件时,可通过sudo nano /etc/vsftpd/vsftpd.conf打开,取消或修改上述配置项的值,保存后退出。

配置FTP用户

为安全起见,建议创建专用FTP用户,而非直接使用系统用户。

  1. 创建用户并设置密码

    linux如何配置ftp

    sudo useradd -m -s /sbin/nologin ftpuser  # 创建用户,禁止SSH登录
    sudo passwd ftpuser                        # 设置用户密码

    -m表示自动创建家目录,-s /sbin/nologin限制用户只能通过FTP登录。

  2. 限制用户访问目录(chroot)
    chroot_local_user=YES,需确保用户家目录不可被写入(避免安全漏洞),或设置allow_writeable_chroot=YES后调整目录权限:

    sudo chmod 755 /home/ftpuser  # 设置家目录权限为755(所有者可读写执行,其他用户可读执行)
  3. 通过用户列表限制登录
    userlist_enable=YES,编辑/etc/vsftpd/user_list文件,添加允许登录的用户名(每行一个):

    echo "ftpuser" | sudo tee -a /etc/vsftpd/user_list

配置防火墙

FTP服务默认使用21端口(控制连接),被动模式需额外配置端口范围(如10000-10100)。

  • 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服务(自动包含21端口)
    sudo firewall-cmd --permanent --add-port=10000-10100/tcp
    sudo firewall-cmd --reload

启动并设置开机自启

配置完成后,启动vsftpd服务并设置为开机自启:

sudo systemctl start vsftpd
sudo systemctl enable vsftpd

通过systemctl status vsftpd确认服务运行状态,若启动失败,可查看日志journalctl -u vsftpd排查问题。

测试FTP连接

  1. 命令行测试(本地或远程客户端):

    linux如何配置ftp

    ftp 127.0.0.1  # 或服务器IP

    输入用户名(ftpuser)和密码,登录后使用put上传文件、get下载文件测试。

  2. 图形化工具测试(如FileZilla):
    主机填服务器IP,协议选择“FTP”,端口21,输入用户名密码,连接成功后即可传输文件。

相关问答FAQs

Q1:FTP连接时提示“530 Login incorrect”,如何解决?
A:可能原因包括:① 用户名或密码错误;② 用户未在user_list文件中;③ chroot限制导致家目录权限问题,检查/etc/vsftpd/user_list是否包含用户名,确认家目录权限为755,或尝试临时关闭chroot_local_user测试。

Q2:如何限制FTP用户只能上传文件,不能下载或删除?
A:通过设置文件权限实现,在用户家目录中,创建专用上传目录,并调整权限:

sudo mkdir /home/ftpuser/upload
sudo chown ftpuser:ftpuser /home/ftpuser/upload
sudo chmod 733 /home/ftpuser/upload  # 用户可读写执行,其他用户无权限(避免下载)

然后在vsftpd配置文件中添加local_root=/home/ftpuser/upload,将用户默认目录限制为upload,即可实现仅上传功能。

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

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

相关推荐

  • Linux如何高效调用Python脚本?

    基础调用方法使用Python解释器直接运行在终端执行,适用于所有Python版本:python3 脚本名.py # 显式指定Python3python 脚本名.py # 若系统默认Python为2.x,需避免使用关键参数:-c “代码”:直接执行单行代码(如 python3 -c “print(‘Hello……

    2025年6月21日
    17700
  • Ubuntu 24.04升级后apt报错?

    Ubuntu和Debian是流行的Linux发行版,Debian以其稳定性、严格的自由软件理念和庞大的软件仓库著称,Ubuntu基于Debian,更注重用户友好性、定期发布和商业支持,是新手和桌面用户的理想选择,两者都使用APT包管理系统。

    2025年6月30日
    17600
  • Linux应用程序如何操作GPIO?

    在Linux系统中,GPIO(通用输入输出)是最基础的外设接口之一,广泛应用于嵌入式设备、物联网硬件等领域,应用程序对GPIO的操作是硬件交互的核心,本文将详细介绍Linux应用程序操作GPIO的多种方法、原理及实践注意事项,GPIO在Linux中的抽象模型Linux内核通过GPIO子系统对硬件GPIO引脚进行……

    2025年9月26日
    16300
  • linux 如何绑定核

    Linux 中,可使用 taskset 命令或修改进程启动参数来绑定核,

    2025年8月10日
    14900
  • Linux新手指南,如何正确退出vim编辑器?命令操作步骤请解答?

    在Linux系统中,vim是一款功能强大的文本编辑器,但因其模式化的操作特性,新手常常对退出操作感到困惑,掌握vim的退出方法不仅能提高工作效率,还能避免因操作不当导致的数据丢失,本文将详细介绍vim的各种退出方式,包括基础命令、进阶技巧及常见问题处理,帮助用户全面掌握vim的退出操作,vim的基础退出命令vi……

    2025年9月26日
    12500

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信