当前位置: 首页 > 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.xdnf.cn/news/1338391.html

相关文章:

  • SQL中对视图的操作命令汇总
  • 【数据结构入门】排序算法:插入排序
  • 带有 Angular V14 的 Highcharts
  • 动学学深度学习03-线性神经网络
  • hadoop-3.3.6和hbase-2.4.13
  • Linux下Docker版本升级保姆攻略
  • 数据结构之排序大全(4)
  • LLaVA-3D,Video-3D LLM,VG-LLM,SPAR论文解读
  • WebSocket通信:sockjs与stomp.js的完美搭档
  • 【问题思考】为什么需要文件后缀?(gemini完成)
  • Web3 的发展挑战:技术、监管与生态的多重困境
  • 机器学习聚类算法
  • 什么是默克尔树
  • 缓存与Redis
  • C++---辗转相除法
  • 2025-08-21 Python进阶1——控制流语句
  • 【网络运维】Shell:变量数值计算
  • SQL-leetcode—3451. 查找无效的 IP 地址
  • 从vue2到vue3
  • C++STL-stack和queue的使用及底层实现
  • 基于单片机教室照明灯控制系统
  • Jenkins+GitLab在CentOS7上的自动化部署方案
  • 新手向:Python 3.12 新特性实战详解
  • PAT 1076 Forwards on Weibo
  • linux 差分升级简介
  • git增加ignore文件
  • 健康常识查询系统|基于java和小程序的健康常识查询系统设计与实现(源码+数据库+文档)
  • UEM终端防御一体化
  • 2026 济南玉米及淀粉深加工展:从原料到创新产品的完整解决方案
  • AI Agent与LLM区别