当我尝试列出我的gpg键时,我收到一个错误:
gpg --list-keys
gpg: NOTE: trustdb not writable
gpg: checking the trustdb
gpg: trustdb rec 56: write failed (n=-1): Bad file descriptor
gpg: trustdb: sync failed: Bad file descriptor
我尝试在我的用户目录上执行递归chown。但这似乎并没有解决问题。
音量不是只读的:
[web1:~] bluethundr% touch test
[web1:~] bluethundr% echo hi > test
[web1:~] bluethundr% cat test
hi
所以我想知道为什么trustdb不可写。
我该如何解决这个问题?
答案 0 :(得分:1)
似乎已在bug 771976
中报告过我在一台机器上运行命令
apt-key list
时发现了这一点 根文件系统通常以只读方式挂载 这会导致gpg
与“--trustdb-name
”,“/etc/apt//trustdb.gpg
”,“--list-keys
”一起运行。
gpg
反过来尝试创建“/etc/apt//trustdb.gpg.lock
”以锁定失败的trustdb
。了解
--list-keys
是一个不应该写作的操作 任何事情,在这种情况下失败是不好的。
即使卷不是只读的,也请检查(使用strace)gpg --list-key
正在尝试创建其trustdb.gpg.lock
文件的位置。
strace gpg --list-key | grep trustdb.gpg.lock
OP bluethundr添加in the comments:
我改为
.gnupg
目录并列出了一个清单 我看到那里的文件归root
所有!所以我做了一个sudo chown -R myuser:myuser *
然后我再次运行gpg --list-keys
并且它有效! 问题在于.gnupg
中的文件由root
出于某种原因。