多くのファイルとフォルダの権限が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 /700
ORは、所有者権限ビットが設定されている場合は一致し、-perm +700
所有者権限ビットが設定されていない場合は!
値が無効になるため、! -perm /700
ORは一致します。! -perm +700
他のビットは無視されます。
答え3
sfind
または、どのプログラムでlibfind
またはを使用している場合は、次のものを使用BSD find
できます。
find path -perm +0xxx
パターンセットに記載されているビットを含むファイルを見つけます。
find . ! -perm +0700
状況に合わせてください。注:これも適用されますGNU find
。
これは、POSIXで言及されていない、またはSVr4ベースのシステムで実装されていない拡張ですfind
。