16

Я не хочу просто запускать 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 , но для вложенной папки также требуются эти разрешения?

https://askubuntu.com/questions/330755/unsafe-permissions-on-configuration-file-home-david-gnupg-gpg-conf-what-doe

4 ответа4

36

Да, вам также необходимо исправить права доступа к каталогу ~/.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

5

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. Я застрял с проблемами разрешения на некоторое время, прежде чем я заметил это.

2

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

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .