Введение
В процессе администрирования систем Linux нередко возникает задача смены расположения хранилища связок ключей и конфигураций GPG — например, при реорганизации дискового пространства или переходе к новым стандартам развертывания. Для корректной инициализации и миграции структуры каталогов разработчики GnuPG предусмотрели системный скрипт addgnupghome. В данном материале мы разберем назначение этой утилиты, внутреннюю логику ее работы, а также на живом стенде выполним пошаговый перенос связки ключей с обязательным аудитом прав доступа.
1. Развертывание пакетов GnuPG и аудит доступности addgnupghome
Первым шагом подготовим рабочее окружение: установим дистрибутивные пакеты gnupg и gpgv, обеспечивающие поддержку криптографических операций и необходимых системных утилит.

Убедимся в наличии бинарного файла addgnupghome в системных путях с помощью команды which. Штатным местом его размещения в дистрибутивах Debian/Ubuntu является каталог /usr/sbin/addgnupghome.
Служебный скрипт addgnupghome предназначен для подготовки типовой структуры каталога ~/.gnupg для целевых учетных записей или переноса ключевой инфраструктуры в альтернативное дерево каталогов.
⚙️ [Ключевые параметры]
account : имя системного пользователя или целевой путь, для которого разворачивается либо синхронизируется рабочее пространство GnuPG.

Попробуем запросить справку по параметрам запуска или открыть системную страницу руководства.
Стоит учитывать, что в базовых образах Ubuntu (minimized cloud images) документация зачастую урезана для экономии места, о чем терминал уведомит соответствующим предупреждением.

2. Формирование исходного окружения и выпуск тестового сертификата GPG
Для чистоты эксперимента создадим имитацию исходного каталога GPG в /tmp и сразу ограничим к нему доступ маской 700, как того требуют правила безопасности POSIX.

Сгенерируем демонстрационную пару ключей через интерфейс gpg --quick-generate-key.
Зададим параметр --homedir /tmp/legacy-gnupg, отключим интерактивный запрос парольной фразы для автоматизации пакетного режима и установим срок действия сертификата в один год.

Инспектируем содержимое созданной директории через ls -la. В каталоге должны появиться стандартные компоненты: хранилище открытых ключей pubring.kbx, база доверия trustdb.gpg и сопутствующие метаданные.

3. Миграция окружения в новую точку монтирования с помощью addgnupghome
Подготовим целевой каталог /tmp/new-gnupg, в который предстоит перенести рабочие данные.

Запускаем непосредственно саму процедуру переноса: передаем утилите addgnupghome путь к исходному каталогу /tmp/legacy-gnupg и новому приемнику /tmp/new-gnupg.
Скрипт автоматически выполняет конвертацию, репликацию служебных файлов и инициализацию необходимых дескрипторов в новом каталоге без сообщений об ошибках.

Запросим детальный листинг созданной директории через ls -la /tmp/new-gnupg.
Это позволит визуально оценить перенесенные файлы конфигураций, структуру сокетов и базовые атрибуты доступа.

4. Верификация целостности связки ключей и аудит прав доступа
Убедимся, что криптографический движок корректно распознает связку ключей на новом месте. Для этого вызываем gpg --list-keys, явно передав параметр --homedir /tmp/new-gnupg.
Если идентификаторы ключа, отпечаток и метаданные пользователя отображаются корректно, перенос прошел без повреждения внутренних баз.

Критически важный нюанс при работе с PGP/GPG — строгие права доступа. Чтобы исключить чтение приватных данных посторонними процессами и предупреждения от gpg-agent, выставляем права 700 на сам каталог и 600 на вложенные файлы.

Проверим статус каталога с помощью команды ls -ld. Вывод должен четко фиксировать битовую маску drwx------ (700), принадлежащую текущему владельцу.

Завершив тестирование, освободим дисковое пространство и удалим временные стендовые директории вызовом rm -rf /tmp/legacy-gnupg /tmp/new-gnupg.
Это возвращает хостовую систему в исходное чистое состояние.

Мы подробно рассмотрели штатный механизм безопасной миграции домашнего каталога GnuPG с применением специализированного системного инструмента addgnupghome.
Использование этого регламента гарантирует сохранность ключевой информации, исключает сбои в работе криптографических агентов и предотвращает случайные утечки секретных ключей из-за некорректных прав доступа.