“把BUG当特性,真是见鬼了!”Linux之父痛斥文件系统「大小写不敏感」:这是天大的错误

C语言与CPP编程 2025-04-28 09:03

最近有小伙伴说没有收到当天的文章推送,这是因为微信更改了推送机制,导致没有星标公众号的小伙伴刷不到当天推送的文章,无法接收到一些比较实用的知识和资讯。所以建议大家加个星标⭐️,以后就能第一时间收到推送了。

转自| CSDN(ID:CSDNnews) 整理 | 郑丽媛

在开源圈中,Linus Torvalds 发火的场面,总能引发一阵小型地震

近日,这位 Linux 之父又一次开炮了——这回,目标直指文件系统开发中的老大难问题:大小写不敏感(case-insensitive,即不区分字符的大小写)。他不仅痛批这种设计是“天大的错误”,连带着 Bcachefs 项目的维护者 Kent Overstreet 也被一通狂怼。

为什么一个看似简单的“大小写问题”会引发 Linus 如此强烈的反应?事情还要从 Bcachefs 最近提交的一个修复补丁说起……


Bcachefs 的修复补丁触发争议

进入正题前,先扫个盲Bcachefs 是一种用于 Linux 操作系统的写时复制(COW)文件系统由首席开发者 Kent Overstree 在 2015 年发布。

早在近两年前,来自 Valve/Linux 的一位开发者就曾为 Bcachefs 提交了关于大小写折叠(case folding)/大小写不敏感文件和目录支持的补丁,这一功能随后被合入了 Bcachefs 的内核驱动中。开发者们发现,这套大小写不敏感机制实际上根本没能正常工作。

为了解决这个长期存在的问题,Bcachefs 开发团队在 Linux 6.15-rc4 发布前夕,提交了新的修复补丁,终于让大小写不敏感的目录支持真正生效。

而在此次提交中,Bcachefs 项目的主开发者 Kent Overstreet 特地附上了一段长篇备注,坦言这次失误背后的深层教训。他提到,当初与负责开发的同事沟通时,虽然提醒过“fstests 套件中应包含相关测试”,但他忽略了强调“必须确保这些测试真正执行过”这一点,从而导致了问题潜伏至今。

Kent Overstreet 总结道:

仅仅依赖自动化测试是不够的,你必须亲眼确认自己的代码实际在做什么。也就是说,在你彻底熟悉手头代码和测试套件之前,你需要亲自‘用眼睛看’,确认测试确实按你预期的方式运行,你的代码也确实按你预期的逻辑在执行。

如果你对代码行为还有一丝不确定,就必须主动深入验证——加上 printk 日志、tracepoint 跟踪点、计数器,或者用任何其他手段都可以。自动化测试只是一个兜底机制,并不是万无一失的保障。你一定要在本地运行自己的代码,并亲自观察结果。

可以看出,这次 Bcachefs 这次的修复不仅是功能完善,也更像是一次深刻的工程管理反思。


Linus 怒了:大小写不敏感本身就是错误

不过,这件事到了 Linus Torvalds 这里,就不仅仅是测试流程疏忽的问题了——他从更根本的层面,直接对大小写不敏感文件系统的理念发起了猛烈攻击。

在 Linux 内核邮件列表(LKML)上,Linus 写道:“唯一的教训就是:文件系统开发者从来学不会。大小写不敏感的命名,本身就是天大的错误,根本就不应该去做。问题不是测试做得不够,是一开始就不该去实现它。

在 Linus 看来,试图“正确地”实现大小写不敏感,只会导致更多不可控的后果。因为 Unicode 编码标准本身就很复杂,包含了大量的特殊字符、不可打印字符和可忽略字符(ignorable code points),试图在这样一个体系上做到“大小写折叠正确”,几乎是不可能的。

更严重的是,一旦处理得不好,就会引发严重的安全问题。

