SFTPGO 整合minio AD群组 测试 |sftpgo with minio and ldap group test

SFTP-GO 研究
最近在测试sftpgo,发现中文的资料比较少,在企业中很多存储开始支持S3,比如netapp
于是想尝试把文件服务器换成sftpgo+S3的存储,sftp go和AD 群组的搭配测试比较少
自己测试了一把,觉得还是没有server-u的AD群组方便,但是比filezilla server强太多,记录下面供各位参考

文章目录

    • 1.安装-docker方式
    • 2.增加存储
      • 2.1 本地存储
      • 2.2 Miniio 存储
    • 3.IP过滤测试
    • 4.AD整合测试
    • 5.群组测试
      • 5.1 在组里面挂载存储
      • 5.2 在组里面挂载虚拟目录
    • 6.使用顺序
      • 6.1 先新建文件夹
      • 6.2 再新建组
      • 6.3 新建用户
      • 6.4 将用户加入组
    • 7.文件权限设置

1.安装-docker方式

实际配置

需要对文件目录授权,生产环境权限不要这么粗暴


mkdir -p /docker/sftpgo/sftpgodata
mkdir -p /docker/sftpgo/sftpgohome
chmod -R 777 /docker/sftpgo
version: '3.8'
services:

  mariadb:
    image: "mariadb:10.7"
    container_name: "mariadb"
    hostname: "mariadb"
    restart: unless-stopped
    ports:
      - '3306:3306'
    volumes:
      - "./mariadb_data:/var/lib/mysql"
      - "/etc/localtime:/etc/localtime:ro"
    environment:
      - "MARIADB_ROOT_PASSWORD=密码"
      - "MARIADB_USER=npi"
      - "MARIADB_PASSWORD=密码"
      - "MARIADB_DATABASE=sftpgo"
    networks:
      - npi

  sftpgo:
    image: "drakkan/sftpgo:2.5.x-plugins"
    container_name: "sftpgo"
    hostname: "sftpgo"
    restart: unless-stopped
    ports:
      - '8080:8080'
      - '2022:2022'
    volumes:
      - "./sftpgohome:/var/lib/sftpgo"
      - "./sftpgodata:/srv/sftpgo"
    environment:
      # These are the settings to access your db
      SFTPGO_WEBDAVD__BINDINGS__0__PORT: 5007
      SFTPGO_DATA_PROVIDER__DRIVER: "mysql"
      SFTPGO_DATA_PROVIDER__NAME: "sftpgo"
      SFTPGO_DATA_PROVIDER__HOST: "mariadb"
      SFTPGO_DATA_PROVIDER__PORT: 3306
      SFTPGO_DATA_PROVIDER__USERNAME: "用户"
      SFTPGO_DATA_PROVIDER__PASSWORD: "密码"
      SFTPGO_COMMON_DEFENDER__ENABLED: "true"
      SFTPGO_COMMON_DEFENDER__BAN_TIME: 15
      SFTPGO_COMMON_DEFENDER__BAN_TIME_INCREMENT: 100
      SFTPGO_COMMON_DEFENDER__THRESHOLD: 5
      SFTPGO_COMMON_DEFENDER__OBSERVATION_TIME: 15
    networks:
      - npi
      
  minio:
    image: "minio"
    container_name: "minio"
    hostname: "minio"
    restart: unless-stopped
    ports:
      - '9000:9000'
      - '9002:9001'
    volumes:
      - "./minio_data:/data"
      - "/etc/localtime:/etc/localtime:ro"
    environment:
      - "MINIO_ROOT_USER=admin"
      - "MINIO_ROOT_PASSWORD=密码"
    networks:
      - npi
    command: server /data --console-address ":9001"


networks:
  npi:
    internal: false

2.增加存储

2.1 本地存储

实际配置

在这里插入图片描述

用户配置
在这里插入图片描述

2.2 Miniio 存储

建议在组里面挂载miniio
在这里插入图片描述

3.IP过滤测试

ACL中
在这里插入图片描述

在这里插入图片描述

4.AD整合测试

在docker的环境变量里面设置后直接用AD登陆,会自动创建账户
也可以先新建账户,拖组,再直接登陆

发现bug,先建账户,再登陆后会删除账户并重建用户

示例配置:

