Arquivos que começam com. # lk0xb no diretório ~ / .gnupg - o que são eles?

4

Em um sistema Debian Jessie:

$ ls -al ~/.gnupg/
total 58684
drwx------  2 username username     4096 Nov 28 20:52 .
drwxr-xr-x 50 username username     4096 Nov 28 19:33 ..
-rw-------  1 username username     9602 Jun 24 22:47 gpg.conf
-rw-r--r--  1 username username       18 Jun 25 21:07 .#lk0xb7f2fa50.hostname.5551
-rw-r--r--  1 username username       18 Aug 19 19:15 .#lk0xb8e9bf48.hostname.32133
-rw-r--r--  1 username username       18 Aug 19 19:15 .#lk0xb8e9dc48.hostname.32133
-rw-r--r--  1 username username       18 Nov 28 20:52 .#lk0xb9387478.hostname.24497
-rw-------  1 username username 30018875 Nov 18 21:49 pubring.gpg
-rw-------  1 username username 30018875 Nov 18 20:54 pubring.gpg~
-rw-------  1 username username      600 Jun 21 21:34 random_seed
-rw-------  1 username username     4890 May  7  2015 secring.gpg
-rw-------  1 username username     1440 Nov 18 18:50 trustdb.gpg

Eu substituí o nome de usuário real por username e o nome do host real por hostname .

Qual é a origem / finalidade dos arquivos cujos nomes começam .#lk0xb ?

    
por sampablokuper 28.11.2015 / 22:06

1 resposta

7

Eles são (como o "lk" sugere) arquivos lock . Um comentário nas fontes do gnupg diz

This function creates a lock file in the same directory as FILE_TO_LOCK using that name and a suffix of ".lock". Note that on POSIX systems a temporary file ".#lk..pid[.threadid] is used.

e também afirma que há uma função de limpeza (para remover bloqueios obsoletos). Você está vendo sobras de arquivos de bloqueio onde a função de limpeza falhou.

O pid e o threadid não correspondem a um comentário anterior no código (parece que os comentários não são atualizados). O código atual que faz o nome do arquivo parecer diferente dos comentários (citando gnupg-1.4.19):

  snprintf (h->tname, tnamelen, "%.*s/.#lk%p.", dirpartlen, dirpart, h );
  h->nodename_off = strlen (h->tname);
  snprintf (h->tname+h->nodename_off, tnamelen - h->nodename_off,
           "%s.%d", nodename, (int)getpid ());

mas é claro, o código é mais pertinente que os comentários.

    
por 28.11.2015 / 22:57