Linux(CentOS)系统管理入门笔记(第九期)——文件权限进阶:SUIDSGIDSticky、ACL 与 chattr
LinuxCentOS系统管理入门笔记第九期——文件权限进阶SUID/SGID/Sticky、ACL 与 chattrLinux系统管理入门系列更多文章欢迎访问Linux入门——系统管理1我的主页AOwhisky这里有更多运维系统性知识整理和其他有趣内容欢迎与我一起探讨学习~引言突破基础权限模型的“三把钥匙”上一期我们学习了 Linux 权限体系的基石——rwx、chmod、chown和umask。这套模型足够应对 80% 的场景但仍有几个“力不从心”的时刻问题一普通用户执行passwd命令时需要修改/etc/shadow但 shadow 文件明明只有 root 可写——这是怎么做到的问题二多个用户属于同一个项目组他们需要在共享目录中协作。A 创建的文件B 为什么无法编辑如何让同组用户自动获得文件的写权限问题三/tmp目录是“公共垃圾场”任何人都能创建文件但为什么你无法删除别人创建的文件问题四如何给不同的用户而不是按“所有者/组/其他人”三类分别授予不同的权限问题五有没有一种方法让 root 自己也无法误删某个重要文件这些问题基础权限模型rwxchmod回答不了。Linux 提供了三把“进阶钥匙”来解决它们SUID/SGID/Sticky给可执行文件和目录“注入”特殊属性改变运行时的身份或行为ACL访问控制列表打破“只能设三组权限”的限制为任意用户/组单独授权chattr扩展属性让文件“免疫”于删除和修改即使是 root 也无法绕过本期将逐一拆解这三把钥匙配合大量实战演示。读完这一期你将拥有 Linux 权限管理的“大师级”能力。— Compiled and Authored by Whisky — July 19 th, 2026目录SUID执行时“变身”文件所有者SGID目录中的“组继承”魔法Sticky Bit公共目录的“防盗锁”特殊权限数字表示法与查找ACL打破三组权限的限制chattr文件“金钟罩”总结与速查手册1. SUID执行时“变身”文件所有者1.1 SUID 的作用SUIDSet User ID是一个特殊权限位。当具有 SUID 权限的可执行文件被运行时进程的有效用户 IDEUID不再是执行者本人而是文件的所有者。最经典的例子是/usr/bin/passwd# 查看 passwd 命令的权限[whiskycentos7 ~]$ls-l/usr/bin/passwd -rwsr-xr-x.1root root27856Apr12020/usr/bin/passwd# ↑# s 表示 SUID 已设置所有者权限中的 x 被替换为 s工作原理步骤说明1whisky用户执行passwd命令2因为passwd有 SUID 位所有者root进程的 EUID 变为root3进程以 root 身份修改/etc/shadow仅 root 可写4修改完成进程退出EUID 恢复为whisky白话理解SUID 就像一张“临时工作证”。普通员工whisky拿到了一张印着“总经理”root的工牌去执行原本只有总经理才能做的操作改 shadow操作完成后工牌自动收回。1.2 SUID 的安全风险与最佳实践方面说明用途允许普通用户执行需要特权的特定操作如passwd、ping风险SUID 程序若存在漏洞攻击者可利用它提权到 root最佳实践最小化 SUID 程序数量定期审计find / -perm -40001.3 设置与移除 SUID# 设置 SUID符号模式[rootcentos7 ~]# chmod us /usr/bin/vim[rootcentos7 ~]# ls -l /usr/bin/vim-rwsr-xr-x.1root root233721610月142020/usr/bin/vim# 设置 SUID数字模式—— 在权限前加 4[rootcentos7 ~]# chmod 4755 /usr/bin/vim# 移除 SUID[rootcentos7 ~]# chmod u-s /usr/bin/vim[rootcentos7 ~]# ls -l /usr/bin/vim-rwxr-xr-x.1root root233721610月142020/usr/bin/vim⚠️生产环境警告永远不要给编辑器vim、nano 等设置 SUID。否则任何用户都能用 vim 以 root 身份修改任意文件如/etc/passwd、/etc/shadow等同于给所有用户 root 权限。1.4 SUID 对目录无效SUID 只对可执行文件有效对目录设置 SUID 没有任何作用。2. SGID目录中的“组继承”魔法2.1 SGID 对文件的作用与 SUID 类似SGIDSet Group ID让进程执行时获得文件所属组的权限# 具有 SGID 的可执行文件不常见ls-l/usr/bin/write -rwxr-sr-x.1roottty19624Apr12020/usr/bin/write# ↑# s 表示 SGID组权限中的 x 被替换为 s2.2 SGID 对目录的作用核心应用当 SGID 设置在目录上时该目录中新创建的文件/子目录会自动继承目录的所属组。场景项目团队devops的成员需要在一个共享目录中协作任何成员创建的文件同组其他成员都应该能读写。# 准备用户和组[rootcentos7 lab]# groupadd devops[rootcentos7 lab]# useradd -G devops dev1[rootcentos7 lab]# useradd -G devops dev2# 准备共享目录[rootcentos7 lab]# mkdir /share[rootcentos7 lab]# chgrp devops /share[rootcentos7 lab]# chmod grwx /share[rootcentos7 lab]# chmod gs /share # 设置 SGID[rootcentos7 lab]# ls -ld /sharedrwxrws---.2root devops40967月1910:00 /share# ↑# s 表示 SGID 已设置# 设置 umask 确保组有写权限[rootcentos7 lab]# echo umask 002 /etc/bashrc# dev1 创建文件[dev1centos7 share]$touchdev1-file[dev1centos7 share]$ls-ldev1-file -rw-rw-r--.1dev1 devops07月1910:02 dev1-file# ↑ ↑# 所有者是 dev1所属组自动变为 devops# dev2 可以修改 dev1 的文件[dev2centos7 share]$echohellodev1-file[dev2centos7 share]$catdev1-file helloSGID vs 普通目录对比场景目录无 SGID目录有 SGID文件所属组创建者的主要组自动继承父目录的组团队协作需手动chgrp自动生效2.3 设置与移除 SGID# 设置 SGID符号模式[rootcentos7 ~]# chmod gs /share# 设置 SGID数字模式—— 在权限前加 2[rootcentos7 ~]# chmod 2770 /share# 移除 SGID[rootcentos7 ~]# chmod g-s /share3. Sticky Bit公共目录的“防盗锁”3.1 Sticky Bit 的作用Sticky Bit粘滞位设置在目录上时只有文件的所有者、目录的所有者或 root 才能删除/重命名该目录中的文件即使其他人对该目录有写权限。最典型的例子是/tmp目录[whiskycentos7 ~]$ls-ld/tmp drwxrwxrwt.20root root40967月1910:05 /tmp# ↑# t 表示 Sticky Bit其他人权限中的 x 被替换为 t场景演示# 创建带 Sticky Bit 的公共目录[rootcentos7 lab]# mkdir /public[rootcentos7 lab]# chmod 1777 /public # 777 Sticky[rootcentos7 lab]# ls -ld /publicdrwxrwxrwt.2root root40967月1910:10 /public# whisky 创建文件[whiskycentos7 public]$echowhiskys filewhisky-file[whiskycentos7 public]$chmod666whisky-file# 开放所有权限# laowang 试图删除 whisky 的文件失败[laowangcentos7 public]$rmwhisky-file rm: cannot removewhisky-file:Operation not permitted3.2 为什么需要 Sticky Bit场景无 Sticky有 Sticky/tmp目录任何用户可删除别人的临时文件只能删除自己的文件共享上传目录用户可覆盖/删除他人上传的文件用户只能管理自己的文件团队协作目录权限混乱文件可能被误删文件受到保护3.3 设置与移除 Sticky Bit# 设置 Sticky Bit符号模式[rootcentos7 ~]# chmod ot /public# 设置 Sticky Bit数字模式—— 在权限前加 1[rootcentos7 ~]# chmod 1777 /public# 移除 Sticky Bit[rootcentos7 ~]# chmod o-t /public4. 特殊权限数字表示法与查找4.1 三位特殊权限的数值特殊权限在数字模式中占据权限数字的最前面一位特殊权限数值含义SUID4执行时获得所有者权限SGID2执行时获得组权限 / 目录继承组Sticky1目录中仅所有者可删除文件组合示例权限写法特殊位所有者组其他人含义47554755SUID rwxr-xr-x27502750SGID rwxr-x—17771777Sticky rwxrwxrwx6755426755SUIDSGID rwxr-xr-x4.2 查看特殊权限# SUID所有者权限位为 s小写或 S大写无执行权限-rwsr-xr-x.# SUID 已设置-rwSr-xr-x.# SUID 已设置但所有者无执行权限# SGID组权限位为 s小写或 S大写无执行权限-rwxr-sr-x.# SGID 已设置-rwxr-Sr-x.# SGID 已设置但组无执行权限# Sticky其他人权限位为 t小写或 T大写无执行权限drwxrwxrwt.# Sticky 已设置drwxrwxr-T.# Sticky 已设置但其他人无执行权限4.3 查找特殊权限文件# 查找系统中所有具有 SUID 的文件[rootcentos7 ~]# find / -perm -4000 2/dev/null# 查找系统中所有具有 SGID 的文件[rootcentos7 ~]# find / -perm -2000 2/dev/null# 查找系统中所有具有 Sticky Bit 的目录[rootcentos7 ~]# find / -perm -1000 -type d 2/dev/null# 使用符号模式查找[rootcentos7 ~]# find / -perm -us 2/dev/null[rootcentos7 ~]# find / -perm -gs 2/dev/null[rootcentos7 ~]# find / -perm -ot -type d 2/dev/null4.4 特殊权限速查表特殊权限符号模式数字模式作用对象效果SUIDus4xxx文件执行时 EUID 文件所有者SGIDgs2xxx文件/目录文件EUID 文件组目录新文件继承目录组Stickyot1xxx目录仅所有者可删除目录中的文件5. ACL打破三组权限的限制5.1 为什么需要 ACL基础权限模型只能为所有者 / 组 / 其他人三类设置权限。但实际需求更复杂场景需求基础权限能否满足文件只给whisky读写设置所有者 whisky✅ 可以文件给whisky读写laowang只读whisky 是所有者laowang 是其他人❌ 无法区分目录给devops组读写但admin组只读只能设一个组❌ 只能一个组临时给某人只读权限需修改文件所有者或组❌ 操作复杂ACLAccess Control List访问控制列表解决了这个问题——可以为任意多个用户/组单独设置权限。5.2 查看 ACL# 创建测试文件[rootcentos7 lab]# touch testfile[rootcentos7 lab]# ls -l testfile-rw-r--r--.1root root07月1910:20 testfile# ↑# . 表示该文件有 ACL 扩展属性# 查看 ACL[rootcentos7 lab]# getfacl testfile# file: testfile# owner: root# group: rootuser::rw-# 所有者权限group::r--# 组权限other::r--# 其他人权限5.3 设置 ACL针对用户设置# 设置 whisky 用户对 testfile 有读写权限[rootcentos7 lab]# setfacl -m u:whisky:rw testfile[rootcentos7 lab]# getfacl testfile# file: testfile# owner: root# group: rootuser::rw- user:whisky:rw-# ← 新增group::r-- mask::rw-# ← 自动生成的 maskother::r--# 验证whisky 可读可写[whiskycentos7 lab]$echohellotestfile[whiskycentos7 lab]$cattestfile hello针对组设置# 设置 wheel 组对 testfile 有读写权限[rootcentos7 lab]# setfacl -m g:wheel:rw testfile[rootcentos7 lab]# getfacl testfile# file: testfile# owner: root# group: rootuser::rw- user:whisky:rw- group::r-- group:wheel:rw-# ← 新增mask::rw- other::r--删除 ACL 条目# 删除特定用户的 ACL[rootcentos7 lab]# setfacl -x u:whisky testfile# 删除特定组的 ACL[rootcentos7 lab]# setfacl -x g:wheel testfile# 删除所有 ACL恢复为基础权限[rootcentos7 lab]# setfacl -b testfile5.4 目录的默认 ACL默认 ACL 使得目录中新创建的文件自动继承 ACL 规则。# 为目录设置默认 ACL所有新文件继承[rootcentos7 lab]# mkdir /shared[rootcentos7 lab]# setfacl -m d:u:whisky:rw /shared# 查看目录的默认 ACL[rootcentos7 lab]# getfacl /shared# file: shared# owner: root# group: rootuser::rwx group::r-x other::r-x default:user::rwx default:user:whisky:rw-# ← 默认 ACLdefault:group::r-x default:mask::rwx default:other::r-x# 创建新文件自动继承 ACL[rootcentos7 lab]# touch /shared/newfile[rootcentos7 lab]# getfacl /shared/newfile# file: newfile# owner: root# group: rootuser::rw- user:whisky:rw-# ← 自动继承group::r-x#effective:r--mask::rw- other::r--5.5 maskACL 的“最大权限”mask是 ACL 中一个特殊的权限位它限制了所有 ACL 条目用户和组能拥有的最大权限。[rootcentos7 lab]# getfacl testfileuser:whisky:rw- group:wheel:rw- mask::rw-# mask 为 rw-# 限制 mask 为只读[rootcentos7 lab]# setfacl -m m:r testfile[rootcentos7 lab]# getfacl testfileuser:whisky:rw-#effective:r-- ← whisky 实际只有读权限group:wheel:rw-#effective:r-- ← wheel 实际只有读权限mask::r--# mask 变为 r--5.6 ACL 使用场景场景命令文件给 whisky 读写、laowang 只读setfacl -m u:whisky:rw,u:laowang:r file目录给 devops 组读写、admin 组只读setfacl -m g:devops:rw,g:admin:r dir目录中所有新文件自动授予 whisky 读权限setfacl -m d:u:whisky:r dir清除所有 ACLsetfacl -b file6. chattr文件“金钟罩”6.1 为什么需要 chattrACL 和基础权限可以控制“谁”能访问文件但无法阻止文件所有者包括 root误删或误改文件。chattrChange Attribute设置的扩展属性让文件获得“免疫力”。6.2 两个最常用的属性属性含义作用aappend only只能追加内容不能覆盖、删除或重命名iimmutable不可变更任何修改、删除、重命名都被禁止6.3 append onlya属性适合日志文件——只允许追加不允许覆盖或删除。[rootcentos7 lab]# touch operator.log[rootcentos7 lab]# chattr a operator.log# 尝试覆盖失败[rootcentos7 lab]# echo new content operator.log-bash: operator.log: 不允许的操作# 尝试追加成功[rootcentos7 lab]# echo append line 1 operator.log[rootcentos7 lab]# echo append line 2 operator.log[rootcentos7 lab]# cat operator.logappend line1append line2# 尝试删除失败[rootcentos7 lab]# rm -f operator.logrm: 无法删除operator.log:不允许的操作# 移除 a 属性[rootcentos7 lab]# chattr -a operator.log[rootcentos7 lab]# rm -f operator.log # 现在可以删除6.4 immutablei属性适合关键配置文件如/etc/passwd、/etc/sudoers——完全锁定防止任何意外修改。[rootcentos7 lab]# cp /etc/passwd .[rootcentos7 lab]# chattr i passwd# 任何修改都被禁止[rootcentos7 lab]# echo test passwd-bash: passwd: 不允许的操作[rootcentos7 lab]# rm -f passwdrm: 无法删除passwd:不允许的操作[rootcentos7 lab]# mv passwd passwd.bakmv: 无法移动passwd至passwd.bak:不允许的操作# 移除 i 属性唯一恢复方式[rootcentos7 lab]# chattr -i passwd[rootcentos7 lab]# echo test passwd # 现在可以修改6.5 chattr vs chmod 对比维度chattrchmod作用对象文件扩展属性文件访问权限是否可被 root 绕过❌root 也无法绕过✅ root 可以绕过常见用途防误删、防篡改控制谁可以访问查看方式lsattrls -l6.6 查看扩展属性lsattr[rootcentos7 lab]# lsattr passwd----i-----------passwd# i 属性已设置[rootcentos7 lab]# lsattr operator.log-----a---------- operator.log# a 属性已设置7. 总结与速查手册7.1 核心知识点一览主题关键点SUIDus执行时 EUID 文件所有者只对文件有效SGIDgs文件执行时 EGID 文件组目录新文件继承目录组Sticky Bitot目录中仅所有者可删除文件特殊权限数字SUID4SGID2Sticky1如4755、1777ACLsetfacl/getfacl为任意用户/组单独设权限chattri不可变a仅追加root 也无法绕过7.2 命令速查表命令常用形式作用chmodchmod us file设置 SUIDchmodchmod gs dir设置 SGIDchmodchmod ot dir设置 Sticky Bitsetfaclsetfacl -m u:whisky:rw file设置 ACLgetfaclgetfacl file查看 ACLchattrchattr i file锁定文件lsattrlsattr file查看扩展属性7.3 特殊权限数字速查组合数值权限字符串示例SUID4-rwsr-xr-x4755SGID2-rwxr-sr-x2755Sticky1drwxrwxrwt1777SUIDSGID6-rwsr-sr-x67557.4 常见错误排查问题原因解决方案chmod: invalid mode特殊权限语法错误使用us、gs、ot目录中文件仍属于创建者组目录未设置 SGIDchmod gs dir无法删除/tmp中的文件Sticky Bit 保护确认文件所有者是谁setfacl命令不存在未安装 ACL 工具包yum install -y aclchattr: Permission denied权限不足需 root 权限执行对文件chattr i后自己也无法修改属性设计如此chattr -i file恢复7.5 思考与拓展为什么passwd命令需要 SUID 权限→passwd需要修改/etc/shadow该文件仅 root 可写。SUID 让普通用户执行passwd时临时获得 root 身份完成密码修改。SGID 设置在目录上比设置在文件上更常见为什么→ 目录 SGID 实现了“组继承”让团队协作目录中的新文件自动归共享组避免手动chgrp。而文件 SGID 在普通场景中较少使用。/tmp目录为什么需要 Sticky Bit→/tmp是全局可写目录任何用户都能创建文件。Sticky Bit 确保只有文件所有者能删除自己的文件防止 A 用户误删 B 用户的临时文件。ACL 和基础权限哪个优先级更高→ ACL 是基础权限的“超集”。getfacl中的user::、group::、other::对应基础权限额外条目为 ACL 扩展。访问时ACL 规则优先于基础权限。chattr i和chmod 000的区别是什么→chmod 000让所有用户包括所有者都无法访问文件但 root 可以绕过。chattr i连 root 也无法修改或删除是更强的保护。7.6 生产环境最佳实践场景建议SUID 审计定期执行find / -perm -4000 2/dev/null移除非必要的 SUID 程序团队共享目录设置 SGIDchmod gs umask 002确保文件自动继承组公共临时目录设置 Sticky Bitchmod 1777保护用户文件敏感配置文件使用chattr i保护/etc/passwd、/etc/sudoers等日志目录使用chattr a保护关键日志防止被篡改或删除ACL 管理用getfacl导出备份setfacl --restore恢复便于批量管理下期预告权限管理告一段落下一期我们将进入 Linux 的另一个核心领域——进程管理。你会学到什么是进程不是程序如何用ps查看进程如何用kill发送信号控制进程以及如何管理前台/后台作业。我们还将深入理解僵尸进程、孤儿进程这些“疑难杂症”。敬请期待第十期— Compiled and Authored by Whisky — July 19 th, 2026

