首页/新闻资讯/正文详情

Samba多用户权限设置实战:三层权限模型与避坑指南

发布时间:2026/11/3 10:54:24 来源:云帆数科 栏目:资讯中心
Samba多用户权限设置实战:三层权限模型与避坑指南
简介这份资源是面向Linux系统管理员与运维人员的Samba多用户权限配置实战案例文档聚焦于解决Linux与Windows跨平台文件共享中不同角色用户按需访问特定目录的权限控制问题适合已具备基础Linux操作能力、希望深入掌握Samba共享安全配置的读者参考。压缩包内为1个doc文档约5.03MB以图文与配置示例相结合的方式组织内容便于对照查阅与落地实践。文档围绕用户与组创建、smb.conf全局与共享段配置、valid users访问限制、目录属主与770权限设定、服务重启测试及防火墙与加密等安全优化环节展开完整呈现从环境准备到验证排错的配置链路可帮助读者理解多用户隔离与共享目录权限划分的实现思路。目前已有4521人学习下载适合需要搭建安全灵活文件共享环境的技术人员借鉴。1. 从一次“全员可写”事故说起Samba 多用户权限到底难在哪某实验室的共享盘上线第三天一个学生误删了另一个小组的毕设素材追查时发现所有人都在用同一个账号挂载日志里只有一条记录等于没有黑匣子。这类事故的根因往往不是 Samba 不会配而是权限模型没设计Linux 文件系统权限、Samba 共享级权限、用户与组的映射三层各管一段任何一层松了口子前面配得再细也白搭。这份 Samba 共享目录的多用户权限设置案例解决的就是“一台 Linux 文件服务器多个 Windows 客户端不同角色只能看自己该看的东西”这个具体场景适合正在做课程设计、毕业设计里涉及文件服务模块的人也适合要给小团队搭内部共享盘、又不想上重型方案的从业者。下面按需求、设计、实现、避坑、验收的顺序把一套能直接照搬的配置讲透。2. 需求与权限模型设计三层权限如何各管一段动手改smb.conf之前先把“谁能访问哪个目录、能读还是能写”画成一张表。Samba 的权限不是单一开关而是三层叠加任何一层理解错后面全是玄学问题。2.1 三层权限的职责边界第一层是 Linux 文件系统权限由chmod和chown决定管的是“这个进程以某个用户身份读写文件时内核允不允许”。第二层是 Samba 共享级权限写在smb.conf的共享段里管的是“这个网络连接能不能进这个共享、进来后是只读还是可写”。第三层是用户与组的映射包括 Linux 系统用户、Samba 独立密码库smbpasswd、以及valid users里引用的组。三层的关系可以这样理解Samba 先按共享级配置放行连接再以映射到的 Linux 用户身份去碰文件最后由文件系统权限做最终裁决。所以常见的一种翻车是共享段写了writable yes但目录属主是 root、权限 755普通用户进去照样写不进去——Samba 放行了内核拦住了。设计阶段我一般会先定角色表再倒推目录结构和组划分。以一个典型的三角色场景为例角色Linux 组共享目录读写说明管理员admins/srv/share/admin是是全量读写可管理他人目录项目成员users/srv/share/project是是组内协作互相可见只读访客guests/srv/share/public是否仅下载资料这张表定下来后面的组创建、目录归属、共享段配置都是它的直接翻译。需求阶段最容易漏的是“成员私有目录”这一项协作目录大家互看没问题但每个人的草稿、个人备份需要隔离这就得在共享目录下再开一层按用户命名的子目录用文件系统权限做隔离而不是靠 Samba 的共享段——共享段是目录级的做不到“同一个共享里张三看不见李四的文件夹”。2.2 目录结构与组规划目录结构建议一次规划到位避免后期迁移。我通常的做法是# 共享根目录属主 root仅允许特定组进入 sudo mkdir -p /srv/share/{public,project,admin} # 项目协作目录属主为项目负责人属组 users组内可读写 sudo chown -R root:users /srv/share/project sudo chmod -R 2770 /srv/share/project # 公共只读目录所有人可读仅管理员可写 sudo chown -R root:admins /srv/share/public sudo chmod -R 2755 /srv/share/public这里2770前面的2是 setgid 位作用是目录里新建的文件自动继承父目录的属组而不是创建者的主组。这一位在多用户协作场景里几乎是必选项少了它A 创建的文件属组是 A 的私有组B 就算在 users 组里也写不了表现为“同一个共享有人能改有人不能改”非常典型的血泪经验。2755同理保证公共目录里管理员新建的文件对其他人可读。组规划上admins、users、guests三个组覆盖大多数中小场景。用户加入多个组时注意Linux 一个用户可以有多个附加组但 Samba 的valid users users只认组名不关心用户主组是谁所以建用户时用-G指定附加组即可不必改主组。2.3 共享段与全局段的配置策略全局段负责服务级行为共享段负责目录级策略两者不要混写。全局段里与权限强相关的几项security user表示用本地用户库认证map to guest Bad User表示认证失败的用户降级为访客而不是直接拒绝这个选项在只想开放公共目录时有用但如果所有共享都要求登录建议改成Never避免匿名探测obey pam restrictions和pam password change让 Samba 复用系统的密码策略改密码时走 PAM 校验省得两套密码规则打架。共享段的核心是四个参数path指目录valid users限定可访问的用户或组read only/writable控制写权限create mask/directory mask控制新建文件和目录的默认权限。这四个参数和文件系统权限是“与”的关系两边都放行才真正可写。设计时把每个共享段当成一个独立的策略单元不要在一个共享里塞多种角色——角色差异用多个共享段表达比在一个共享里用复杂参数硬凑要清晰得多也更好排查。3. 用户、组与共享段的落地配置从建账号到写 smb.conf设计定完进入可执行部分。这一章的命令和配置可以直接抄但每个参数为什么这么写要看清改场景时才知道动哪里。3.1 系统用户、组与 Samba 密码库先建组和用户。注意 Samba 用户必须是已存在的 Linux 用户smbpasswd只是给这个用户单独设一个 SMB 协议用的密码两者密码可以不同这是新手最容易混淆的点。# 建三个角色组 sudo groupadd admins sudo groupadd users sudo groupadd guests # 建用户-G 指定附加组-s 禁用 shell 登录纯文件服务账号更安全 sudo useradd -G users -s /sbin/nologin user1 sudo useradd -G users -s /sbin/nologin user2 sudo useradd -G admins -s /sbin/nologin admin1 sudo useradd -G guests -s /sbin/nologin guest1 # 给每个用户设置 Samba 密码会提示输入两次 sudo smbpasswd -a user1 sudo smbpasswd -a user2 sudo smbpasswd -a admin1 sudo smbpasswd -a guest1 # 启用账号-a 已包含启用这里显式确认状态 sudo smbpasswd -e user1-s /sbin/nologin的作用是禁止这些账号通过 SSH 登录服务器只保留文件共享用途减少攻击面。smbpasswd -a会在 Samba 的私有密码库通常是tdbsam后端里写入记录和/etc/shadow无关。如果后续要改密码用smbpasswd 用户名即可不需要碰系统密码。验证账号是否生效用pdbedit -L列出 Samba 用户库能看到刚建的用户就说明密码库写入成功。3.2 全局段配置与参数含义打开/etc/samba/smb.conf全局段建议如下保留发行版默认的其余行只改关键项[global] workgroup WORKGROUP server string File Server %v netbios name FILESERVER security user map to guest Never guest ok no obey pam restrictions yes pam password change yes passwd program /usr/bin/passwd %u passwd chat *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* . log file /var/log/samba/log.%m max log size 1000 log level 1逐项说关键点security user是本地用户认证模式适合没有域控的环境map to guest Never比Bad User严格认证失败直接拒绝不给匿名降级的机会配合guest ok no形成双保险log file /var/log/samba/log.%m里的%m是客户端主机名每个客户端一个日志文件排查“为什么这台机器连不上”时直接看对应文件比翻一个大日志快得多log level 1是常规信息级别排查权限问题时临时调到3能看到详细的认证和权限判定过程问题定位完记得调回来否则日志涨得很快。提示改完smb.conf先用testparm校验语法它会指出未知参数和重复段比直接重启服务再报错要省事。3.3 三个共享段的完整写法按第 2 章的角色表共享段这样写[public] path /srv/share/public browseable yes read only yes guest ok no valid users admins, users, guests create mask 0644 directory mask 0755 [project] path /srv/share/project browseable yes read only no guest ok no valid users admins, users create mask 0660 directory mask 2770 force group users [admin] path /srv/share/admin browseable no read only no guest ok no valid users admins create mask 0660 directory mask 2770public段read only yes三个组都能进但只能读写权限留给文件系统层面——管理员通过本地操作维护内容不走共享写入。project段read only no允许组内协作force group users强制新建文件的属组为 users和目录的 setgid 位形成双保险防止个别客户端行为差异导致属组跑偏。admin段browseable no让它在网络邻居里不显示只有知道路径的人能访问属于“隐一层”的轻量措施真正的访问控制还是靠valid users admins。create mask和directory mask是新建文件的默认权限掩码注意它们和chmod的语义相反create mask 0660表示新建文件权限为 660去掉执行位directory mask 2770表示新建目录权限为 2770含 setgid。这两个值和目录已有的文件系统权限共同作用最终权限取交集所以不要指望用 mask 去“放大”权限。3.4 成员私有子目录的隔离协作目录里要隔离个人空间靠共享段做不到得在文件系统层做# 为每个成员建私有子目录属主本人属组 users仅本人可写 for u in user1 user2; do sudo mkdir -p /srv/share/project/$u sudo chown $u:users /srv/share/project/$u sudo chmod 2770 /srv/share/project/$u done这里有个细节chmod 2770让目录属主和 users 组都可读写但组内其他人能进这个目录——如果要求“张三完全看不见李四的私有目录”得改成2700只留属主权限。两种做法各有取舍2770适合“私有但组内可读”的备份场景2700适合严格隔离。我一般默认2700因为隔离需求一旦提出通常是“连看都不想被看到”2770反而会引发“为什么我能进别人文件夹”的疑问。改完权限后用sudo -u user2 ls /srv/share/project/user1验证一下报权限拒绝就对了。4. 服务启动、客户端验证与权限自测配置写完不等于能用这一章把服务拉起、客户端挂载、权限验证串成一条可复现的检查链。4.1 服务启动与开机自启不同发行版的服务名有差异先确认再操作# 现代 systemd 系统 sudo systemctl enable --now smb nmb # 部分发行版服务名为 smbd/nmbd sudo systemctl enable --now smbd nmbd # 查看状态确认 active (running) sudo systemctl status smb # 查看当前生效的共享列表 smbclient -L localhost -U user1smb和nmb是两个独立服务smb负责 SMB 协议的文件共享nmb负责 NetBIOS 名称解析Windows 客户端用主机名访问时依赖后者。只启smb不启nmb用 IP 能连、用主机名连不上是很常见的“半通”现象。smbclient -L会提示输入密码输对后列出共享名能看到public、project而看不到admin因为browseable no说明共享段加载正确。4.2 Windows 与 Linux 客户端挂载验证Windows 端在资源管理器地址栏输入\\服务器IP\project弹认证框输入user1和 Samba 密码。Linux 端用smbclient或mount.cifs验证# 交互式验证列出目录、尝试写入 smbclient //服务器IP/project -U user1 # 进入后执行 ls、put 测试文件 # 挂载验证需要 cifs-utils sudo mount -t cifs //服务器IP/project /mnt/test -o usernameuser1,uid1000,gid1000mount.cifs的uid和gid参数决定挂载后本地看到的文件属主不指定的话默认是 root普通用户操作会受限这是 Linux 客户端侧另一个容易误判为“服务端权限没配好”的坑。验证时按角色逐个来user1能进project能写、进不了adminguest1只能读public、进不了projectadmin1三个都能进。每个角色至少测“能进”和“不能进”两个方向只测正向等于没测。4.3 权限矩阵自测清单把验证结果填成矩阵答辩或交付时这张表就是最直观的证据测试项user1user2guest1admin1预期读 public通过通过通过通过全部可读写 public拒绝拒绝拒绝拒绝共享只读读 project通过通过拒绝通过组内可见写 project通过通过拒绝通过组内可写进 user1 私有目录通过拒绝拒绝视配置严格隔离访问 admin拒绝拒绝拒绝通过仅管理员自测时有个技巧每次只改一个变量改完立刻重测对应行不要一次改一堆参数再整体测否则出问题不知道是哪一项引起的。另外Windows 客户端有凭据缓存切换用户测试前先在“凭据管理器”里清掉旧记录或者用net use \\服务器IP\project /delete断开重连不然会用旧身份连上去测出来的结果是错的。5. 避坑与排查五类最容易翻车的权限问题这一章按“现象 → 原因 → 解决”写都是实际项目里反复出现的。现象一共享能进但新建文件失败提示权限不足。原因通常是文件系统权限没放行Samba 的writable yes只管协议层目录属主和权限位不匹配时内核照样拒绝。解决用namei -l /srv/share/project逐级检查路径上每一层目录的权限确认目标用户对每一级都有执行进入权限写目录还要有写权限再确认 setgid 位是否生效ls -ld看属组是否正确。现象二同一个组有人能改文件有人不能。原因是新建文件的属组没有继承父目录创建者的主组成了属组组内其他人自然写不了。解决目录加 setgid 位chmod gs共享段加force group users双管齐下已存在的错误属组文件用chgrp -R users批量修正。现象三Windows 提示“不允许一个用户使用多个用户名与服务器建立多个连接”。原因是同一客户端已经用另一个账号连过这台服务器Windows 不允许同一服务器多身份并存。解决net use * /delete清掉所有连接或在凭据管理器删除对应记录后重连测试多角色时养成每次切换先断开的习惯。现象四改了 smb.conf 重启服务配置没生效。原因可能是改错了文件存在smb.conf.bak被误编辑、段名重复导致后者覆盖前者、或者服务没真正重启。解决testparm会打印实际加载的配置和重复段警告systemctl restart smb后看systemctl status的启动时间是否更新日志里搜Loaded services file确认加载路径。现象五能连上但速度极慢或大文件传输中断。权限配置本身不影响吞吐但log level调高后大量写日志会拖慢传输另外max log size设得太小会导致日志频繁轮转。解决排查完权限把log level调回 1确认没有在共享段里误开veto files之类会逐文件匹配的过滤项网络层问题用smbstatus看当前连接和锁情况排除文件锁冲突。注意排查权限问题时临时把log level调到 3 并复现一次操作日志里会明确写出“以哪个用户身份、对哪个路径、判定结果是什么”比猜快得多。定位完立刻调回别留在生产配置里。6. 验收与答辩用一张权限矩阵和一份日志说话这套方案的验收不靠“我觉得配好了”靠两样东西一张填满的权限矩阵和一份能复现的日志。答辩或交付时先讲需求里的角色表再展示目录结构和组划分然后现场演示三个角色的正反向访问——user1进project写文件成功、进admin被拒guest1读public成功、写被拒admin1全通。每个演示动作对应矩阵里的一行评委或验收人一眼能对上号。演示前把环境复位清掉 Windows 凭据缓存、删掉测试残留文件、确认服务是enable状态而不是临时start。我见过演示时因为客户端还挂着上一个账号的连接导致“该能进的进不去”现场解释半天其实一条net use * /delete就解决了。所以演示脚本里我会固定加一步“断开所有连接再按角色重连”把不确定性提前消掉。日志是第二份证据。/var/log/samba/log.%m里按客户端主机名分文件演示时打开对应文件能看到认证成功的用户、访问的共享、以及被拒绝的请求记录。把“拒绝”那条日志也展示出来比只展示成功更有说服力——它证明权限是真的在拦而不是碰巧没访问到。如果时间允许再补一个故障注入临时把某个目录权限改错现场用namei -l和日志定位展示排查思路这一手在答辩里通常加分因为它证明你不仅会配还会修。参数层面验收时重点核对四个值testparm输出里每个共享段的valid users、read only、create mask、directory mask是否和设计表一致文件系统侧用ls -ld核对每个目录的属主、属组、权限位和 setgid 位。这两组值对上了配置层面就没有暗坑。剩下的就是客户端行为差异用矩阵逐行跑一遍即可。从那以后我每次交付文件共享方案都强制自己先填完权限矩阵再动手写配置配置写完再拿矩阵反向验一遍——正向配、反向测中间任何一步对不上就停下来查绝不带着“应该没问题”的心态往下走。这套习惯帮我挡掉过好几次“演示当天才发现某个角色进不去”的尴尬。希望这套结构和清单能帮到你照着改改角色和目录就是一份能交、能讲、能复现的完整方案。本文还有配套的精品资源点击获取

