web-dev-qa-db-ja.com

「locate」によってインデックス付け/カバーされるフォルダ

OS Xでは、次のコマンドを実行することでロケートDBにデータが入力されると思います。

Sudo /usr/libexec/locate.updatedb

しかし、locateは〜/以下に何も見つからないようです〜/

Locate.updatedbは、デフォルトでホームフォルダのインデックスを作成する必要がありますか?もしそうなら、なぜそうではないのか提案やアイデアはありますか?デフォルトで〜/にインデックスを付けない場合、このフォルダ階層にインデックスを付けない理由はありますか?そうでない場合、どのように構成すればよいですか?


また、(root以外として)〜/からlocate.updatedbを実行すると、機能します。以下のいずれか(たとえば、〜/ Desktop /)から実行すると、次のエラーが発生します。

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

Locateは「nobody」ユーザーとして実行され、他のユーザーがLocateデータベース内の「自分の」ファイルを表示できないようにします。 yourアカウントはファイルを探索する権限を持つ唯一のアカウントであるため、locateはファイルを表示できません。アカウントが唯一のローカルユーザーである場合でも、この制限が適用されます。 Locate.updatedbスクリプトをSudoすると、それが生成するfindコマンドは特に非特権として開始されます。この問題を防ぐためにスクリプトを変更することはできますが、推奨されているとは言えません。

また、ほとんどの人にとってSpotlight/MDSの方が優れていると想定されるため、locateはデフォルトでは有効になっていません。 mdfindコマンドを試してみることをお勧めします。 Locateを定期的に実行することにした場合は、Sudo launchctl load -w /System/Library/LaunchDaemons/com.Apple.locate.plistを実行して、起動したジョブをロードし、定期的にインデックスを再作成します。

6
Christian L

/usr/libexec/locate.updatedbを変更することで、ほとんどどこでも検索できる場所を見つけることができます。

変化する:

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

言う、

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

セキュリティの低下。パソコンでのみ使用してください。

4
user145742