locate
Komenda jest bardzo przydatnym narzędziem w systemie Linux, ale wydaje się tylko root może uruchomić updatedb
komendę, która jest bardzo unconvinent go używać. Jak więc ustawić zwykłego użytkownika na uprawnienie do uruchamiania polecenia updatedb?
updatedb
to komenda używana do aktualizacji bazy danych używana przez komendę locate.
Ale przy próbie uruchomienia updatedb jako zwykły użytkownik pojawia się następujący komunikat o błędzie:
[mirror@home code]$ updatedb
updatedb: can not open a temporary file for `/var/lib/mlocate/mlocate.db'
Lub:
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
jest flaga ... ale może mógłbyś wyjaśnić trochę dlaczego? na przykład dlaczego nie zrobić po prostu tego, co robi @xaizek i wygenerować bazę danych w miejscu, w którym użytkownik ma uprawnienia bez użycia--require-visibility
flagi?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.
Możesz po prostu stworzyć bazę danych w domu z
-o
argumentemupdatedb
:I użyj tego w
slocate
ten sposób:Prawdopodobnie chcesz zdefiniować alias dla
slocate --database=~/.locate.db
.źródło
xaizek:users
właścicielem: para dla mnie, więc grupa jest domyślna. Możesz także sprawdzić opcje w/etc/updatedb.conf
pliku.slocate
to bezpieczniejsza wersja staregolocate
. Myślę, że centos powinien byłslocate
zainstalować z nazwąlocate
. W każdym razie nie powinno być różnic w twoim przypadku, i w zasadzie w większości możliwych przypadków (na Slackwarelocate
jest tylko dowiązaniem symbolicznymslocate
).mlocate
powinno być szybsze, ale nadal zgodne zslocate
. Nie jestem pewien, czy to jest powód. Jeśli nie chcesz wypróbowaćslocate
, która strona nie działa, pobierz źródła z jednego z serwerów lustrzanych Slackware, zawierają one źródła pakietów: patrz tutaj .Oto wszystkie kroki, aby uzyskać kompletne rozwiązanie (testowane w Centos 6.5)
1) wygeneruj db:
2) użyj db:
3) Utwórz alias:
4) użyj swojego locale zlokalizuj db:
źródło
$HOME
zamiast~
lub po prostu się go pozbyć=
. oba poniższe będą działać:locate --database ~/.locate.db
lublocate --database=$HOME/.locate.db
. zobacz ten wątek: stackoverflow.com/questions/11587343/…