相关推荐

网络数据挖掘实战:内容、结构与使用挖掘的Python实现
网络数据挖掘实战:内容、结构与使用挖掘的Python实现

简介:《Python网络数据挖掘实战》面向具备一定Python基础、希望系统掌握网络数据提取与分析方法的开发者与数据方向学习者,围绕网络内容挖掘、结构挖掘与使用挖掘三大分类展开,并延伸至个性化客户服务、网络搜索、网络跟踪与过程挖掘等应用场… · 2026/11/3 10:54:24

Python网络数据挖掘实战:内容、结构与使用挖掘全解析
Python网络数据挖掘实战:内容、结构与使用挖掘全解析

简介:《Python网络数据挖掘实战》面向具备一定Python基础、希望系统掌握网络数据提取与分析方法的开发者与数据方向学习者,内容覆盖从网络挖掘概念到Python落地的完整链路。全书先梳理网络内容挖掘、结构挖掘与使用挖掘的分类,并延伸至个性化… · 2026/11/3 10:54:24

射频自动化测试序列配置框架:从扫频实战到二次开发避坑
射频自动化测试序列配置框架:从扫频实战到二次开发避坑

简介:面向高通芯片测试、射频验证与产线调试工程师的技术文档,围绕QSEQ测试序列系统梳理序列设计、环境与参数配置、执行记录及结果分析等核心环节,帮助读者理解如何组织复杂测试流程、定位执行异常并衔接QRCT相关操作。压缩包内共1个PDF文件… · 2026/11/3 10:53:23

