構成監査の理由から、ext3ファイルシステムで不変属性セット(pass chattr +i
)を持つファイルを検索できるようにしたいと思います。find
このタスクまたは同様のオプションが見つかりません。さてlsattr
、各ディレクトリの出力を解析するスクリプトを直接書く必要があるようです。より良いアプローチを提供する標準ユーティリティはありますか?
ベストアンサー1
これは、コマンドパイプラインを介してlsattr
コマンドをパイプすることによって部分的に実行できますgrep
。
lsattr -R | grep +i
ただし、ファイルext3
システム全体に言及すると、検索には他のいくつかのディレクトリが含まれ、/proc
無視/dev
したいいくつかのエラーが報告されることがあります。おそらくコマンドを実行できます。
lsattr -R 2>/dev/null | grep -- "-i-"
grep
PCREツールを使用して、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