
У меня есть проект, в котором я шифрую поток следующим образом:
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, я уверен...) — это отключают файл, затем проверяют, не используют ли эти файлы какие-либо программы, и если они используются, они ждут, пока программа, использующая его, закроется, а затем освобождают место, действительно удаляя файл. Поскольку файл уже был отключен, никто другой не сможет получить к нему доступ, но у текущего открытого приложения не возникнет проблем, пока оно не попытается получить доступ к файлу по имени, а просто использует текущий открытый дескриптор.