Wenn ich es updatedb
von einem Terminal aus ausführe, erhalte ich diese Fehlermeldung:
updatedb: can not open a temporary file for `/var/lib/mlocate/mlocate.db'
Irgendwelche Ideen, wie man updatedb
zur Arbeit kommt?
Antwort1
Mir ist klar, dass dies ein alter Beitrag ist, aber ich sehe diese Lösung nirgendwo sonst.
Das Problem liegt nicht mlocate.db
, wie man erwarten würde, an der Datei selbst. Es liegt an den Berechtigungen für die mlocate
ausführbare Datei. So wird das Problem behoben:
sudo chmod 2755 /usr/bin/mlocate
Dies ist die Ursache des Problems:
$ ls -lathr /usr/bin/mlocate -rwxrxrx 1 root mlocate 39K 17. November 2014 /usr/bin/mlocate
Sie benötigen ein Bit in der Gruppe, damit Sie den Befehl ohne setuid
ausführen können . Sobald dies behoben ist, sollte Ihre Ausgabe folgendermaßen aussehen:locate
sudo
ls
$ ls -lathr /usr/bin/mlocate -rwxrsrx 1 root mlocate 39K 17. November 2014 /usr/bin/mlocate
Einfach chmod
wie von anderen empfohlen an der db
Datei selbst auszuführen, funktioniert nur bis zum nächsten Mal, wenn jemand ausführt updatedb
. Dann werden die Berechtigungen zurückgesetzt.
Antwort2
Für mich nach Updates auf Ubuntu 14 bekam ich immer noch
$ locate chruby
locate: can not open `/var/lib/mlocate/mlocate.db': Permission denied
Das Problem bestand also nicht darin, die Leseberechtigungen für diese Datei zu erweitern, anders als in anderen Antworten behauptet.
Mein "Nicht-Rootuser" IstMeister. So wieWurzelIch habe diesen Benutzer zur Gruppe hinzugefügtmlokalisieren:
# addgroup master mlocate
Nachdem Sie die Details dieses Verzeichnisses aufgelistet haben, können Sie die Eigentümerschaft anzeigen:
# 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
Antwort3
Bitte führen Sie den Befehl mit aus sudo
:
sudo updatedb
Antwort4
Lesen man updatedb
und erfahren Sie, wie Sie updatedb
die Ausgabe an einem anderen Ort in einem Verzeichnis schreiben, für das Sie Schreibberechtigung haben.