`updatedb` не может открыть файл`mlocate.db`
Когда я бегу updatedb
из терминала я получаю эту ошибку:
updatedb: can not open a temporary file for `/var/lib/mlocate/mlocate.db'
Любые идеи о том, как получить updatedb
работать?
4 ответа
Я понимаю, что это старый пост, но я не вижу это решение в другом месте.
Проблема не в mlocate.db
файл, как и следовало ожидать. Это разрешения на mlocate
исполняемый файл. Это решит проблему:
sudo chmod 2755 /usr/bin/mlocate
Это источник проблемы:
$ ls -lathr / usr / bin / mlocate -rwxr-x r-x 1 root mlocate 39K 17 ноября 2014 г. / usr / bin / mlocate
Тебе необходимо setuid
немного в группе, чтобы вы могли запустить locate
команда без sudo
, Как только это исправлено, ваш ls
вывод должен выглядеть так:
$ ls -lathr / usr / bin / mlocate -rwxr-s r-x 1 root mlocate 39K 17 ноября 2014 г. / usr / bin / mlocate
Просто делаю chmod
как некоторые другие рекомендуют против db
сам файл будет работать только до следующего запуска updatedb
, Тогда разрешения будут сброшены.
После обновлений до Ubuntu 14 я продолжал получать
$ locate chruby
locate: can not open `/var/lib/mlocate/mlocate.db': Permission denied
поэтому проблема не в расширении разрешений на чтение для этого файла, в отличие от других ответов.
Мой "нерутик" - мастер. В качестве пользователя root я добавил этого пользователя в группу mlocate:
# 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
Читать man updatedb
и научиться писать updatedb
вывод в другом месте, в каталог, для которого у вас есть разрешение на запись.