当我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
在您有写权限的目录中将的输出写入其他地方。