Quelles sont les autorisations correctes pour le dossier englobant .gnupg? gpg: AVERTISSEMENT: autorisations de répertoire enfermées dans un fichier de configuration

27

Je ne veux pas simplement chmod et exécuter jusqu'à ce que j'obtienne la bonne réponse, ni exécuter GnuPG en tant que root. La solution la plus simple serait de simplement le configurer pour que seul mon utilisateur puisse le lire, mais je ne pense pas que ce soit la meilleure façon.

J'obtiens l'erreur suivante lorsque j'essaie d'utiliser 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/Statut actuel de 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: -

La réponse au lien suivant conseille 600 autorisations pour le ~/gnupg/gpg.conffichier, mais le dossier englobant nécessite-t-il également ces autorisations?

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

Nathan Basanese
la source

Réponses:

53

Oui, vous devrez également corriger les autorisations du répertoire englobant ~/.gnupg

Parce qu'un attaquant disposant de suffisamment de droits sur le dossier pourrait manipuler le contenu du dossier.

Exécutez les commandes suivantes:

  1. Assurez-vous que le dossier + le contenu vous appartient:
    chown -R $(whoami) ~/.gnupg/

  2. Droits d'accès corrects pour les .gnupgsous-dossiers:
    find ~/.gnupg -type f -exec chmod 600 {} \;
    find ~/.gnupg -type d -exec chmod 700 {} \;

Explication pour 600, 700:

Commençons par l'arrière: «00» signifie AUCUN droit pour tous ceux qui ne sont pas propriétaires des fichiers / répertoires.

Cela signifie que le processus de lecture de ces fichiers (gnupg) doit s'exécuter en tant que propriétaire de ces fichiers / répertoires.

~/.gnupg/est un dossier, le processus de lecture du contenu doit pouvoir "entrer" (= exécuter) ce dossier. Il s'agit du bit "x". Il a la valeur "1".7 - 6 = 1

Les deux ~/.gnupg/et ~/.gnupg/*vous voulez pouvoir lire et écrire, c'est tout 4 + 2 = 6.

==> Seul le propriétaire des fichiers peut désormais les lire / écrire (= 600). Lui seul peut également entrer dans le répertoire (= 700)

==> Ces droits de fichier n'ont pas "besoin" d'être documentés, ils sont dérivables de l'usage prévu.

Plus d'informations sur la notation des autorisations: https://en.wikipedia.org/wiki/File_system_permissions#Notation_of_traditional_Unix_permissions

Alex Stragies
la source
1
//, Savez-vous si les créateurs de GnuPG documentent ces niveaux d'autorisation spécifiques? S'ils les documentent, où pourrais-je les trouver?
Nathan Basanese
1
Ils font! Vous avez posté le message d'erreur;)
Alex Stragies
1
//, oui, mais le message d'erreur ne dit pas quelles devraient être les autorisations. Publient-ils cela n'importe où?
Nathan Basanese
//, Merci également d'avoir ajouté plus d'explications à ceux d'entre nous qui ne sont pas aussi familiers avec le schéma de numérotation des autorisations.
Nathan Basanese
6

GnuPG applique par défaut des privilèges d'accès sécurisés, ce qui signifie que personne d'autre (sauf vous) ne peut accéder à votre répertoire personnel GnuPG ~/.gnupg. Ces privilèges d'accès ne sont souvent pas assez stricts après la copie du répertoire personnel GnuPG à partir d'une autre machine, et très souvent une mauvaise propriété est la raison d'un tel message.

# 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/*

Si vous avez (pour une raison quelconque) créé vos propres dossiers à l'intérieur ~/.gnupg, vous devez également appliquer des autorisations d'exécution à ce dossier. Les dossiers nécessitent l'ouverture de privilèges d'exécution.

Jens Erat
la source
4

Bien que Jens Erat l'ait déjà mentionné dans sa dernière phrase, je pense qu'il convient de souligner que tous les dossiers à l'intérieur de ~ / .gnupg doivent également être exécutables (mode 700). Cela vaut particulièrement pour le dossier private-keys * qui est créé par gpg lui-même. J'ai été coincé avec des problèmes de permission pendant un certain temps avant de le remarquer.

tc88
la source
trouver ~ / .gnupg -type d -exec chmod 700 {} \;
Craig Hicks
2

Ces deux lignes définiront les autorisations séparément et correctement pour les répertoires et les fichiers:

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

en supposant que la propriété est déjà définie correctement.

Notez qu'il ne modifie pas les autorisations sur les sockets S.gpg-agent*. (Seul le nouveau gpg v2 implique des sockets, pas l'ancien gpg v1).

Craig Hicks
la source
1
On dirait une réponse portée par l'expérience.
Nathan Basanese