Команда locate
- очень полезный инструмент в Linux, но кажется, что только root может запустить updatedb
команду, которая очень неудобна для ее использования. Так как же заставить обычного пользователя иметь привилегию для запуска команды updatedb?
updatedb
это команда, используемая для обновления базы данных, используемой командой locate.
Но при попытке запуска updatedb от имени обычного пользователя появляется следующее сообщение об ошибке:
[mirror@home code]$ updatedb
updatedb: can not open a temporary file for `/var/lib/mlocate/mlocate.db'
Или:
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
флаг ... но, может быть, вы могли бы немного объяснить, почему? например, почему бы просто не сделать то, что делает @xaizek, и сгенерировать базу данных в месте, где у вашего пользователя есть разрешение, без использования--require-visibility
флага?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.
Вы можете просто создать базу данных в доме с
-o
аргументомupdatedb
:И используйте это
slocate
так:Вы, вероятно, хотите определить псевдоним для
slocate --database=~/.locate.db
.источник
xaizek:users
парой владелец: группа для меня, так что группа - это файл по умолчанию. Вы также можете проверить параметры в/etc/updatedb.conf
файле.slocate
- более безопасная версия старогоlocate
. Я думаю, что Centos должен былslocate
установить с именемlocate
. В любом случае, в вашем случае не должно быть никаких различий, и в основном в большинстве возможных случаев (на Slackwarelocate
это просто символическая ссылка наslocate
).mlocate
должно быть быстрее, но все же совместимо сslocate
. Я не уверен, если это причина. Если вы не хотите пытаться выяснитьslocate
, какой сайт не работает, загрузите исходники с одного из зеркал Slackware, они включают источники пакетов: см. Здесь .Вот все шаги, чтобы получить полное решение (протестировано в Centos 6.5)
1) сгенерировать БД:
2) использовать БД:
3) создать псевдоним:
4) используйте вашу локаль locate db:
источник
$HOME
вместо~
или просто избавиться от=
. оба из следующих будут работать:locate --database ~/.locate.db
илиlocate --database=$HOME/.locate.db
. смотрите эту