SFTPGO_PLUGIN_AUTH_LDAP_URL="ldap://192.168.1.5:389"
SFTPGO_PLUGIN_AUTH_LDAP_BASE_DN="dc=mylab,dc=local"
SFTPGO_PLUGIN_AUTH_LDAP_BIND_DN="cn=Administrator,cn=users,dc=mylab,dc=local"
SFTPGO_PLUGIN_AUTH_LDAP_PASSWORD="Password.123456"
SFTPGO_PLUGIN_AUTH_LDAP_SEARCH_QUERY="(&(objectClass=user)(sAMAccountType=805306368)(sAMAccountName=%username%))"
SFTPGO_PLUGIN_AUTH_CACHE_TIME=60
SFTPGO_PLUGINS__0__TYPE=auth
SFTPGO_PLUGINS__0__AUTH_OPTIONS__SCOPE=5
SFTPGO_PLUGINS__0__CMD="/usr/local/bin/sftpgo-plugin-auth"
SFTPGO_PLUGINS__0__ARGS="serve"
SFTPGO_PLUGINS__0__AUTO_MTLS=1

AD组配置

实际配置,设置AD组限制后,发现AD账户要登陆2次才能成功,原因不明

environment:
      # 以下是数据库配置
      SFTPGO_WEBDAVD__BINDINGS__0__PORT: 5007
      SFTPGO_DATA_PROVIDER__DRIVER: "mysql"
      SFTPGO_DATA_PROVIDER__NAME: "sftpgo"
      SFTPGO_DATA_PROVIDER__HOST: "mariadb"
      SFTPGO_DATA_PROVIDER__PORT: 3306
      SFTPGO_DATA_PROVIDER__USERNAME: "用户"
      SFTPGO_DATA_PROVIDER__PASSWORD: "密码"
      SFTPGO_COMMON_DEFENDER__ENABLED: "true"
      SFTPGO_COMMON_DEFENDER__BAN_TIME: 15
      SFTPGO_COMMON_DEFENDER__BAN_TIME_INCREMENT: 100
      SFTPGO_COMMON_DEFENDER__THRESHOLD: 5
      SFTPGO_COMMON_DEFENDER__OBSERVATION_TIME: 15
      # 以下是LDAP配置
      SFTPGO_PLUGIN_AUTH_LDAP_URL: "ldap://IP"
      SFTPGO_PLUGIN_AUTH_LDAP_BASE_DN: "DN"
      SFTPGO_PLUGIN_AUTH_LDAP_BIND_DN: "OU"
      SFTPGO_PLUGIN_AUTH_LDAP_PASSWORD: "密码"
      SFTPGO_PLUGIN_AUTH_LDAP_SEARCH_QUERY: "(&(objectClass=user)(sAMAccountType=805306368)(sAMAccountName=%username%))"
      SFTPGO_PLUGIN_AUTH_CACHE_TIME: 60
      SFTPGO_PLUGINS__0__TYPE: auth
      SFTPGO_PLUGINS__0__AUTH_OPTIONS__SCOPE: 5
      SFTPGO_PLUGINS__0__CMD: "/usr/local/bin/sftpgo-plugin-auth"
      SFTPGO_PLUGINS__0__ARGS: "serve"
      SFTPGO_PLUGINS__0__AUTO_MTLS: 1
      SFTPGO_PLUGIN_AUTH_PRIMARY_GROUP_PREFIX: "mini2"  #映射sftpgo 到主要群组
      SFTPGO_PLUGIN_AUTH_REQUIRE_GROUPS: "TRUE" #不设置群组不让登陆,防止用户自动创建


姓名:
    sftpgo-plugin-authserve - 启动 SFTPGo 插件,必须从 SFTPGo 实例调用它

用法:
    sftpgo-plugin-auth 服务 [命令选项] [参数...]

