.gnupg 封闭文件夹的正确权限是什么? gpg:警告:配置文件上的不安全封闭目录权限

.gnupg 封闭文件夹的正确权限是什么? gpg:警告:配置文件上的不安全封闭目录权限

我不想只是 chmod 并运行直到得到正确答案,也不想以 root 身份运行 GnuPG。简单的解决方法是将其设置为只有我的用户可以读取它,但我认为这不是最好的方法。

当我尝试使用 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: -

以下链接中的答案建议对~/gnupg/gpg.conf文件授予 600 个权限,但是封闭的文件夹是否也需要这些权限?

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

答案1

是的,您还需要修复封闭目录的权限~/.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/是一个文件夹,读取内容的进程必须能够“进入”(=执行)此文件夹。这是“x”位。它的值为“1”。7 - 6 = 1

两者都~/.gnupg/希望~/.gnupg/*能够读写,就是这样4 + 2 = 6

==> 现在只有文件所有者可以读取/写入文件 (=600)。只有他才能进入目录 (=700)

==> 这些文件权利不需要记录,它们可以从预期用途中推导出来。

有关权限符号的更多信息:https://en.wikipedia.org/wiki/File_system_permissions#Notation_of_traditional_Unix_permissions

答案2

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,则还必须向该文件夹额外应用执行权限。文件夹需要执行权限才能打开。

答案3

这两行将分别为目录和文件设置正确的权限:

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

假设所有权已正确设置。

注意确实如此不是更改套接字的权限S.gpg-agent*。(只有新版 gpg v2 涉及套接字,旧版 gpg v1 不涉及)。

答案4

虽然 Jens Erat 已经在最后一句中提到了这一点,但我认为应该强调的是 ~/.gnupg 内的任何文件夹也必须是可执行的(模式 700)。这尤其适用于 gpg 本身创建的 private-keys* 文件夹。在我注意到这一点之前,我被权限问题困扰了一段时间。

相关内容