我在 Debian Linux 系统上运行 logcheck 以获取日志文件中异常行的警报,最近我在 中看到了以下内容/var/log/messages
:
gnome-keyring-daemon: couldn't allocate secure memory to keep passwords and or keys from being written to the disk
我不知道到底是什么原因导致了该消息,只是后来在日志中注意到了它。这是什么意思?我该如何解决它?
答案1
Gnome-keyring-daemon 无法分配无法换出的内存(这就是所谓的“安全内存”)。它尝试这样做的原因是写入敏感数据(密码或密钥)进行交换是有风险的。不过,这只是针对特定威胁的风险:有人会窃取您的磁盘,但不会窃取您已开机的计算机的威胁。如果您没有交换空间或加密交换空间,则这无关紧要。如果您的计算机位于物理安全的位置,这也无关紧要。如果您的计算机是笔记本电脑并且您担心不熟练的窃贼,那么这是相关的,但是不熟练的窃贼往往关心您的笔记本电脑的转售价值而不是您的密码(但是,公司密码转售市场正在蓬勃发展)。如果您担心老练的小偷,您无论如何都应该加密您的机密数据和交换空间。
分配无法换出的内存是由mlock
系统调用,它将内存页锁定在其当前的物理位置。这需要特权,否则应用程序可能会导致 RAM 饱和。在下面Linux,适当的特权是CAP_IPC_LOCK
能力。在下面索拉里斯, 它是PRIV_SYS_CONFIG
。
在Linux下,任何进程都可以锁定少量内存,具体由限制决定RLIMIT_MEMLOCK
。在大多数 shell 下,ulimit -l
将显示每个非特权进程可以锁定多少内存(以 kB 为单位)。如果限制为 0,请检查它是硬限制(由 root 施加,用 列出ulimit -Hl
)还是软限制(自行施加,用 列出ulimit -Sl
)。您可以使用例如将软限制提高到硬限制ulimit -l 64
。要提高硬限制,请编辑/etc/security/limits.conf
(语法记录在文件中);当您登录时会读取此文件。
TL,DR:这是一项安全功能,您可能不关心。别出汗。
答案2
我刚刚在 Ubuntu 18.04 上收到这些消息,结果发现由于某种原因apparmor
停止启动。启动apparmor
、注销并重新登录可以暂时修复该问题,或者apparmor
在启动时再次打开并重新启动也可以修复该问题。
因此,如果它正在工作然后停止,您可能需要找出为什么无法再分配该内存(因此上面的帮助、apparmor、selinux 等)。
答案3
我还得到了:
Oct 20 22:43:28 gnome-keyring-daemon[13543]: Gkm: using old keyring directory: /home/sergio/.gnome2/keyrings
Oct 20 22:43:28 gnome-keyring-daemon[13543]: Gkm: using old keyring directory: /home/sergio/.gnome2/keyrings
Oct 20 22:49:13 gnome-keyring-daemon[13543]: couldn't allocate secure memory to keep passwords and or keys from being written to the disk
我发现的唯一解决方案是从头开始创建一个新的密钥环,丢失以前密钥环中保存的密码。
我删除了 .gnome2/keyrings 并且丢失了所有密码,但 gnome 在 .local/share/keyrings 中创建了一个包含密钥环的新目录,并且警告消失了。
您可以使用命令编辑密码seahorse
我有几个密码,所以我不介意,但是一旦我移动 .gnome2/keyrings 目录,我就再也拿不回我的密码了。并解决问题