选项:
    --ldap-url 值 LDAP url,例如 ldap://192.168.1.5:389 或 ldaps://192.168.1.5:636 [$SFTPGO_PLUGIN_AUTH_LDAP_URL]
    --ldap-base-dn value 基本 DN 定义 LDAP 目录中根对象的地址,例如 dc=mylab,dc=local [$SFTPGO_PLUGIN_AUTH_LDAP_BASE_DN]
    --ldap-bind-dn value 用于登录 LDAP 服务器以执行搜索的绑定 DN,例如 cn=Administrator,cn=users,dc=mylab,dc=local。 这应该是只读用户 [$SFTPGO_PLUGIN_AUTH_LDAP_USERNAME, $SFTPGO_PLUGIN_AUTH_LDAP_BIND_DN]
    --ldap-password value 定义的 ldap-bind-dn 的密码。 如果为空,将尝试匿名绑定 [$SFTPGO_PLUGIN_AUTH_LDAP_PASSWORD]
    --ldap-search-query value 用于查找尝试登录的用户的 ldap 查询。 %username% 占位符将替换为尝试登录的用户名(默认值:(&(objectClass=user)(sAMAccountType=805306368)(sAMAccountName=%username%))) [$SFTPGO_PLUGIN_AUTH_LDAP_SEARCH_QUERY]
    --ldap-group-attributes value [ --ldap-group-attributes value ] 包含用户所属组的 ldap 属性(默认值:memberOf) [$SFTPGO_PLUGIN_AUTH_LDAP_GROUP_ATTRIBUTES]
    --primary-group-prefix value LDAP 组的前缀,映射到 SFTPGo 用户的主要组。 SFTPGo 用户只能拥有一个主要组 [$SFTPGO_PLUGIN_AUTH_PRIMARY_GROUP_PREFIX]
    --secondary-group-prefix value LDAP 组映射到 SFTPGo 用户辅助组的前缀 [$SFTPGO_PLUGIN_AUTH_SECONDARY_GROUP_PREFIX]
    --membership-group-prefix value 用于映射到 SFTPGo 用户的成员资格组的 LDAP 组的前缀 [$SFTPGO_PLUGIN_AUTH_MEMBERSHIP_GROUP_PREFIX]
    --require-groups 要求经过身份验证的用户至少是一个 SFTPGo 组的成员(默认值: false) [$SFTPGO_PLUGIN_AUTH_REQUIRE_GROUPS]
    --starttls value STARTTLS 是加密 LDAP 连接的首选方法。 使用它而不是使用 ldaps:// URL 架构(默认值:0)[$SFTPGO_PLUGIN_AUTH_STARTTLS]
    --users-base-dir 值 用户默认基目录。 如果已在 SFTPGo 中设置,则保留为空。 如果设置,它必须是绝对路径 [$SFTPGO_PLUGIN_AUTH_USERS_BASE_DIR]
    --cache-time value 定义经过身份验证的用户的缓存时间(以秒为单位)。 0 表示没有缓存(默认值:0) [$SFTPGO_PLUGIN_AUTH_CACHE_TIME]
    --skip-tls-verify value 如果设置为 1,则插件接受服务器提供的任何 TLS 证书以及该证书中的任何主机名。 在这种模式下,TLS 容易受到中间人攻击。 这应该仅用于测试(默认值:0)[$SFTPGO_PLUGIN_AUTH_SKIP_TLS_VERIFY]
    --ca-certificates value [ --ca-certificates value ] 要信任的额外 CA 证书的绝对路径列表 [$SFTPGO_PLUGIN_AUTH_CA_CERTIFICATES]
    --help, -h 显示帮助

5.群组测试

5.1 在组里面挂载存储

在这里插入图片描述

5.2 在组里面挂载虚拟目录

在这里插入图片描述


6.使用顺序

6.1 先新建文件夹

6.2 再新建组

把6.1文件夹关联到组
在这里插入图片描述

6.3 新建用户

6.4 将用户加入组

不用设置用户目录和权限,全部集成组的
在这里插入图片描述

7.文件权限设置

在用户或者组ACL中设置,类似下图

在这里插入图片描述

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

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

相关文章

【计算机毕业设计】springboot反诈科普平台的设计与实现

相比于以前的传统手工管理方式,智能化的管理方式可以大幅降低反诈科普平台的运营人员成本,实现了反诈科普平台的 标准化、制度化、程序化的管理,有效地防止了反诈科普平台的随意管理,提高了信息的处理速度和精确度,能够…

MYSQL-9.问题排查

问题排查的思路与方向 问题排查思路 分析问题:根据理论知识经验分析问题,判断问题可能出现的位置或可能引起问题的原因,将目标缩小到一定范围;排查问题:基于上一步的结果,从引发问题的“可疑性”角度出发…

Vue3+ts(day06:路由)

学习源码可以看我的个人前端学习笔记 (github.com):qdxzw/frontlearningNotes 觉得有帮助的同学,可以点心心支持一下哈(笔记是根据b站上学习的尚硅谷的前端视频【张天禹老师】,记录一下学习笔记,用于自己复盘,有需要学…

基于Pytorch深度学习神经网络MNIST手写数字识别系统源码(带界面和手写画板)

第一步:准备数据 mnist开源数据集 第二步:搭建模型 我们这里搭建了一个LeNet5网络 参考代码如下: import torch from torch import nnclass Reshape(nn.Module):def forward(self, x):return x.view(-1, 1, 28, 28)class LeNet5(nn.Modul…

【传知代码】VRT: 关于视频修复的模型(论文复现)

前言:随着数字媒体技术的普及,制作和传播视频内容变得日益普遍。但是,视频中由于多种因素,例如传输、存储和录制设备等,经常出现质量上的问题,如图像模糊、噪声干扰和低清晰度等。这类问题对用户的体验和观…

数学建模——农村公交与异构无人机协同配送优化

目录 1.题目 2.问题1 1. 问题建模 输入数据 ​编辑 2. 算法选择 3.数据导入 3.模型构建 1. 距离计算 2. 优化模型 具体步骤 进一步优化 1. 重新定义问题 2. 变量定义 3. 优化目标 具体步骤 再进一步优化 具体实现步骤 1. 计算距离矩阵 2. 变量定义 3. 约束…

NVM安装及VUE创建项目的N种方式

VUE 参考官网:https://cli.vuejs.org/zh/guide/ 目录 NVM安装 1.卸载node.js 2.安装nvm ​编辑​ 3.配置 4.使用nvm安装node.js 5.nvm常用命令 创建VUE项目 1.使用vue init 创建vue2(不推荐) 2.使用vue create创建vue2和3&#xff…

(保姆级教程傻瓜式操作)树莓派--基于opencv实现人脸识别

前言 因为当时没有边实验边记录,所以这篇文章可能存在疏漏。不过很多地方我推荐了我参考过的博客或者视频,希望尽可能地解答您的疑惑,如果您仍有不懂的地方,欢迎评论,如果我知道答案,我会很乐意为您解答。 …

C++错题集(持续更新ing)

Day 1 一、选择题 解析: 在数字不会溢出的前提下,对于正数和负数,有: 1)左移n位,相当于操作数乘以2的n次方; 2)右移n位,相当于操作数除以2的n次方。 解析&#xff1a…

