Які правильні дозволи для папки, що додає .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://uk.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). Особливо це стосується папки приватних ключів *, створеної самим gpg. Я певний час застряг із проблемами дозволу, перш ніж помітив це.


знайти ~ / .gnupg -тип 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
Схоже, відповідь на основі досвіду.
Натан Басанес
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.