Linux 七点二 新增标志防止特殊文件欺骗

发布于 2026年05月21日 | 从西班牙语翻译

Linux内核的下一个版本7.2将在openat2系统调用中引入OPENAT2_REGULAR标志。此功能允许程序确保只打开常规文件,避免被重定向到诸如/dev/null或FIFO等特殊设备,这些设备可能导致意外的阻塞行为和安全隐患。

Linux内核编译过程,程序员终端显示带有OPENAT2_REGULAR标志的openat2系统调用,该标志在绿色代码中高亮显示,象征文件重定向的链条被盾牌图标打破,恶意FIFO管道和/dev/null设备节点显示为带有红色叉号的阻塞路径,常规文件图标带有绿色对勾并发光,技术插图风格,深色终端背景带有矩阵式代码雨,戏剧性的蓝色和橙色灯光,背景中极精细的电路板走线,逼真的工程可视化

OPENAT2_REGULAR在内核中的工作原理 🛡️

OPENAT2_REGULAR标志在openat2调用中充当过滤器。当激活时,内核会在允许打开之前验证目标文件是否为常规文件(S_IFREG)。如果文件是块设备、FIFO或套接字,操作将失败并返回EISDIR或EPERM错误。此验证在解析符号链接之后进行,从而阻止了使用链接指向特殊设备的攻击。该实现由UAPI小组请求,用于保护处理用户文件的应用程序。

告别/dev/null和调皮FIFO带来的惊吓 😅

到目前为止,一个信任的程序可能会打开一个文件,却发现它是一个FIFO,让它永远等待数据,或者更糟的是,一个/dev/null悄无声息地吞噬了它的所有输出。有了OPENAT2_REGULAR,这些惊吓就结束了:如果文件不是常规文件,内核会拒绝,开发者可以节省数小时的调试时间。这就像在磁盘入口处安装了一个过滤器,只允许真正的文件通过,而不是狂欢节的伪装。