Linus 举了一个具体的例子:❤ 和 ❤️表面上看非常相似,但实际上是不同的编码。如果大小写折叠逻辑一刀切地忽略这类细节,那么这两个文件名就会被错误地认为是“相同的”——这不仅仅是名字混淆,更会让原本基于字符串检查机制(如验证路径是否安全)的用户空间程序失效,引发安全漏洞。

对于这种潜在风险,Linus 毫不留情地评价:于是,每一个在用户态中通过文件名检查来保护路径的程序,基本上都能被这种机制骗过,执行了它们明明不该做的操作。这绝不是小概率事件——有大量程序正是这么工作的。

帖子最后,除了点名批评 Bcachefs 项目,Linus 还顺势讽刺了那些怀念老式 FAT 文件系统的人(FAT 文件系统是早期 PC 时代常见的文件系统,但在现代计算环境中,这种设计早已被证明存在大量问题,尤其在安全性和一致性方面表现糟糕

真是见鬼了。大小写不敏感,本质上就是个 BUG,文件系统开发者们居然到今天还把它当作一个‘特性’,我完全无法理解。这种行为简直像是,他们对古老的 FAT 文件系统怀有一种变态的崇拜,非得一遍又一遍地把这种糟糕设计复制出来——而且每次都做得更烂。

总结来说,在 Linus 看来,所谓“正确实现大小写不敏感”,本质上就是无解的。


开发者对此看法不一

事实上,大小写不敏感文件系统的需求,最早来源于早期 Windows(FAT、NTFS)以及 macOS(HFS+)的传统。由于历史兼容性和用户友好性考虑,这些系统允许 File.txt 和 file.TXT 被视为同一个文件。但在 Linux 世界里,从一开始文件系统就是大小写敏感的——File.txt 和 file.txt 是两个完全不同的文件。

近年来,随着跨平台需求增加,部分 Linux 文件系统(如 ext4、F2FS、Btrfs)也陆续引入了可选的大小写不敏感支持。然而正如 Linus 所说,盲目追求“兼容”或“方便”,很可能种下难以预料的安全隐患

(1)性能开销:需要增加更多索引处理逻辑。

(2)标准不统一:Unicode 标准复杂,处理可忽略字符、特殊字符等问题极为棘手。

(3)安全风险:一旦字符串匹配逻辑出现偏差,便可能引发严重的访问控制失效。

对于此次 Linus 的言论不少开发者表示强烈支持

  • 编程的话大小写变量是不同的变量,确实很重要。

  • 刚刚遇到一个Windows上大小写不敏感的文件覆盖问题,这个的确是设计不合理。

  • 真正问题是不统一,因为有的领域区分大小写,有的领域却不区分。当然从字符本身的需求而言,肯定是统一强制区分大小写更省事。”

但也部分开发者认为,强制区分大小写并不是什么好主意

  • 我将继续坚持我对区分大小写的文件系统的厌恶,因为我不得不在 ssh 控制台会话中处理一堆文件,其中每个目录都有数十个文件,这些文件仅在大小写上都有所不同。”

  • 我完全不同意 Linus 的观点和愤怒。在我看来,区分大小写的文件系统一直是个愚蠢的倒退想法,没有一个人能给出他们需要它的理由。”

那么对于这个事情,你的看法又是如何呢?

参考链接:

https://www.phoronix.com/news/Linus-Torvalds-Anti-Case-Fold


推荐阅读  点击标题可跳转

1、C++训练营,来了!

2、HarmonyOS 学习资料分享(无套路免费分享)

我组建了一些社群一起交流,群里有大牛也有小白,如果你有意可以一起进群交流。

欢迎你添加我的微信,我拉你进技术交流群。此外,我也会经常在微信上分享一些计算机学习经验以及工作体验,还有一些内推机会

加个微信,打开另一扇窗

感谢你的分享,点赞,在看三  


C语言与CPP编程 C语言/C++开发,C语言/C++基础知识,C语言/C++学习路线,C语言/C++进阶,数据结构;算法;python;计算机基础等
评论
  • 文/陈昊编辑/cc孙聪颖‍在家电赛道上,海尔智家的业绩表现不俗。2025一季度,海尔智家延续了年报稳健增长的趋势,继续在高基数下实现高增长。而在业绩之外,近些年ESG也成为资本市场衡量企业价值的另一道标尺。5月16日,《财富》2025年中国ESG影响力榜揭晓,共有100家企业上榜。其中,海尔智家再次上榜,且连续四年位居行业榜首。“每一环都是绿色的”改变用户生活看似宽泛的ESG概念,如何落地?一起来看看海尔智家怎么做的就知道了。海尔智家通过“6-Green”战略,让采购、设计、制造、回收处置等环环
    华尔街科技眼 2025-05-20 20:18 35浏览
  • 电磁场的作用主要体现在以下几个方面:首先在能源领域,电磁场是发电、输电的基础。无论是火力发电还是核电站,*终都需要通过电磁感应原理将机械能转化为电能。高压输电线路则利用交变电磁场实现电能的远距离传输,为现代工业和生活提供动力保障。在通信技术方面,电磁波作为电磁场的传播形式,构成了无线通信的基础。从无线电广播到5G移动网络,从卫星通信到光纤传输,本质上都是对特定频段电磁场的**控制和利用。雷达系统通过发射和接收电磁波实现目标探测,在气象预报、航空管制等领域不可huo缺。在医疗领域,电磁场技术为诊断
    锦正茂科技 2025-05-19 13:19 90浏览
  • 在智能化、数字化与信息化的时代浪潮下,物联网凭借着多频段间的通信协同能力与多协议间的通信兼容能力构建起了一张张无缝互通的IoT设备网络。从Sub-GHz频段到2.4GHz频段,从BLE/Wi-Fi协议到LoRa/Wi-SUN协议,多种频段资源与通信协议不仅推动了智能抄表、智能家居与工业自动化等领域的繁荣发展,还为万物互联的未来愿景奠定了坚实的底层通信基础。然而,随着无线通信技术的高速发展与全球IoT设备数量的持续增长,频段资源的有限性愈发凸显,在科技园区、交通枢纽与CBD等通信密集区域,同一频段
    华普微HOPERF 2025-05-20 11:07 101浏览
  •   在数字技术重塑商业格局的当下,品牌如何借助创新工具实现价值跃升成为企业战略核心。软件开发已从单纯的技术迭代载体,演变为企业连接用户、驱动增长的关键纽带。因此,筛选靠谱的软件开发公司,成为企业数字化转型的重要决策 —— 专业公司凭借技术积累与行业经验定制解决方案,权威公司则以规范服务与交付能力保障项目落地。   筛选靠谱软件开发公司的三大核心标准   标准 1:技术适配性与行业匹配度   技术适配性:优先选择掌握云计算、AI 集成、低代码开发等前沿技术的团队。   行业匹配度:医疗
    华盛恒辉l58ll334744 2025-05-20 15:46 97浏览
  •  在刚刚过去的这个周末,一则关于“娃哈哈纯净水的生产商竟然是今麦郎?”消息在网络上掀起了轩然大波,引发了公众的广泛关注。作为国民老牌子的娃哈哈,这次真的摊上事了。这一事件不仅暴露了娃哈哈在供应链管理上的潜在问题,也引发了消费者对于品牌信任的深度思考。在当下激烈的市场竞争环境中,一个小小的代工风波,为何能引发如此巨大的反响?这背后又折射出了娃哈哈怎样的发展困境?代工风波:合作背后的质量隐忧事情起于消费者发现瓶身上的“今麦郎代工”字样。要知道,在大家印象里,娃哈哈纯净水就该是自家工厂生产的
    疯人评 2025-05-20 18:04 32浏览
  •   头部技术企业核心能力与行业解决方案解析   华盛恒辉科技有限公司   华盛恒辉科技有限公司:是一家专注于高端软件定制开发服务和高端建设的服务机构,致力于为企业提供全面、系统的开发制作方案。在部队政企开发、建设到运营推广领域拥有丰富经验,在教育,工业,医疗,APP,管理,商城,人工智能,部队软件、工业软件、数字化转型、新能源软件、光伏软件、汽车软件,ERP,系统二次开发,CRM等领域有很多成功案例。   五木恒润科技有限公司   五木恒润科技有限公司:是一家专业的部队信息化建设服务单位
    华盛恒辉l58ll334744 2025-05-19 17:18 133浏览
  • 在刚刚过去的这个周末,一则关于“娃哈哈纯净水的生产商竟然是今麦郎?”消息在网络上掀起了轩然大波,引发了公众的广泛关注。作为国民老牌子的娃哈哈,这次真的摊上事了。这一事件不仅暴露了娃哈哈在供应链管理上的潜在问题,也引发了消费者对于品牌信任的深度思考。在当下激烈的市场竞争环境中,一个小小的代工风波,为何能引发如此巨大的反响?这背后又折射出了娃哈哈怎样的发展困境?代工风波:合作背后的质量隐忧事情起于消费者发现瓶身上的“今麦郎代工”字样。要知道,在大家印象里,娃哈哈纯净水就该是自家工厂生产的。5月15日
    疯人评 2025-05-20 16:19 26浏览
  • 电磁场是自然界中一种特殊的物质存在形式,由相互依存且能够相互转化的电场和磁场共同构成。这种无形的物理场充满整个空间,既能够传递电磁力,也能够以电磁波的形式传播能量。电场源于静止或运动的电荷,表现为对带电粒子施加作用力的能力;而磁场则产生于电流或变化的电场,能够影响运动电荷的轨迹。两者通过动态耦合形成统一的电磁场系统,其行为规律由麦克斯韦方程组完整描述。这个方程组包含四个基本方程,分别揭示了电荷如何产生电场、磁场无孤立磁荷的特性、变化磁场激发电场的规律,以及电流与变化电场共同产生磁场的机制。电磁场
    锦正茂科技 2025-05-19 13:07 90浏览
  • 文/Leon编辑/cc孙聪颖‍“韬光养晦、后发制人”,腾讯2025年第一季度的业绩表现可以具象化为以上8个字。在AI整体赋能的情况下,腾讯控股(00700.HK)Q1营收达到了1800.2亿元,同比增长13%,相当于日入20亿;净利润478.21亿元,同比增长14%,每天净赚5.3亿。营收、净利双位数双增长,代表腾讯重回扩张周期。毫无疑问,腾讯的业绩表现释放了一个信号:AI不是单打独斗的业务线,而是生产力工具。谁能高效地部署AI、找到最契合旗下业务的赋能方式,谁就能占尽先机。值得一提的是,与腾讯
    华尔街科技眼 2025-05-20 20:14 39浏览
  • 分享ADC自身因素带来的误差,主要分享由于外部因素导致的ADC采样误差。 一、模拟信号源输入减少带来的误差看一个STM32的ADC转换器的示意图:从图中可以看到,输入源与采样引脚之间存在阻抗RAIN,流入引脚的电压可能因为阻抗的存在产生一定的压降,导致最终输入采样引脚的电压变小。CADC采样电容通过RADC电阻为其充电,如果RAIN的阻抗选取不合理的话,会导致保持电容充满电所需要的时间变长。一般而言,RC的充电的时间常量为:tc =(RADC+RAIN)× CADC当采样时间 <
    嵌入式之入坑笔记 2025-05-20 22:19 36浏览
  • 北京贞光科技作为三星电机一级代理商,提供全面升级的技术支持、样品供应和供应链保障服务,为客户提供专业、可靠的一站式解决方案,满足AI基础设施不断发展的需求,支持更高效、更强大的人工智能应用计算系统的开发。如需更多产品信息或技术支持,请联系贞光科技。三星电子在被动元件技术领域取得重大突破,推出专为AI服务器应用设计的超小型高容量多层陶瓷电容器(MLCC)。这些新组件解决了现代AI计算基础设施不断增长的电力需求,同时优化了密集服务器环境中的空间利用率。 满足AI服务器电力需求现代AI服务器
    贞光科技 2025-05-20 11:38 95浏览
我要评论
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