`updatedb` 无法打开文件 `mlocate.db`

`updatedb` 无法打开文件 `mlocate.db`

当我updatedb从终端运行时,出现此错误:

updatedb: can not open a temporary file for `/var/lib/mlocate/mlocate.db'

关于如何上班有什么想法吗updatedb

答案1

我知道这是一篇旧帖子,但我在其他地方没有看到这个解决方案。

正如您所预料的,问题不在于mlocate.db文件。而是可执行文件的权限mlocate。这将修复该问题:

sudo chmod 2755 /usr/bin/mlocate

问题的根源就在于此:

$ ls -lathr /usr/bin/mlocate
-rwx接收rx 1 root mlocate 39K 2014 年 11 月 17 日 /usr/bin/mlocate

您需要setuid对组进行一些修改,以便您可以locate在没有 的情况下运行命令sudo。一旦修复,您的ls输出应如下所示:

$ ls -lathr /usr/bin/mlocate
-rwx韋斯rx 1 root mlocate 39K 2014 年 11 月 17 日 /usr/bin/mlocate

chmod按照其他人的建议对文件本身进行简单的操作db只会在下次有人运行之前起作用updatedb。然后权限将被重置。

答案2

对我来说,在更新到 Ubuntu 14 后,我仍然不断收到

$ locate chruby
locate: can not open `/var/lib/mlocate/mlocate.db': Permission denied

因此,与其他答案不同,问题不在于扩大该文件的读取权限。

我的 ”非root用户“ 是掌握。 这样我将该用户添加到了该组中移动定位

# addgroup master mlocate

列出该目录的详细信息以查看所有权后:

# ls -al /var/lib/mlocate
drwxr-xr-x  2 root root        4096 Jun 19 13:21 ./
drwxr-xr-x 94 root root        4096 Jan 23 11:27 ../
-rw-r-----  1 root mlocate 50134121 Jun 19 13:21 mlocate.db

答案3

请使用以下命令运行该命令sudo

sudo updatedb

答案4

阅读man updatedb并学习如何updatedb在您有写权限的目录中将的输出写入其他地方。

相关内容