Каковы правильные разрешения для папки .gnupg? gpg: ПРЕДУПРЕЖДЕНИЕ: небезопасные права доступа к каталогу для файла конфигурации

27

Я не хочу просто запускать chmod до тех пор, пока не получу правильный ответ, и при этом я не хочу запускать GnuPG от имени пользователя root. Легким решением было бы просто установить его так, чтобы его мог прочитать только мой пользователь, но я не думаю, что это лучший способ.

Я получаю следующую ошибку при попытке использовать gpg:

gpg: WARNING: unsafe enclosing directory permissions on configuration file `/home/nb/.gnupg/gpg.conf'
gpg: external program calls are disabled due to unsafe options file permissions
gpg: keyserver communications error: general error
gpg: keyserver receive failed: general error

~/.gnupg/Текущий статус GnuPG :

% stat .gnupg 
  File: ‘.gnupg’
  Size: 4096        Blocks: 8          IO Block: 4096   directory
Device: 1bh/27d Inode: 20578751    Links: 3
Access: (0775/drwxrwxr-x)  Uid: ( 1000/      nb)   Gid: ( 1000/      XXXX)
Access: 2015-08-09 18:14:45.937760752 -0700
Modify: 2015-08-05 20:54:32.860883569 -0700
Change: 2015-08-05 20:54:32.860883569 -0700
 Birth: -

В ответе по следующей ссылке указано 600 разрешений для ~/gnupg/gpg.confфайла, но требуются ли эти права и для вложенной папки?

/ubuntu/330755/unsafe-permissions-on-configuration-file-home-david-gnupg-gpg-conf-what-doe

Натан Басанезе
источник

Ответы:

53

Да, вам также нужно будет исправить права на вложенный каталог ~/.gnupg

Потому что злоумышленник с достаточными правами на папку может манипулировать содержимым папки.

Выполните следующие команды:

  1. Убедитесь, что папка + содержимое принадлежат вам:
    chown -R $(whoami) ~/.gnupg/

  2. Правильные права доступа .gnupgи подпапки:
    find ~/.gnupg -type f -exec chmod 600 {} \;
    find ~/.gnupg -type d -exec chmod 700 {} \;

Объяснение 600, 700:

Давайте начнем со спины: «00» означает, что никаких прав вообще нет для всех, кто не является владельцем файлов / каталогов.

Это означает, что процесс, читающий эти (gnupg), должен запускаться как владелец этих файлов / каталогов.

~/.gnupg/является папкой, процесс чтения содержимого должен иметь возможность «войти» (= выполнить) в эту папку. Это бит "х". Имеет значение «1».7 - 6 = 1

И вы, ~/.gnupg/и ~/.gnupg/*вы хотите, чтобы иметь возможность читать и писать, вот и все 4 + 2 = 6.

==> Теперь только владелец файлов может читать / записывать их (= 600). Только он может войти в каталог (= 700)

==> Эти права доступа к файлам не нуждаются в документировании, они могут быть получены из предполагаемого использования.

Дополнительная информация о записи разрешений: https://en.wikipedia.org/wiki/File_system_permissions#Notation_of_traditional_Unix_permissions

Алекс Страгиес
источник
1
//, Вы знаете, документируют ли создатели GnuPG эти конкретные уровни разрешений? Если они документируют их, где я могу найти это?
Натан Басанезе
1
Они делают! Вы опубликовали сообщение об ошибке;)
Alex Stragies
1
// Да, но в сообщении об ошибке не указано, какими должны быть разрешения. Они публикуют это где-нибудь?
Натан Басанезе
// Также, спасибо за добавление объяснений для тех из нас, кто не так хорошо знаком со схемой нумерации разрешений.
Натан Басанезе
6

GnuPG по умолчанию обеспечивает права безопасного доступа, что означает, что никто (кроме вас) не может получить доступ к вашему домашнему каталогу GnuPG ~/.gnupg. Эти права доступа часто недостаточно строги после копирования домашнего каталога GnuPG с другого компьютера, и очень часто неправильное владение является причиной такого сообщения.

# Set ownership to your own user and primary group
chown -R "$USER:$(id -gn)" ~/.gnupg
# Set permissions to read, write, execute for only yourself, no others
chmod 700 ~/.gnupg
# Set permissions to read, write for only yourself, no others
chmod 600 ~/.gnupg/*

Если вы (по какой-либо причине) создали свои собственные папки внутри ~/.gnupg, вы также должны дополнительно применить разрешения на выполнение к этой папке. Для папок требуются привилегии выполнения.

Йенс Эрат
источник
4

Хотя Йенс Эрат уже упоминал об этом в своем последнем предложении, я думаю, следует подчеркнуть, что любые папки внутри ~ / .gnupg также должны быть исполняемыми (режим 700). Это особенно верно для папки private-keys *, которая создается самим gpg. Я застрял с проблемами разрешения на некоторое время, прежде чем я заметил это.

tc88
источник
find ~ / .gnupg -type d -exec chmod 700 {} \;
Крейг Хикс
2

Эти две строки устанавливают разрешения отдельно и правильно для каталогов и файлов:

find ~/.gnupg -type d -exec chmod 700 {} \;
find ~/.gnupg -type f -exec chmod 600 {} \;

при условии, что право собственности уже установлено правильно.

Обратите внимание, что это не меняет разрешения на сокеты S.gpg-agent*. (Только новый gpg v2 включает сокеты, старый gpg v1 - нет).

Крейг Хикс
источник
1
Похоже, ответ принесен из опыта.
Натан Басанезе