分布式电源选址定容问题的现实挑战
分布式电源选址定容问题的现实挑战

1. 分布式电源选址定容问题的现实挑战 在电力系统规划领域,分布式电源(Distributed Generation, DG)的选址和容量确定一直是个复杂的技术难题。传统电力网络设计以集中式发电为主,而随着可再生能源占比提升,如何在配电… · 2026/11/3 11:44:24

iOS WKWebView拦截H5 file输入:原理、三步实现与图片处理全链路
iOS WKWebView拦截H5 file输入:原理、三步实现与图片处理全链路

1. 为什么iOS原生层要主动拦截H5的 <input type"file"> &#xff1f;——从“点不动”到“拍完就崩”的真实困境 你有没有遇到过这样的场景&#xff1a;在某个混合开发的App里&#xff0c;H5页面上放了一个“上传头像”的按钮&#xff0c;样式是精心设计的圆… · 2026/11/3 11:44:24

Android权限机制详解:从基础到高级实践
Android权限机制详解:从基础到高级实践

1. Android权限机制概述 在移动应用开发领域&#xff0c;权限管理始终是保障用户隐私和数据安全的核心防线。Android系统作为全球市场份额最大的移动操作系统&#xff0c;其权限机制经历了多次重大演进&#xff0c;从最初的粗放式管理到如今的精细化控制&#xff0c;形成了完整… · 2026/11/3 11:44:24

