0**権限ですべてのファイルとフォルダを「検索」するには?

0**権限ですべてのファイルとフォルダを「検索」するには?

多くのファイルとフォルダの権限が000に設定されている奇妙な状況に直面しました。この問題は次の方法で簡単に解決できます。

sudo find . -perm 000 -type f -exec chmod 664 {} \; 
sudo find . -perm 000 -type d -exec chmod 775 {} \;

残念ながら、044のような奇妙な権限と他の奇妙な設定のために問題が少し複雑であることに突然気づきました。これは分散して予測不可能であることが判明しました。

0**やその他の非常に制限された権限の設定などの権限を取得する方法はありますか?

答え1

私は次のようなものを使用します:

find . ! -perm -u=r ! -perm -u=w ! -perm -u=x -ls

または8進表記法を好む場合:

find . ! -perm -400 ! -perm -200 ! -perm -100 -ls

残念ながら、これをオプションにする方法がわかりません-perm

-ls同様の出力をサポートしていないシステム(通常はPOSIXではありません)で置き換えることができる部分を除いて、上記の構文は標準です。-exec ls -disl {} +find-ls

答え2

そして牛に似た一種の栄養find、「所有者に設定されているすべてのビット」と一致しないファイルを見つけてこれを行うことができます。

find . ! -perm /700

また、例えばFreeBSDfindはい

find . ! -perm +700

どちらも同じように動作します。-perm /700ORは、所有者権限ビットが設定されている場合は一致し、-perm +700所有者権限ビットが設定されていない場合は!値が無効になるため、! -perm /700ORは一致します。! -perm +700他のビットは無視されます。

答え3

sfindまたは、どのプログラムでlibfindまたはを使用している場合は、次のものを使用BSD findできます。

find path -perm +0xxx

パターンセットに記載されているビットを含むファイルを見つけます。

find . ! -perm +0700

状況に合わせてください。注:これも適用されますGNU find

これは、POSIXで言及されていない、またはSVr4ベースのシステムで実装されていない拡張ですfind

関連情報