~/.gnupg 目录中以 .#lk0xb 开头的文件 - 它们是什么?

5 linux debian gpg

在 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
Run Code Online (Sandbox Code Playgroud)

我已经更换为实际用户名username与实际主机名hostname

名称以 开头的文件的来源/用途是.#lk0xb什么?

Tho*_*key 7

它们是(如“lk”所暗示的)锁定文件。gnupg 来源中的评论说

此函数在FILE_TO_LOCK使用该名称和“.lock”后缀的同一目录中创建一个锁定文件 。请注意,在 POSIX 系统上,使用了一个临时文件“.#lk..pid[.threadid]”

并且还声明有一个清理功能(删除过时的锁)。您会看到清理功能失败的剩余锁定文件。

PID线程ID不匹配在代码中先前的评论(似乎没有更新的意见)。使文件名看起来与注释不同的实际代码(引用自 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 ());
Run Code Online (Sandbox Code Playgroud)

但当然,代码比注释更中肯。