强制应用程序关闭fd或导致EIO(linux)

时间:2015-04-07 15:05:00

标签: linux file-io

由于愚蠢的设计,某些应用程序不会跟踪已创建进程的pid。当创建进程(scp)继续读取已删除的文件时,有一个错误(CVE级别!)。

是否有办法强制所有应用程序,访问特定文件以关闭fd或获取EIO进行读取操作?

fuser -k / path / to / file有一个丑陋的技巧,但它太丑陋而且太宽泛(并非所有访问应用程序都应该关闭,但只会收到IO错误)。

我试过了:

  • 截断(scp继续工作)
  • 设置文件或部分文件的强制锁定(仅在fs未使用'mand'选项挂载时才提供建议)
  • 使用所有奇怪的开放标志组合重新打开文件
  • 播放文件的访问权限(不影响已打开的文件)

我知道正确的方法就是记录scp的pid并杀死-9它。但这是对大项目的CVE修复,并且执行代码在数千个部分之间共享,并且在生命周期的“稳定/支持”部分(预期修复)中的任何更改都将被拒绝。

有什么想法吗?如果不是,那就会有'fuser -k / path / to / file'。

0 个答案:

没有答案