当前位置: 首页 > news >正文

搭建FTP文件共享服务器

(这里以安全的虚拟用户模式的VSFTPD为例)是一个系统性的过程。

搭建目标

使用 VSFTPD (Very Secure FTP Daemon) 搭建一个FTP服务器,其特点是:

  1. 使用虚拟用户:FTP账号与系统账号分离,更安全。

  2. 本地用户隔离:每个虚拟用户可以被限制在自己的家目录中,无法访问系统其他部分。

  3. 启用TLS加密(可选):保护数据传输过程,避免密码和数据明文传输。

安装 VSFTPD

给vsftpd配置文件备份

修改配置文件

vim vsftpd.conf  修改里面的配置信息

将原本的信息修改成以下信息

anonymous_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES

创建upload目录,并修改pub和upload的权限,允许所有人都可以访问

重启vsftpd服务,并查看状态是否开启。(active为开启)

关闭selinux和防火墙,防止无法访问

在电脑地址栏输入ftp://192.168.102.128并访问

其ip地址应为你的网卡ip地址        可以发现,创建upload目录已经以文件形式可以查看

扩展

创建虚拟用户数据库

1.创建认证文件  

vim /etc/vsftpd/ftp_auth_file

创建一个文本文件,奇数行为用户名,偶数行为密码。

第二步:创建虚拟用户数据库

2. 生成数据库文件

使用 db_load 命令将文本文件转换为VSFTPD可识别的DB数据库文件。

db_load -T -t hash -f ftp_auth_file ftp_auth_file.db

使用 ls -l /etc/vsftpd/ 查看新生成的 virtual_users.db 文件以确认。

第三步:创建PAM认证文件

PAM(Pluggable Authentication Modules)是 Linux 系统中用于管理用户认证(比如验证密码)的一套机制

我们需要告诉系统如何使用刚才创建的数据库文件来验证用户。

以下是vsftpd的认证文件内容

创建或编辑PAM配置文件:

建立文件 vim /etc/pam.d/test ,test这个文件名可以自定义

注意:这里写的是 db=/etc/vsftpd/virtual_users,而不是 virtual_users.db,PAM会自动添加 .db 后缀。

编辑vsftpd的主配置文件

vim /etc/vsftpd/vsftpd.conf

pam_service_name=vsftpd:是告诉 vsftpd 使用 /etc/pam.d/ 目录下名为 vsftpd 的 PAM 配置文件来进行用户登录验证。但注释了,不生效

  • pam_service_name=test:它指示 vsftpd 使用 /etc/pam.d/ 目录下名为 test 的 PAM 配置文件来进行用户认证。

  • 系统管理员创建了一个名为 test 的自定义 PAM 配置来定义特殊的认证规则(例如,允许某些用户无需密码登录,或者只允许特定用户组的成员登录)。这代替了默认的 vsftpd 配置。

guest_enable=YES

  • 这开启了 “来宾(Guest)”登录功能

  • 这意味着,任何非匿名登录的普通用户(例如,系统用户 zhangsanlisi),在登录 FTP 时都不会被当作其本人,而是会被映射为另一个指定的来宾用户。

guest_username=ftp

  • 这行与上一行 guest_enable 配合使用,定义了来宾用户具体被映射到哪个系统账户

  • 在这里,所有非匿名登录的用户,一旦登录成功,他们在服务器上的权限将等同于系统用户 ftp

  • 这样做是出于安全考虑,限制了 FTP 用户只能在 ftp 用户拥有的目录范围内活动,而无法访问整个服务器的文件系统。

ftp的家目录就是/var/ftp/pub 目录,原因是刚刚已经把它限制

可以查看/etc/passwd里的内容找到

然后重启vsftpd服务,使配置生效

第四步:测试连接

我们使用另一台主机登录这些虚拟用户(win+R)

  • 用户名/Username: test

  • 密码/Password: 123

再扩展

虚拟用户家目录的独立设定
默认的虚拟用户我们登录的家目录都在/var/ftp里,那他们创建的目录上传的东西都会在一起,
如果要删除某个虚拟用户的文件,找起来就很麻烦了,所以为了方便管理我们将这些虚拟用户
建立分开的家目录。

首先我们去给每个虚拟用户建立他们的家目录
mkdir /home/test{1..3}

编辑配置文件:vim /etc/vsftpd/vsftpd.conf

local_root=/home/$USER : 指定用户的登录的家目录, $USER是系统对于用户的一个变量指代
user_sub_token=$USER : 指定上面写的 $USER是我们系统中的,否则vsftp无法识别

完成后,依然是重启服务
systemctl restart vsftpd

就可以测试登录查看。

http://www.dtcms.com/a/343024.html

相关文章:

  • linux 之 virtio 子系统核心的数据结构
  • DeepSeek R2难产:近期DeepSeek-V3.1 发布更新并开源,成功实现迈向 Agent 时代的第一步
  • 信息收集4----(收集网站指纹信息)
  • CSS 3D动画,围绕旋转动画Demo
  • 常见 Linux 网络命令梳理
  • AGV 技术落地场景解析:从制造业到仓储物流,看自动导引车的行业应用
  • 【Ruoyi解密-02.登录流程:】登录-找密码不抓瞎
  • 封装FTPSClient连接ftps服务器
  • 一个成熟的运维及售后岗位应掌握的知识体系详解
  • Linux动态库制作和使用
  • Manus AI 与多语言手写识别:技术、应用与未来
  • Nginx + Vue/React 前端 + API:防止路径混淆漏洞与跨域问题实战分享
  • [Mysql数据库] Mysql安全知识
  • Oracle ADG 切换方式详解:Switchover 与 Failover 操作指南
  • 〖领码方案〗前端 PageData 完整解决方案 第四版
  • 深度解析Structured Outputs:让AI输出严格遵循JSON Schema的结构化响应
  • 【日常学习】2025-8-21 了解些测试名词
  • 【GPT入门】第52课 openwebui安装与使用
  • Zynq中级开发七项必修课-第三课:S_AXI_GP0 主动访问 PS 地址空间
  • 通信算法之317:基于Xilinx FPGA平台的符号同步算法(接收序列与本地序列互相关-不共轭乘)
  • ODDR实现多bit单边沿采样数据转为多bit双沿采样数据
  • 前端-Vue笔记(核心语法)
  • linux内核 - 内存分配机制介绍
  • MySQL 8.4.6 LTS 安装教程 windows
  • 如何在mac玩windows游戏?3个工具推荐,不用换电脑!
  • MiniGPT-4
  • 在Excel和WPS表格中合并多个单元格这样最快
  • 第14章 结构和其他数据形式
  • 数据分类分级的关键难点以及应对之道
  • Go1.25的源码分析-src/runtime/runtime1.go(GMP)g