准确--在 AlmaLinux 9.2 上快速搭建 FTP 服务器

FTP 服务器配置与验证完整步骤

以下内容是针对在 192.168.6.101 配置 FTP 服务器,端口为 59999 的完整详细操作步骤,包括配置与验证。每个步骤都附有详细注释。


配置 FTP 服务器

1. 安装 vsftpd

根据系统类型,执行以下命令安装 FTP 服务:

sudo yum install vsftpd -y   # RHEL/CentOS 系列
sudo apt install vsftpd -y   # Debian/Ubuntu 系列

注: 如果已安装可跳过此步骤。


2. 创建 FTP 目录与用户
  1. 创建存放 FTP 文件的目录

    sudo mkdir -p /ZG_data/shareddata/ftpdata   # 创建目录
    sudo chmod 755 /ZG_data/shareddata/ftpdata  # 设置目录权限
    

    注: 目录权限为 755,确保用户可正常访问。

  2. 创建 FTP 用户

    sudo useradd ftpzg -d /ZG_data/shareddata/ftpdata -s /sbin/nologin
    echo "XXXXXXX" | sudo passwd ftpzg --stdin
    
    • 用户名为 ftpzg
    • 主目录为 /ZG_data/shareddata/ftpdata
    • 禁用 Shell 登录功能,提升安全性。

3. 编辑配置文件

编辑 /etc/vsftpd/vsftpd.conf 文件:

sudo vi /etc/vsftpd/vsftpd.conf

将以下内容写入或替换原配置文件:

# 禁止匿名用户登录,确保安全
anonymous_enable=NO

# 允许本地用户登录
local_enable=YES

# 启用写权限,允许上传文件
write_enable=YES

# 设置本地用户的权限掩码为 002(775 权限)
local_umask=002

# 显示进入目录的欢迎信息
dirmessage_enable=YES

# 启用上传/下载日志
xferlog_enable=YES

# 禁止使用端口 20 进行主动模式传输
connect_from_port_20=NO

# 使用标准 xferlog 日志格式
xferlog_std_format=YES

# 设置会话超时时间为 600 秒
idle_session_timeout=600

# 启用用户目录隔离
chroot_list_enable=YES

# 指定目录隔离列表文件路径
chroot_list_file=/etc/vsftpd/chroot_list

# 监听 IPv6,禁用 IPv4
listen=NO
listen_ipv6=YES

# PAM 认证模块
pam_service_name=vsftpd

# 启用用户列表功能
userlist_enable=YES
userlist_deny=NO  # 用户列表为允许模式

# 设置最大客户端连接数和每 IP 的最大连接数
max_clients=1000
max_per_ip=50

# 设置本地用户的根目录
local_root=/ZG_data/shareddata/ftpdata

# 允许用户在 chroot 环境中具有写权限
allow_writeable_chroot=YES

# 设置 FTP 服务器监听端口
listen_port=59999

# 启用被动模式,指定端口范围
pasv_enable=YES
pasv_min_port=60001
pasv_max_port=60999
pasv_promiscuous=YES  # 允许连接服务器之外的 IP

4. 配置用户访问权限
  1. 添加用户到允许列表

    echo "ftpzg" | sudo tee -a /etc/vsftpd/user_list
    
  2. 配置用户目录隔离

    • 创建 chroot_list 文件:
      sudo touch /etc/vsftpd/chroot_list
      
    • 添加用户到隔离列表:
      echo "ftpzg" | sudo tee -a /etc/vsftpd/chroot_list
      
  3. 检查 PAM 配置文件
    打开 /etc/pam.d/vsftpd 文件:

    sudo vi /etc/pam.d/vsftpd
    

    注释掉以下行(如果存在):

    # auth    required        pam_shells.so
    

    注: 这会避免因用户的 /sbin/nologin 被拒绝登录 FTP。


5. 启动 vsftpd 服务
  1. 启动服务并设置开机自启

    sudo systemctl restart vsftpd
    sudo systemctl enable vsftpd
    
  2. 检查服务状态

    sudo systemctl status vsftpd
    

    应显示 active (running) 状态。


验证 FTP 服务

1. 检查服务监听

确保服务监听在正确的端口:

ss -tuln | grep 59999

应显示类似以下内容:

tcp    LISTEN    0    128    :::59999   :::*

