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


27

我不想只是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个权限,但是封闭文件夹也需要这些权限吗?

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

Answers:


53

是的,您还需要修复封闭目录的权限 ~/.gnupg

因为对文件夹具有足够权限的攻击者可以操纵文件夹内容。

执行以下命令:

  1. 确保文件夹和内容属于您:
    chown -R $(whoami) ~/.gnupg/

  2. 正确的访问权限.gnupg和子文件夹:
    find ~/.gnupg -type f -exec chmod 600 {} \;
    find ~/.gnupg -type d -exec chmod 700 {} \;

解释600700

让我们从后面开始:“ 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


1
//,您知道GnuPG的制造商是否记录了这些特定的权限级别?如果他们记录了文档,我在哪里可以找到?
弥敦道(Nathan Basanese)2015年

1
他们是这样!您发布了错误消息;)
Alex Stragies 2015年

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

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


找到〜/ .gnupg -type d -exec chmod 700 {} \;
Craig Hicks

2

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

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

假设所有权已正确设置。

注意它并不会改变对插座的权限S.gpg-agent*。(仅新gpg v2涉及套接字,而旧gpg v1不涉及套接字)。


1
看起来像是经验带来的答案。
弥敦道(Nathan Basanese)
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.