`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

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

sudo updatedb

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

Другие вопросы по тегам