Quais são as permissões corretas para a pasta anexa .gnupg? gpg: AVISO: permissões de diretório de fechamento inseguras no arquivo de configuração

26

Eu não quero apenas chmod e executar até obter a resposta certa, nem quero executar o GnuPG como root. A solução mais fácil seria configurá-lo para que apenas meu usuário possa lê-lo, mas não acho que seja o melhor.

Recebo o seguinte erro ao tentar usar o 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/Status atual do 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: -

A resposta no link a seguir aconselha 600 permissões para o ~/gnupg/gpg.confarquivo, mas a pasta anexa também exige essas permissões?

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

Nathan Basanese
fonte

Respostas:

52

Sim, você também precisará corrigir as permissões do diretório anexo ~/.gnupg

Porque um invasor com direitos suficientes na pasta pode manipular o conteúdo da pasta.

Execute os seguintes comandos:

  1. Verifique se a pasta + o conteúdo pertencem a você:
    chown -R $(whoami) ~/.gnupg/

  2. Direitos de acesso corretos para .gnupge subpastas:
    find ~/.gnupg -type f -exec chmod 600 {} \;
    find ~/.gnupg -type d -exec chmod 700 {} \;

Explicação para 600, 700:

Vamos começar pelo verso: '00' significa NENHUM DIREITO PARA TODOS que não são os proprietários dos arquivos / diretórios.

Isso significa que o processo de leitura destes (gnupg) deve ser executado como o proprietário desses arquivos / diretórios.

~/.gnupg/é uma pasta, o processo de leitura do conteúdo deve poder "entrar" (= executar) nesta pasta. Este é o bit "x". Tem o valor "1".7 - 6 = 1

Tanto ~/.gnupg/e ~/.gnupg/*você quer ser capaz de ler e escrever, é isso 4 + 2 = 6.

==> Somente o proprietário dos arquivos pode lê-los / gravá-los agora (= 600). Somente ele pode entrar no diretório também (= 700)

==> Esses direitos de arquivo não "precisam" ser documentados, eles são derivados do uso pretendido.

Mais informações sobre a notação de permissão: https://en.wikipedia.org/wiki/File_system_permissions#Notation_of_traditional_Unix_permissions

Alex Stragies
fonte
11
//, Você sabe se os criadores do GnuPG documentam esses níveis de permissão específicos? Se eles os documentarem, onde eu poderia encontrar isso?
Nathan Basanese
11
Eles fazem! Você postou a mensagem de erro;)
Alex Stragies
11
//, sim, mas a mensagem de erro não diz quais devem ser as permissões. Eles publicam isso em algum lugar?
Nathan Basanese 30/03
// Além disso, obrigado por adicionar mais explicações para aqueles que não estão tão familiarizados com o esquema de numeração das permissões.
Nathan Basanese 30/03
6

Por padrão, o GnuPG aplica privilégios de acesso seguro, o que significa que ninguém mais (exceto você) pode acessar seu diretório pessoal do GnuPG ~/.gnupg. Esses privilégios de acesso geralmente não são rígidos o suficiente após a cópia do diretório inicial do GnuPG de outra máquina, e muitas vezes a propriedade incorreta é o motivo dessa mensagem.

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

Se você (por qualquer motivo) criou suas próprias pastas dentro ~/.gnupg, também deve aplicar adicionalmente permissões de execução a essa pasta. Pastas requerem privilégios de execução para serem abertos.

Jens Erat
fonte
4

Embora Jens Erat já tenha mencionado isso em sua última frase, acho que deve ser enfatizado que todas as pastas dentro de ~ / .gnupg devem ser executáveis ​​(modo 700) também. Isso vale especialmente para a pasta de chaves privadas * criada pelo próprio gpg. Fiquei com problemas de permissão por um tempo antes de perceber isso.

tc88
fonte
encontre ~ / .gnupg -type d -exec chmod 700 {} \;
Craig Hicks
2

Essas duas linhas definirão as permissões separadamente e corretamente para diretórios e arquivos:

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

assumindo que a propriedade já está definida corretamente.

Observe que ele não altera as permissões nos soquetes S.gpg-agent*. (Somente o novo gpg v2 envolve soquetes, o antigo gpg v1 não).

Craig Hicks
fonte
11
Parece uma resposta carregada de experiência.
Nathan Basanese