Differenza tra xattr e chattr


9

Qual è la relazione e la differenza tra xattre chattr? Voglio sapere quando imposto un chattrattributo in Linux cosa sta succedendo all'interno del kernel Linux e inode i metadati.


Ieri ho scritto una lunga risposta su una domanda correlata che potrebbe essere utile - unix.stackexchange.com/questions/118840/… . Nota che il attrcomando è destinato ai filesystem XFS, il comando indipendente equivalente al filesystem èsetfattr
Graeme

Risposte:


13

Gli attributi come gestiti da lsattr/ chattrsu Linux e alcuni dei quali possono essere memorizzati da parecchi file system (ext2 / 3/4, reiserfs, JFS, OCFS2, btrfs, XFS, nilfs2, hfsplus ...) e persino interrogati su CIFS / SMB (quando con estensioni POSIX) sono flag. Solo i bit che possono essere attivati ​​o disattivati ​​per disabilitare o abilitare un attributo (come immutabile o archivio ...). Il modo in cui sono memorizzati è specifico del file system, ma generalmente come record a 16/32/64 bit nell'inode.

L'elenco completo dei flag si trova sui filesystem nativi di Linux (ext2 / 3/4, btrfs ...) sebbene non tutti i flag si applichino a tutti gli FS, e per altri FS non nativi, Linux cerca di mapparli in modo equivalente funzioni nel file system corrispondente. Ad esempio, il flag simmutabile memorizzato da OSX su file system HFS + è mappato al flag immutabile corrispondente in Linux chattr. Quale flag è supportato da quale file system è quasi mai documentato. Spesso, la lettura del codice sorgente del kernel è l'unica opzione.

Attributi estesi d'altra parte, come impostato con setfattro attrsu Linux store più di flag. Sono anche collegati a un file e sono coppie chiave / valore che possono essere (sia chiave che valore) matrici arbitrarie di byte (sebbene con limitazione di dimensioni su alcuni file system).

La chiave può essere ad esempio: system.posix_acl_accesso user.rsync.%stat. Lo systemspazio dei nomi è riservato al sistema (non cambieresti gli ACL POSIX con setfattr, ma soprattutto con setfacl, gli ACL POSIX vengono archiviati come attributi estesi almeno su alcuni file system), mentre lo userspazio dei nomi può essere utilizzato dalle applicazioni (qui rsynclo usa per la sua --fake-superopzione, per memorizzare informazioni sulla proprietà o le autorizzazioni quando non sei un superutente).

Ancora una volta, il modo in cui sono memorizzati è specifico del filesystem. Vedi WikiPedia per ulteriori informazioni .


Funzionano lsattr/ chattrfunzionano per non extfilesystem? In caso contrario, come cambieresti le bandiere su non extsistemi su Linux? Anche la attrpagina man dice che è scritto per XFS (anche se funziona per me ext4). In realtà ho passato molto tempo a esaminare questo ieri, è difficile trovare buone informazioni. Si prega di consultare - unix.stackexchange.com/questions/118840/…
Graeme

@Graeme, le risposte a queste domande sono nella mia risposta. lsattr/chattrsono per i flag di file. Non tutti i flag sono supportati da tutti i filesystem, ad esempio alcuni di essi come la compressione non funzioneranno su ext4 ma funzioneranno su btrfs.
Stéphane Chazelas,

Se sei interessato, ho scritto uno script per testare questi flag su alcuni filesystem e mettere i risultati sulla mia risposta collegata sopra. Non ho avuto successo impostando / leggendo nessuno di essi reiserfs.
Graeme,

-1

Tutto è stato accarezzato inode. Quando cambiate un file, in effetti cambiate il suo inode.per scripting avete un buon comando:

stat --format=%a yourfile

È possibile utilizzare %variablee restituire un utile dainode

Ma la tua risposta:

xattrè su MacOS e chattrsu Linux.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.