`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 17 ноября 2014 г. /usr/bin/mlocate

Вам нужен setuidбит в группе, чтобы позволить вам запустить locateкоманду без sudo. После исправления ваш lsвывод должен выглядеть следующим образом:

$ ls -lathr /usr/bin/mlocate
-rwxрсrx 1 root mlocate 39K 17 ноября 2014 г. /usr/bin/mlocate

Простое выполнение a, chmodкак рекомендуют некоторые другие, против dbсамого файла будет работать только до следующего запуска кем-либо updatedb. Затем разрешения будут сброшены.

решение2

У меня после обновления до 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

решение3

Пожалуйста, выполните команду sudo:

sudo updatedb

решение4

Прочитайте man updatedbи узнайте, как записать updatedbвывод в другое место, в каталог, на запись в который у вас есть разрешение.

Связанный контент