`updatedb` não pode abrir o arquivo `mlocate.db`

`updatedb` não pode abrir o arquivo `mlocate.db`

Quando executo updatedba partir de um terminal, recebo este erro:

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

Alguma ideia de como chegar updatedbao trabalho?

Responder1

Sei que este é um post antigo, mas não vejo essa solução em outro lugar.

O problema não é o mlocate.dbarquivo, como seria de esperar. São as permissões no mlocateexecutável. Isso resolverá o problema:

sudo chmod 2755 /usr/bin/mlocate

Esta é a fonte do problema:

$ ls -lathr /usr/bin/mlocate
-rwxRXrx 1 root mlocate 39K 17 de novembro de 2014 /usr/bin/mlocate

Você precisa de um setuidpouco no grupo para permitir a execução do locatecomando sem sudo. Depois de corrigido, sua lssaída deverá ficar assim:

$ ls -lathr /usr/bin/mlocate
-rwxrsrx 1 root mlocate 39K 17 de novembro de 2014 /usr/bin/mlocate

Simplesmente fazer um chmodcomo alguns outros recomendam no dbpróprio arquivo só funcionará até a próxima vez que alguém executar updatedb. Então as permissões serão redefinidas.

Responder2

Para mim, depois das atualizações do Ubuntu 14, ainda recebi

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

portanto, o problema não era ampliar as permissões de leitura nesse arquivo, ao contrário de outras respostas.

Meu "usuário não root" émestre. Assim comoraizEu adicionei esse usuário ao grupolocalizar:

# addgroup master mlocate

Depois de listar os detalhes desse diretório para ver as propriedades:

# 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

Responder3

Por favor, execute o comando com sudo:

sudo updatedb

Responder4

Leia man updatedbe aprenda como escrever updatedba saída de em outro lugar, em um diretório para o qual você tenha permissão de gravação.

informação relacionada