Vibe Coding:提升开发效率的沉浸式编程方法论
Vibe Coding:提升开发效率的沉浸式编程方法论

1. 什么是Vibe Coding&#xff1f; Vibe Coding是近年来在开发者社区兴起的一种编程方法论&#xff0c;它强调通过营造沉浸式的工作环境来提升开发效率和创造力。简单来说&#xff0c;就是通过一系列工具、习惯和环境设置的组合&#xff0c;让程序员进入"心流状态"的… · 2026/11/3 11:44:24

AB实验中线性回归的应用与实战技巧
AB实验中线性回归的应用与实战技巧

1. 为什么AB实验需要线性回归&#xff1f; 在互联网行业摸爬滚打多年&#xff0c;我发现很多团队做AB实验时只会对比均值差异&#xff0c;这就像用体温计量血压——工具根本不对口。去年我们优化推荐算法时&#xff0c;对照组和实验组的点击率均值都是15%&#xff0c;但线性回归… · 2026/11/3 11:44:24

Redis键过期机制原理与实战应用详解
Redis键过期机制原理与实战应用详解

1. Redis键过期机制的核心原理Redis作为内存数据库的标杆产品&#xff0c;其键过期机制的设计直接影响着内存使用效率和应用稳定性。当我们在Redis中设置过期时间时&#xff0c;实际上是在操作一个独立的过期字典&#xff08;expires字典&#xff09;&#xff0c;这个字典与主字… · 2026/11/3 11:43:23

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/2 13:10:28

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 6:04:24

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 5:52:46

STM32F411RE与MAX14431实现SPI隔离:工业现场抗共模干扰实战
STM32F411RE与MAX14431实现SPI隔离:工业现场抗共模干扰实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 1:01:59

ESP32+大模型AI硬件开发:从Demo到产品的8个工程问题
ESP32+大模型AI硬件开发:从Demo到产品的8个工程问题

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 1:01:59

基于MAX14431BAEE+与PIC18F85J10的SPI隔离方案设计与实践
基于MAX14431BAEE+与PIC18F85J10的SPI隔离方案设计与实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 1:01:59

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/2 13:10:28

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 6:04:24

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 5:52:46

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码