![如何在 Debian 中查找和删除已从磁盘删除但文件句柄尚未关闭的文件?](https://linux22.com/image/1537138/%E5%A6%82%E4%BD%95%E5%9C%A8%20Debian%20%E4%B8%AD%E6%9F%A5%E6%89%BE%E5%92%8C%E5%88%A0%E9%99%A4%E5%B7%B2%E4%BB%8E%E7%A3%81%E7%9B%98%E5%88%A0%E9%99%A4%E4%BD%86%E6%96%87%E4%BB%B6%E5%8F%A5%E6%9F%84%E5%B0%9A%E6%9C%AA%E5%85%B3%E9%97%AD%E7%9A%84%E6%96%87%E4%BB%B6%EF%BC%9F.png)
我正在使用带有 KDE 的 Debian 9.1,并且想要运行自动搜索和删除操作来完全删除所有“已被删除但文件句柄尚未关闭”的文件。
我对 GNU/Linux 还不熟悉,并且我了解到此类文件存在安全风险(即恶意软件利用它来隐藏其存在)。
显然,该ls
命令显示此类文件的“引用计数为 0”,这不是我想要的。
答案1
你误会了一些事。
彻底删除所有已删除的文件
嗯...如果文件被删除了,它就被删除了。
如果您希望删除文件会使所有句柄失效,那是不可能的。太多程序和数百万行代码依赖于此语义。至于防止删除打开的文件的可能性,就像 Windows 所做的那样,情况也是一样的:Linux 世界中有太多东西依赖于此。
手动强制关闭外部进程中的文件句柄(例如使用 GDB 或脚本解决方案)会导致进程崩溃或造成更糟糕的后果。在内核端使句柄无效也存在同样的问题(并且需要修改内核)。
简而言之,没有明智的方法可以做到这一点。
而且,我不会称之为安全风险。如果恶意软件利用这一点来隐藏某些东西,那么恶意软件已经存在于您的计算机上,并且可以创建和删除文件。那么您面临的问题远不止这些。