![.gnupg 封闭文件夹的正确权限是什么? gpg:警告:配置文件上的不安全封闭目录权限](https://linux22.com/image/1461034/.gnupg%20%E5%B0%81%E9%97%AD%E6%96%87%E4%BB%B6%E5%A4%B9%E7%9A%84%E6%AD%A3%E7%A1%AE%E6%9D%83%E9%99%90%E6%98%AF%E4%BB%80%E4%B9%88%EF%BC%9F%20gpg%EF%BC%9A%E8%AD%A6%E5%91%8A%EF%BC%9A%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6%E4%B8%8A%E7%9A%84%E4%B8%8D%E5%AE%89%E5%85%A8%E5%B0%81%E9%97%AD%E7%9B%AE%E5%BD%95%E6%9D%83%E9%99%90.png)
我不想只是 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 个权限,但是封闭的文件夹是否也需要这些权限?
答案1
是的,您还需要修复封闭目录的权限~/.gnupg
因为对文件夹具有足够权限的攻击者可以操纵文件夹内容。
执行以下命令:
确保该文件夹及其内容属于您:
chown -R $(whoami) ~/.gnupg/
更正
.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* 文件夹。在我注意到这一点之前,我被权限问题困扰了一段时间。