基于51单片机的自动浇花器电路

一、系统概述 自动浇水灌溉系统设计方案,以AT89C51单片机为控制核心,采用模块化的设计方法。 组成部分为:5V供电模块、土壤湿度传感器模块、ADC0832模数转换模块、水泵控制模块、按键输入模块、LCD显示模块和声光报警模块,结构如…

51单片机超声波测距_液位检测_温度检测原理图PCB仿真代码

目录 实物图: PCB ​原理图​ 仿真图 ​编辑 程序 资料下载地址:51单片机超声波测距-液位检测-温度检测原理图PCB仿真代码 主控为stc89c52,通过ds18b20进行温度采集,超声波测距,距离不可以超过1m,通过按键可以设…

做简单易用的GIS资源管理软件

在室外资源管理领域,采用基于GIS的解决方案已成为主流趋势,旨在实现资源的高效利用和管理。GIS技术结合资源对象的规划、定位和监控,为企业提供全面的管理方案,从而优化资源使用、提高运营效率和降低成本。 然而,许多资…

shell脚本实现linux系统自动化配置免密互信

目录 背景脚本功能脚本内容及使用方法 1.背景 进行linux自动化运维时需要先配置免密,但某些特定场景下,做了互信的节点需要取消免密,若集群庞大节点数量多时,节点两两之间做互信操作非常麻烦,比如有五个节点&#x…

计网面试干货---带你梳理常考的面试题

顾得泉:个人主页 个人专栏:《Linux操作系统》 《C从入门到精通》 《LeedCode刷题》 键盘敲烂,年薪百万! 一、HTTP和HTTPS的区别 1.安全性:HTTPS通过SSL/TLS协议对数据进行加密处理,有效防止数据在传输过…

人工智能项目,如何解决大模型的数据私有化

这个问题是最近走访百家企业,客户问的最多的问题。人工智能是对数据集中后,再利用的智能化手段,ChatGPT还在持续的投入,汇集数据、训练模型,微软也不过是做了一个办公客户端的智能工具,那么行业应运之时&am…

写后端项目时上传文件接口使用阿里云oss-规范写法

文章目录 开通对象存储服务密钥管理点击头像点击密钥管理创建新密钥AccessKey 写在yml配置文件中相关配置1.pom依赖2.全局配置类3.AliOssUtil 工具类3.AliOssProperties类,用于读取yml文件中写入的密钥4.controller层,用于写传输文件的接口 开通对象存储…

《Python编程从入门到实践》day29

# 昨日知识点回顾 修改折线图文字和线条粗细 矫正图形 使用内置格式 # 今日知识点学习 15.2.4 使用scatter()绘制散点图并设置样式 import matplotlib.pyplot as plt import matplotlib matplotlib.use(TkAgg)plt.style.use(seaborn-v0_8) # 使用内置格式 fig, ax plt.subpl…

荣耀MagicBook X 14 Pro锐龙版 2023 集显(FRI-H76)笔记本电脑原装出厂Windows11系统工厂模式安装包下载,带F10智能还原

恢复开箱状态预装OEM系统,适用型号:HONOR荣耀FRI-H76、FRI-H56 链接:https://pan.baidu.com/s/1Lcg45byotu5kDDSBs3FStA?pwdl30r 提取码:l30r 华为荣耀原装WIN11系统工厂安装包,含F10一键恢复功能、系统自带所有驱…

蓝桥杯-外卖店优先级(简单写法)

“饱了么”外卖系统中维护着 N 家外卖店,编号 1∼N。 每家外卖店都有一个优先级,初始时 (0 时刻) 优先级都为 0。 每经过 1 个时间单位,如果外卖店没有订单,则优先级会减少 1,最低减到 0;而如果外卖店有订…