奇妙な状況で、000のアクセス許可が設定されたファイルとフォルダーが多数見つかりました。これは、次の方法で簡単に修復できました。
Sudo find . -perm 000 -type f -exec chmod 664 {} \;
Sudo find . -perm 000 -type d -exec chmod 775 {} \;
残念ながら、044などの奇妙な権限やその他の奇妙な設定により、問題が少し複雑であることに突然気付きました。これらがまき散らされており、予測できないことがわかりました。
0 **などの非常に制限的なアクセス許可構成を検索する方法はありますか?
私はこのようなものを使用します:
find . ! -perm -u=r ! -perm -u=w ! -perm -u=x -ls
または、8進数表記を使用する場合:
find . ! -perm -400 ! -perm -200 ! -perm -100 -ls
残念ながら、それを1つの-perm
オプションとして使用する方法はわかりません。
上記の構文は、find
が-ls
をサポートしていないシステムで-exec ls -disl {} +
に置き換えることができる-ls
部分(一般的ですがPOSIXではない)を除いて標準です。同様の出力。
GNU find
を使用すると、「所有者に設定されたビット」と一致しないファイルを探すことでこれを行うことができます。
find . ! -perm /700
たとえば、同じです。 FreeBSD find
は
find . ! -perm +700
これらはどちらも同じように機能します。 -perm /700
または-perm +700
所有者許可ビットのいずれかが設定されている場合に一致します。 !
はそれを否定するので、! -perm /700
または! -perm +700
所有者許可ビットが設定されていない場合に一致します。他のビットは無視されます。
sfind
を使用する場合、またはlibfind
を使用するプログラムを使用する場合、またはBSD find
を使用する場合、以下を使用できます。
find path -perm +0xxx
パターンで言及されているビットのいずれかが設定されているファイルを見つけるには、
find . ! -perm +0700
あなたの場合はうまくいくはずです。ところで、これはGNU find
でもサポートされています。
これは、POSIXには記載されておらず、SVr4ベースのfind
にも実装されていない拡張機能であることに注意してください。