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

【Linux】部署vfstpd服务端,让客户端通过访问不同的端口号,可以实现访问不同的目录

要实现 vsftpd(Very Secure FTP Daemon)服务端,让客户端通过访问 不同的端口号访问不同的目录,可以采用 运行多个 vsftpd 实例,每个实例监听不同的端口,并使用不同的配置文件,其中根目录(local_root)设置为不同的目录路径。

下面是详细的部署步骤:


1. 安装 vsftpd

sudo apt install vsftpd   # Debian/Ubuntu
# 或
sudo yum install vsftpd   # CentOS/RHEL

2. 创建多个配置文件

比如,我们希望:

  • 通过 21端口 访问 /ftp/public
  • 通过 2121端口 访问 /ftp/private

创建两个配置文件:

sudo mkdir -p /etc/vsftpd_multi

/etc/vsftpd_multi/vsftpd_21.conf

listen=YES
listen_port=21
anonymous_enable=NO
local_enable=YES
write_enable=YES
chroot_local_user=YES
local_root=/ftp/public
pasv_min_port=30000
pasv_max_port=30010

/etc/vsftpd_multi/vsftpd_2121.conf

listen=YES
listen_port=2121
anonymous_enable=NO
local_enable=YES
write_enable=YES
chroot_local_user=YES
local_root=/ftp/private
pasv_min_port=30011
pasv_max_port=30020

💡 每个实例需要使用 不同的 PASV 被动端口范围,否则可能端口冲突。


3. 创建对应目录和权限

sudo mkdir -p /ftp/public
sudo mkdir -p /ftp/private
sudo chown -R ftp:ftp /ftp/public
sudo chown -R ftp:ftp /ftp/private

4. 启动多个 vsftpd 实例

你可以使用 systemd 来启动多个实例:

创建 systemd 服务文件

sudo cp /lib/systemd/system/vsftpd.service /etc/systemd/system/vsftpd@.service

编辑 /etc/systemd/system/vsftpd@.service 内容如下(重点是参数 -olisten=YES -olisten_port=XXXX 要改为我们配置文件):

[Unit]
Description=Vsftpd ftp daemon instance %i
After=network.target[Service]
ExecStart=/usr/sbin/vsftpd /etc/vsftpd_multi/vsftpd_%i.conf[Install]
WantedBy=multi-user.target

启动服务

sudo systemctl daemon-reexec
sudo systemctl daemon-reloadsudo systemctl start vsftpd@21
sudo systemctl start vsftpd@2121sudo systemctl enable vsftpd@21
sudo systemctl enable vsftpd@2121

5. 客户端测试

用 FTP 客户端连接:

  • ftp://your_ip:21 访问 /ftp/public
  • ftp://your_ip:2121 访问 /ftp/private

其他建议

  • 使用防火墙开放相应端口(21、2121、30000-30020)
  • 可以加上用户隔离(每个端口让不同用户登录)
  • 可扩展为更多端口实例
http://www.xdnf.cn/news/19351.html

相关文章:

  • 刀片服务器的散热构造方式
  • C++17 新特性简解
  • 分享4-5月工信部排考计划
  • 评测 Doubao-1.5-thinking-pro | 豆包·深度思考模型
  • “AI问诊助手”落地武汉市中心医院,深兰科技助力医疗数智化升级
  • NOIP2015提高组.信息传递
  • 线程池 RejectedExecutionException 异常:Task ... rejected from...
  • 体验 OceanBase 参数模板功能
  • PLM系统如何支持利益相关者分析?沟通矩阵设计
  • 多活架构中如何规划数据一致性?
  • 无锡透平叶片将携尖端叶片登陆2025涡轮展,5月苏州相见
  • C++ `shared_ptr` 多线程使用
  • Python中type()函数的深度探索:类型检查与动态类创建
  • [已解决] Cribl 忘记admin 密码
  • 【java 13天进阶Day04】常用API、正则表达式,泛型、Collection集合API
  • 架构师面试(三十二):注册中心数据结构
  • 常见免杀框架的使用(3款)---【AniYaGUI1.2.0、AV_Evasion_Tool掩日、FoxBypass_V1.0】
  • 遨游科普:三防平板除了三防特性?还能实现什么功能?
  • 广搜bfs-P1443 马的遍历
  • Java学习手册:常见并发问题及解决方案
  • 如何提高单元测试的覆盖率
  • AI开发-效率提升小工具-“打盹弹窗侠”记录
  • Datawhale春训营赛题分析和总结
  • 每日文献(十四)——Part one
  • 2d深度预测
  • 【前端进阶】深入解析 Flexbox 布局中的 flex-shrink 与 gap 兼容性问题
  • 哈佛团队在Cancer Cell发表多模态医学AI模型,整合病理切片和基因组特征,为癌症预后提供新思路
  • stm32f407-01(GPIO)
  • 系统架构师2025年论文通用模板
  • 使用 Puppeteer 监听并打印网页的接口请求