変更できない属性セットを持つファイルを検索するには?

変更できない属性セットを持つファイルを検索するには?

構成監査の理由から、ext3ファイルシステムで不変属性セット(pass chattr +i)を持つファイルを検索できるようにしたいと思います。findこのタスクまたは同様のオプションが見つかりません。さてlsattr、各ディレクトリの出力を解析するスクリプトを直接書く必要があるようです。より良いアプローチを提供する標準ユーティリティはありますか?

ベストアンサー1

これは、コマンドパイプラインを介してlsattrコマンドをパイプすることによって部分的に実行できますgrep

lsattr -R | grep +i

ただし、ファイルext3システム全体に言及すると、検索には他のいくつかのディレクトリが含まれ、/proc無視/devしたいいくつかのエラーが報告されることがあります。おそらくコマンドを実行できます。

lsattr -R 2>/dev/null | grep -- "-i-"

grepPCREツールを使用して、grep「-i-」をより厳密に一致させることができます。

lsattr -R 2>/dev/null | grep -P "(?<=-)i(?=-)"

これは次の状況に適用されます。

$ lsattr -R 2>/dev/null afile | grep -P "(?<=-)i(?=-)"
----i--------e-- afile

しかし、それは完璧ではありません。 immutableフラグの周りに他の属性が有効になっている場合、その属性は一致せず、名前は上記のパターンと一致するファイルにだまされます。たとえば、次のようになります。

$ lsattr -R 2>/dev/null afile* | grep -P "(?<=-)i(?=-)"
----i--------e-- afile
-------------e-- afile-i-am

次のようにパターンをもう少し強化できます。

$ lsattr -a -R 2>/dev/null afile* | grep -P "(?<=-)i(?=-).* "
----i--------e-- afile

しかし、それでも脆弱であるため、ファイルシステムのファイルに基づいて追加の調整が必要です。言うまでもなくツイートファイル名に改行文字を含めると、上記のパターンをかなり簡単に操作できることが注釈に記載されていますgrep

引用する

https://groups.google.com/forum/#!topic/alt.os.linux/LkatROg2SlM

おすすめ記事