2. 本地登录测试

使用命令行测试 FTP 服务:

ftp 127.0.0.1 59999

输入用户名和密码:

Name (127.0.0.1:root): ftpzg
Password: XXXXXXXXX

验证登录后可执行以下操作:

  1. 上传文件
    put aaa.txt
    
  2. 下载文件
    get aaa.txt
    

3. 远程登录测试

在另一台主机上测试:

ftp 192.168.6.101 59999

输入用户名 ftpzg 和密码 Hrbzg@0701,验证是否能登录并进行文件操作(上传、下载)。


4. 验证用户目录隔离

登录后尝试访问非用户目录:

cd /etc

应显示“权限被拒绝”,验证用户仅可访问 /ZG_data/shareddata/ftpdata


5. 检查日志文件

如遇问题,可查看以下日志文件进行排查:

  1. vsftpd 日志
    sudo cat /var/log/vsftpd.log
    
  2. 系统日志
    sudo journalctl -u vsftpd
    

注意事项

  • 防火墙与 SELinux:已确认防火墙和 SELinux 均关闭,无需额外配置。
  • 端口验证:确保 59999 和被动模式端口范围(60001-60999)开放,便于连接。

通过上述步骤,FTP 服务器应能正常运行并支持用户登录、上传下载及目录隔离功能。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/927327.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

群论入门笔记

群的基本定义 群由一组元素 G 和一个运算(常用符号包括 ,x , 或 ∗)组成。 封闭性 对于任意两个元素 x,y∈G,运算 x * y 的结果仍然属于集合 G,即: ∀x,y∈G,x∗y∈G. 结合律 对于任意 a,b,c∈G&…

LabVIEW内燃机气道试验台测控系统

基于LabVIEW软件开发的内燃机气道试验台测控系统主要应用于内燃机气道的性能测试和数据分析,通过高精度的测控技术,有效提升内燃机的测试精度和数据处理能力。 项目背景 随着内燃机技术的发展,对其气道性能的精准测量需求日益增加。该系统通…

LabVIEW将TXT文本转换为CSV格式(多行多列)

