Différence entre xattr et chattr

Quelle est la relation et la différence entre xattr et chattr ? Je veux savoir quand je mets un atsortingbut chattr sous Linux ce qui se passe dans le kernel Linux et les métadonnées inodes.

Les attributes gérés par lsattr / chattr sur Linux et dont certains peuvent être stockés par plusieurs filesystems (ext2 / 3/4, reiserfs, JFS, OCFS2, bfsfs, XFS, nfsfs2, hfsplus …) et même interrogés sur CIFS / SMB (avec les extensions POSIX) sont des indicateurs. Juste des bits qui peuvent être activés ou désactivés pour désactiver ou activer un atsortingbut (comme immuable ou archive …). La façon dont ils sont stockés est spécifique au système de files, mais généralement sous la forme d'un logging 16/32/64 bits dans l'inode.

La list complète des drapeaux se trouve sur les filesystems natifs Linux (ext2 / 3/4, btrfs …), mais tous les drapeaux ne s'appliquent pas à tous les filesystems. fonctionnalités dans le système de files correspondant. Par exemple, le drapeau simmutable stocké par OSX sur les filesystems HFS + est mappé au drapeau immuable correspondant dans Linux chattr . Quel drapeau est pris en charge par quel système de files est à peine documenté du tout. Souvent, la lecture du code source du kernel est la seule option.

Les attributes étendus d'autre part, comme défini avec setfattr ou attr sur Linux stockent plus de drapeaux. Ils sont également attachés à un file et sont des paires key / valeur qui peuvent être des arrays arbitraires d'octets (avec une limitation de taille sur certains filesystems).

La key peut être par exemple: system.posix_acl_access ou user.rsync.%stat . L'espace de nom system est réservé au système (vous ne setfattr pas les ACL POSIX avec setfattr , mais plus avec setfacl , les ACL POSIX sont simplement stockés en tant qu'attributes étendus au less sur certains filesystems), tandis que l'espace de noms user peut être utilisé par les applications (ici, rsync utilise pour son option --fake-super , pour stocker des informations sur la propriété ou les permissions lorsque vous n'êtes pas superuser).

Encore une fois, la façon dont ils sont stockés est spécifique au système de files. Voir WikiPedia pour plus d'informations .

Tout a été enfoncé dans l' inode . Lorsque vous changez un file, en effet vous changez son inode .pour le script vous avez une bonne command:

 stat --format=%a yourfile 

Vous pouvez utiliser %variable et returnner un utile à partir de l' inode

Mais votre réponse:

xattr est sur le MacOS et chattr sur la boîte de Linux.