'locate'索引/覆盖哪些文件夹


5

在OS X上,我认为通过运行来填充locate DB:

sudo /usr/libexec/locate.updatedb

但是找到似乎没有在里面或下面找到任何东西〜/

应该locate.updatedb默认索引我的主文件夹吗?如果是这样,任何建议或想法为什么不是?如果它没有索引〜/默认情况下,是否有任何理由不索引此文件夹层次结构?如果没有,我该如何配置呢?


此外,当我从〜/(作为非root)运行locate.updatedb时,它可以工作。当我从下面的任何东西运行它(例如,〜/ Desktop /)时,我收到以下错误:

shell-init: error retrieving current directory: getcwd: cannot access parent directories: Permission denied
find: .: Permission denied

你使用FileVault吗?
Daniel Beck

不,我不使用FileVault。

Answers:


6

将“运行”定位为“nobody”用户,以防止其他用户在locate数据库中看到“您的”文件。由于您的帐户是唯一有权浏览文件帐户,因此找不到它们。即使您的帐户是唯一的本地用户,也适用此限制。当您sudo使用locate.updatedb脚本时,find它生成的命令专门以非特权方式启动。虽然您可以修改脚本以防止此问题,但我不能说它是推荐的。

此外,默认情况下未启用定位,因为它假定Spotlight / MDS对大多数人来说更好。我建议尝试使用mdfind命令。如果您确定要定位以定期运行,请执行sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.locate.plist以加载其launchd作业以进行常规重新索引。


最后一部分是未初始化的locate帮助消息,所以它是Apple推荐的。
Daniel Beck

4

人们可以通过修改来定位到几乎所有地方/usr/libexec/locate.updatedb

更改:

if [ "$(id -u)" = "0" ]; then

比方说

if [ "$(id -u)" = "1" ]; then

安全性有所降低。仅在个人计算机上使用。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.