当流正在加密时,我可以删除使用 --keyring 指定的 GPG 密钥环吗?

当流正在加密时,我可以删除使用 --keyring 指定的 GPG 密钥环吗?

我有一个项目,正在加密流,如下所示:

some_command | gpg --keyring tempkeyring.gpg --recipient "person" --output filename.gpg --encrypt

因此,在流式传输正在进行且加密已经开始时,删除当前使用的密钥环是否会损害该过程?密钥环是临时的,每次运行脚本时都会重新创建。我猜内核仍将允许系统访问该文件,一旦 gpg 完成该文件,它将释放空间。gpg 会发疯还是会顺利完成加密?

如果存在差异的话,操作系统是 Linux RHEL 和 CentOS 内核 2.6+。

答案1

我进行了调查,虽然这回答了 Linux 内核的问题,但它绝不包括其他操作系统或文件系统。

gpg 并不关心。我怀疑它会像处理系统中的任何其他删除一样处理此问题。在 *nix 环境中,当您删除文件时,实际上是在“取消链接”该文件。当您删除指向文件的所有链接时,系统会删除该文件并释放空间。Linux(和 Unix,我敢肯定……)内核所做的是取消链接该文件,然后检查是否有任何程序正在使用这些文件,如果是,它们会等到使用它的程序关闭,然后通过真正删除该文件来释放空间。由于该文件已取消链接,因此没有其他人能够访问该文件,但当前打开的应用程序不会有问题,只要它不尝试按名称访问该文件而只是使用当前打开的句柄。

相关内容