在LabVIEW中,将TXT格式的文本文件内容转换为Excel格式(即CSV文件)是一项常见的数据处理任务,适用于将以制表符、空格或其他分隔符分隔的数据格式化为可用于电子表格分析的形式。以下是将TXT文件转换为Excel(CSV&#x…

第二节——计算机网络(四)物理层

车载以太网采用差分双绞线车载以太网并未指定特定的连接器,连接方式更为灵活小巧,能够大大减轻线束重量。传统以太网一般使用RJ45连接器连接。车载以太网物理层需满足车载环境下更为严格的EMC要求,100BASE-T1\1000BASE-T1对于非屏蔽双绞线的传…

Next.js - app 路由器之动态路由与并行路由

#题引:我认为跟着官方文档学习不会走歪路 动态路由的约定 (1) 通过将文件夹名称用方括号括起来可以创建动态段:[folderName] 动态段会作为 params 属性传递给 layout、page、route 和 generateMetadata 函数。 例如,一个博客可以包含以下…

电脑还原重置Windows系统不同操作模式

电脑有问题,遇事不决就重启,一切都不是问题!是真的这样吗。其实不然,主机系统重启确实可以自动修复一些文件错误,或者是设置问题,但是,当你由于安装了错误的驱动或者中毒严重,亦或是蓝屏,那么重启这个方子可能就治不了你的电脑了。 那么,除了当主机出现异常故障现象…

基于Java Springboot蛋糕订购小程序

一、作品包含 源码数据库设计文档万字PPT全套环境和工具资源部署教程 二、项目技术 前端技术:Html、Css、Js、Vue、Element-ui 数据库:MySQL 后端技术:Java、Spring Boot、MyBatis 三、运行环境 开发工具:IDEA/eclipse 微信…

git 上传代码时报错

在上传代码时,显示无法上传 PS E:\JavaWeb\vue3-project> git push To https://gitee.com/evening-breeze-2003/vue3.git! [rejected] master -> master (non-fast-forward) error: failed to push some refs to https://gitee.com/evening-breeze-20…

【学习笔记】GoFrame框架

文章目录 什么是GoFrame框架 and 安装项目初始化 什么是GoFrame框架 and 安装 我也是用过许多框架的程序员了,但是GoFrame框架确实是没听说过,今天就来学习一下。 首先是我们熟悉的选手自我介绍环节 GoFrame 是一款模块化、高性能、企业级的 Go 语言基…

探索温度计的数字化设计:一个可视化温度数据的Web图表案例

随着科技的发展,数据可视化在各个领域中的应用越来越广泛。在温度监控和展示方面,传统的温度计已逐渐被数字化温度计所取代。本文将介绍一个使用Echarts库创建的温度计Web图表,该图表通过动态数据可视化展示了温度值,并通过渐变色…

Linq(C#)之对数据分组

分组是指将数据分到不同的组&#xff0c;使每组中的元素拥有公共的属性。 下图演示了对字符序列进行分组的结果。 每个组的键是字符。 1、group by List<int> numbers [35, 44, 200, 84, 3987, 4, 199, 329, 446, 208];IEnumerable<IGrouping<int, int>> q…

【字体】Fire Code连字效果开启

Vscode 开启方法 1、设置字体Fire Code 放在最前面的即可&#xff1a; 2、启用连字 继续往下找到“在 settings.json 中编辑”&#xff0c;然后设置"editor.fontLigatures": true &#xff1a; 保存即可。 Sublime 开启方法 设置中设置字体后&#xff0c;启…

区块链学习笔记(2)--区块链的交易模型part1

模型基础 区块链的tx分为两种模型&#xff0c;分别是比特币为代表的UTXO&#xff08;Unspent Transaction Output&#xff09;模型&#xff0c;和以太坊为代表的Account模型。前者适用于货币记账&#xff0c;后者适用于链上应用。 UTXO模型 类似于现金的交易模型 一个tx包含…

ComfyUI节点安装笔记

AI高速发展&#xff0c;版本更新相当快&#xff08;11月25日才安装的版本v.0.3.4&#xff0c;27日版本就已经更新到v.0.3.5了&#xff0c;当然不是说所有的版本更新都需要全部全新安装&#xff09;&#xff0c;在遇到问题&#xff0c;而不能通过update来更新各个节点解决时&…

数据库期末复习题库

1. Mysql日志功能有哪些? 记录日常操作和错误信息&#xff0c;以便了解Mysql数据库的运行情况&#xff0c;日常操作&#xff0c;错误信息和进行相关的优化。 2. 数据库有哪些备份方法 完全备份&#xff1a;全部都备份一遍表备份&#xff1a;只提取数据库中的数据&#xff0…

【经典论文阅读】Transformer(多头注意力 编码器-解码器)

Transformer attention is all you need 摘要 完全舍弃循环 recurrence 和卷积 convolutions 只依赖于attention mechanisms 【1】Introduction 完全通过注意力机制&#xff0c;draw global dependencies between input and output 【2】Background 1&#xff1a;self-…

理解字母形状,从而获得含义

英文字母&#xff0c;都是象形符号&#xff0c;所以&#xff0c;理解其形象&#xff0c;所象之形&#xff0c;是一项重要的工作&#xff0c;和非常有意义事情。也是我们快速记住大量单词&#xff0c;将单词从底层逻辑开始理清&#xff0c;融会贯通扩展记忆容量的重要办法之一。…

CA系统(file.h---申请认证的处理)

#pragma once #ifndef FILEMANAGER_H #define FILEMANAGER_H #include <string> namespace F_ile {// 读取文件&#xff0c;返回文件内容bool readFilename(const std::string& filePath);bool readFilePubilcpath(const std::string& filePath);bool getNameFro…

Linux Shell 脚本题目集(2)

1、使用 case 语句根据用户输入的分数&#xff08;0-100&#xff09;输出相应的成绩等级&#xff08;A, B, C, D&#xff09;。 #! /bin/bashread -p "请输入您的分数&#xff08;0-100&#xff09;&#xff1a;" score# 验证输入是否为数字且在0到100之间 if ! [[ …

混淆零碎知识点

minifyEnabled true //混淆开关 zipAlignEnabled true // Zipalign优化 shrinkResources true // 移除无用的resource文件 &#xff08;必须要混淆开了之后才才可以设置为true&#xff09; proguard-rules.pro 为混淆文件 //整个文件保留 不被混淆 -keep class com.cn…