xattrとchattrの違い


9

関係との違いは何であるxattrとはchattrchattrLinuxで属性を設定すると、Linuxカーネルとiノードメタデータ内で何が起こっているのか知りたい。


私は昨日関連する質問に長い回答を書きました。役立つかもしれません-unix.stackexchange.com/questions/118840/…。このattrコマンドはXFSファイルシステム向けであり、同等のファイルシステム独立コマンドはsetfattr
Graeme

回答:


13

Linuxのlsattr/ chattrで処理される属性で、その一部はかなりの数のファイルシステム(ext2 / 3/4、reiserfs、JFS、OCFS2、btrfs、XFS、nilfs2、hfsplus ...)で保存でき、CIFSでクエリすることもできます。 / SMB(POSIX拡張機能がある場合)はフラグです。属性を無効または有効にするためにオンまたはオフにできるビット(単なる不変またはアーカイブなど)。それらがどのように格納されるかはファイルシステム固有ですが、一般的にはiノード内の16/32/64ビットレコードとしてです。

フラグの完全なリストはLinuxネイティブファイルシステム(ext2 / 3/4、btrfs ...)にありますが、すべてのフラグがすべてのFSに適用されるわけではなく、他の非ネイティブFSの場合、Linuxはそれらを同等のものにマップしようとします対応するファイルシステムの機能。たとえば、OSXによってHFS +ファイルシステムに保存されているsimmutableフラグは、Linuxの対応する不変フラグにマップされますchattr。どのファイルシステムがどのフラグをサポートしているかは、ほとんど文書化されていません。多くの場合、カーネルソースコードを読み取ることが唯一のオプションです。

一方、Linuxで、setfattrまたはattrLinuxで設定された拡張属性は、フラグ以上のものを格納します。それらはファイルにも添付され、(キーと値の両方で)バイトの任意の配列にできるキー/値のペアです(ただし、一部のファイルシステムではサイズに制限があります)。

キーは、たとえば:system.posix_acl_accessまたはにすることができますuser.rsync.%statsystem名前空間は(あなたとPOSIX ACLを変更しませんシステム用に予約されていsetfattrますが、より多く持つsetfacl一方で、POSIX ACLはちょうど、少なくともいくつかのファイル・システム上の拡張属性として保存することが起こる)user名前空間がアプリケーションで使用することができ、ここで(スーパーユーザーではない場合に、所有権や権限に関する情報を格納rsyncするために、その--fake-superオプションに使用します)。

繰り返しになりますが、それらがどのように格納されるかはファイルシステム固有です。詳細については、WikiPediaを参照してください


ドゥlsattr/ chattr非ための作業extファイルシステム?そうでない場合ext、Linux 以外のシステムでフラグをどのように変更しますか?また、attrmanページには、XFS用に書かれていると記載されています(私にとっては動作しますがext4)。昨日実際に調べてみたのですが、良い情報が手に入りません。見てください- unix.stackexchange.com/questions/118840/...
グレアム・

@Graeme、それらの質問に対する答えは私の答えにあります。lsattr/chattrファイルフラグ用です。すべてのフラグがすべてのファイルシステムでサポートされているわけではありません。たとえば、圧縮などの一部のフラグはext4では機能しませんが、btrfsでは機能します。
ステファンChazelas

興味があれば、いくつかのファイルシステムでこれらのフラグをテストするスクリプトを作成し、その結果を上記のリンクに掲載しました。私はそれらのいずれかを設定/読むことに成功していませんreiserfs
Graeme

-1

すべてがstroed されていinodeます。ファイルを変更すると、実際にそのinode.scripting も変更され、適切なコマンドが得られます。

stat --format=%a yourfile

%variable便利なものを使用して返すことができますinode

しかしあなたの答え:

xattrMacOSとchattrLinuxボックスにあります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.