Der locate
Befehl ist ein sehr nützliches Tool unter Linux, aber es scheint, dass nur root einen updatedb
Befehl ausführen kann, dessen Verwendung sehr wenig überzeugend ist. Wie kann man also einen normalen Benutzer dazu bringen, das Privileg zu haben, den Befehl updateedb auszuführen?
updatedb
ist der Befehl zum Aktualisieren der vom Befehl "findenden Datenbank" verwendeten Datenbank.
Beim Versuch, updateb als normaler Benutzer auszuführen, wird jedoch die folgende Fehlermeldung angezeigt:
[mirror@home code]$ updatedb
updatedb: can not open a temporary file for `/var/lib/mlocate/mlocate.db'
Oder:
updatedb -o db
updatedb: can not change group of file `/var/lib/gforge/chroot/home/users/bigmeow/tmp/db.uhEZFQ': Operation not permitted
--require-visibility
Flagge ist ... aber vielleicht könnten Sie ein wenig erklären, warum? Warum nicht einfach das tun, was @xaizek tut, und die Datenbank an einem Ort generieren, an dem Ihr Benutzer die Berechtigung hat, ohne das--require-visibility
Flag zu verwenden?SECURITY Databases built with --require-visibility no [tbs: or 0] allow users to find names of files and directories of other users, which they would not otherwise be able to do.
Sie können einfach eine Datenbank zu Hause mit dem
-o
Argument erstellenupdatedb
:Und benutze es
slocate
so:Sie möchten wahrscheinlich einen Alias für definieren
slocate --database=~/.locate.db
.quelle
xaizek:users
für mich eine Datenbankdatei mit dem Eigentümer-Gruppen-Paar erstellt wird, ist die Gruppe die Standarddatei. Sie können auch Optionen in der/etc/updatedb.conf
Datei überprüfen .slocate
ist eine sicherere Version von altlocate
. Ich denke, Centos hätteslocate
mit Namen installiert werden sollenlocate
. Auf jeden Fall sollte es in Ihrem Fall keine Unterschiede geben, und zwar in den meisten Fällen (auf Slackwarelocate
ist dies nur ein symbolischer Link zuslocate
).mlocate
es schneller sein sollte, aber trotzdem kompatibel mitslocate
. Ich bin mir nicht sicher, ob es der Grund ist. Wenn Sie nicht versuchen möchtenslocate
, welche Site nicht funktioniert, laden Sie Quellen von einem der Slackware-Spiegel herunter. Diese enthalten Quellen der Pakete: siehe hier .Hier sind alle Schritte, um eine vollständige Lösung zu erhalten (getestet in Centos 6.5).
1) generiere die db:
2) benutze die db:
3) Erstellen Sie einen Alias:
4) Verwenden Sie Ihr Gebietsschema. Suchen Sie db:
quelle
$HOME
anstelle von~
oder entfernen Sie einfach die=
. Beide der folgenden Funktionen funktionieren:locate --database ~/.locate.db
oderlocate --database=$HOME/.locate.db
. siehe diesen Thread: stackoverflow.com/questions/11587343/…