web-dev-qa-db-ja.com

0 **権限を持つすべてのファイルとフォルダを「検索」するにはどうすればよいですか?

奇妙な状況で、000のアクセス許可が設定されたファイルとフォルダーが多数見つかりました。これは、次の方法で簡単に修復できました。

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

残念ながら、044などの奇妙な権限やその他の奇妙な設定により、問題が少し複雑であることに突然気付きました。これらがまき散らされており、予測できないことがわかりました。

0 **などの非常に制限的なアクセス許可構成を検索する方法はありますか?

3
ylluminate

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

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ではない)を除いて標準です。同様の出力。

8
Alexander

GNU find を使用すると、「所有者に設定されたビット」と一致しないファイルを探すことでこれを行うことができます。

find . ! -perm /700

たとえば、同じです。 FreeBSD find

find . ! -perm +700

これらはどちらも同じように機能します。 -perm /700または-perm +700所有者許可ビットのいずれかが設定されている場合に一致します。 !はそれを否定するので、! -perm /700または! -perm +700所有者許可ビットが設定されていない場合に一致します。他のビットは無視されます。

7
Stephen Kitt

sfindを使用する場合、またはlibfindを使用するプログラムを使用する場合、またはBSD findを使用する場合、以下を使用できます。

find path -perm +0xxx

パターンで言及されているビットのいずれかが設定されているファイルを見つけるには、

find . ! -perm +0700

あなたの場合はうまくいくはずです。ところで、これはGNU findでもサポートされています。

これは、POSIXには記載されておらず、SVr4ベースのfindにも実装されていない拡張機能であることに注意してください。

1
schily