get/setfatr なしでファイルからユーザー xattrs を消去するアイデア

get/setfatr なしでファイルからユーザー xattrs を消去するアイデア

SquashFSを使用し、他のコンピュータにはr / oでマウントするルートファイルシステムを含むディレクトリがあります。

しかし、SquashFS以前は、ファイルシステムからすべてのユーザーネームスペースxattrsを消去したいと思います。これはgetfattr小さなループスクリプトの場合は些細なことですが、依存関係setfattrとして導入するのを避けたいと思います。

トリッキーな部分は、ユーザーxattrsだけを消去したいということです。セキュリティーxattrsにはSELinuxタグが含まれているため、維持する必要があります。したがって、単にSquashにxattrsを収集しないように指示することはオプションではありません。

私が持っている1つのアイデアは、ファイルシステムのサイズを特定し、そのサイズの空のファイルを割り当て、ext4でフォーマットし、を使用してマウントし、-o nouser_xattrrそこにファイルをコピーして圧縮することでした。これはうまくいきますが、面倒でファイルを収容するのに十分なスペースがあることを願っています。 xattrのサポートがなく、メモリが不足している可能性があるため、tmpfsは機能しません。

別のアイデアがありますか?

答え1

GNU tarはxattrsを読み取ってフィルタリングできます。https://www.gnu.org/software/tar/manual/html_node/Extended-File-Attributes.html

sqfstartarアーカイブからSquashfsファイルシステムを作成することができます(バージョン4.5以降)。

そのように

tar --xattrs --xattrs-exclude='user.*' -c your-directory | sqfstar img.sqfs

動作する必要があります。

関連情報