相关新闻

基于Spark的日志监控与分析平台

基于Spark的日志监控与分析平台

基于Spark的日志监控与分析平台 摘要 随着企业IT基础设施规模持续扩大,分布式系统产生的日志数据呈爆炸式增长。传统基于单机ELK(ElasticsearchLogstashKibana)栈的日志处理方案在高吞吐、低延迟、复杂关联分析等场景下逐渐暴露出扩展性差、实…

2026/10/22 19:25:18 阅读更多 →
GitHub 访问加速技术方案:基于 hosts 文件优化的 DNS 解析优化系统

GitHub 访问加速技术方案:基于 hosts 文件优化的 DNS 解析优化系统

GitHub 访问加速技术方案:基于 hosts 文件优化的 DNS 解析优化系统 【免费下载链接】github-hosts 🔥🔥🔥 本项目定时更新GitHub最新hosts,解决GitHub图片无法显示,加速GitHub网页浏览。 项目地址: https…

2026/10/25 20:39:12 阅读更多 →
AIPS系统如何解决企业数据孤岛问题

AIPS系统如何解决企业数据孤岛问题

1. 为什么企业系统越多数据越乱?这个问题困扰着太多数字化转型中的企业。我见过不少公司上了ERP、CRM、MES、WMS等各类系统后,反而出现了更严重的数据孤岛问题。采购说库存不准,生产说计划不对,销售说预测失真,各部门都…

2026/10/25 3:37:06 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/10/26 12:00:21 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/10/25 22:36:10 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/10/26 4:52:12 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/10/26 12:00:21 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/10/26 5:00:37 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/10/26 3:16:46 阅读更多 →

日新闻

周新闻

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

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

2026/10/26 12:00:19 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

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

2026/10/25 13:21:54 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

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

2026/10/26 8:34:37 阅读更多 →