Attributi estesi

serie di informazioni aggiuntive che possono essere associate a un file

In informatica, nell'ambito dei file system, gli attributi estesi (EA - Extended Attributes) sono una serie di informazioni aggiuntive che possono essere associate a un file. A differenza dei normali attributi dei file, gli EA possono essere di qualsiasi tipo e possono fornire informazioni aggiuntive ad una applicazione, al sistema operativo, al file system o all'utente. Un utente, ad es., può associare ad un file una descrizione, delle brevi note o delle immagini.

Gli attributi estesi non sono parte del file a cui vengono associati ma vengono salvati separatamente e gestiti dal file system. In particolare ogni attributo esteso viene identificato da una coppia (nome, valore) per permettere il reperimento delle informazioni salvate.

Implementazioni modifica

AIX modifica

In AIX, il filesystem JFS2 v2 supporta gli attributi estesi, che sono accessibili con il comando getea.[1] Le API dei comandi getea,[2] setea,[3] listea,[4] statea,[5] e removeea[6] permettono di impostare, elencare, recuperare, leggere e rimuovere gli attributi estesi.

FreeBSD modifica

In FreeBSD 5.0 e successivi i filesystem UFS1 e UFS2 li supportano, usando la famiglia di chiamate di sistema extattr_. Ogni file può avere una lista di attributi estesi. Ogni attributo consiste di un nome e i dati a esso associati. Il nome deve essere una stringa terminata da zero, ed esistere in un namespace identificato da un numero intero. Al momento esistono due namespace: 'user' e 'system'. Il namespace 'user' non ha restrizioni su nomi e contenuti, mentre il namespace 'system' è usato soprattutto dal kernel per le access control list e il mandatory access control. Da FreeBSD 8.0 in poi, gli attributi estesi sono supportasti anche nel filesystem ZFS.

Linux modifica

Nel kernel Linux, i filesystem che supportano attributi estesi (abbreviati in xattr) sono ext2, ext3, ext4, JFS, Squashfs, ReiserFS, XFS, Btrfs, Lustre e OCFS2 1.6 ma il supporto deve essere abilitato nella configurazione del kernel. Qualsiasi file o directory può avere attributi estesi, consistenti in un nome e in dati associati; il nome dev'essere una stringa terminata da zero prefissata da un identificatore di namespace e un carattere punto. Al momento (2014), esistono quattro namespace: 'user', 'trusted', 'security' and 'system'. Il namespace 'user' non ha restrizioni su nomi e contenuti, mentre il namespace 'system' è usato dal kernel per le access control list. Il namespace 'security' è usato nella distribuzione SELinux.

Gli attributi estesi sono poco usati nei programmi utente in Linux, sebbene siano supportati dalla versione 2.6 in poi[7] del kernel. Beagle e Dropbox li usano, e freedesktop.org ha pubblicato raccomandazioni[8] per il loro uso corretto.

Per ext2/3/4 e btrfs, ogni attributo esteso è limitato a un solo blocco di filesystem (p.e. 4 KiB), e in ext2/3/4 nomi e valori devono essere contenuti tutti in un singolo blocco. ReiserFS invece permette attributi di dimensione arbitraria. In XFS i nomi possono essere lunghi al massimo 256 byte e terminati dal primo byte pari a zero, mentre i valori possono essere binari e lunghi fino a 64KB.

Nella maggior parte delle distribuzioni, gli attributi estesi possono essere letti e modificati con il comando attr.[9]

OS X modifica

Mac OS X 10.4 usano il filesystem HFS+, che supporta gli attributi estesi tramite un B*-tree, permettendo i named fork. Anche se i named fork in HFS+ possono supportare quantità arbitrarie di dati usando le estensioni, il SO permette solo attributi inline, il che limita la loro dimensione a quella di un singolo nodo B*-tree. Ogni file può avere una lista di attributi estesi. HFS+ supporta un numero arbitrario di named fork e non è noto se OS X impone limiti sul numero di attributi estesi ammissibili. Ogni attributo consiste di un nome e dei dati associati. Il nome è una stringa Unicode terminata da zero. Le API di macOS permettono di elencare[10], leggere[11], scrivere[12], e rimuovere[13] attributi estesi da file e directory; da Terminal si può usare l'utility xattr[14]. Da OS X Snow Leopard in poi, gli attributi estesi in spazio utente non sono conservati nei salvataggi nelle comuni applicazioni Cocoa (TextEdit, Preview etc.).

OS/2 modifica

In OS/2 1.2 e successivi, lo HPFS fu creato prevedendo espressamente gli attributi estesi, ma il loro supporto venne implementato anche nel filesystem FAT del DOS. Per compatibilità verso altri sistemi operativi che usavano partizioni FAT, gli attributi OS/2 vengono salvati in un file di nome "EA DATA. SF" posto nella root directory. Questo file è inaccessible sotto un SO che gestisce gli attributi estesi, ma modificabile sotto DOS o windows. File e directory con attributi estesi usano uno o più cluster in questo file. Il numero logico di cluster del primo cluster usato è registrato nella directory entry del file o directory proprietari. Questi due byte sono usati per altri scopi nel filesystem FAT32, per cui gli attributi estesi OS/2 non possono essere memorizzati su quel tipo di partizioni.

Parti di OS/2 2.0 e successori, come la Workplace Shell, usano molti attributi estesi standard (detti anche EAs) per identificare il tipo di file, commenti, icone e parole chiave associate al file. I programmi scritti in Rexx memorizzano una versione precompilata del codice come attributo esteso, per accelerare l'esecuzione.

Solaris modifica

Su Solaris dalla versione 9 in poi, i file possono avere degli attributi estesi che sono in realtà dei fork; la loro dimensione massima è la stessa di un file, e vengono letti e scritti proprio come normali file. Internamente vengono implementati come dei normali file e come tali acceduti, perciò i loro nomi non possono contenere caratteri "/" e i loro permessi e proprietario possono essere diversi da quelli del file a cui si riferiscono.

La versione 4 di NFS supporta gli attributi estesi nello stesso modo di Solaris.

Windows modifica

Da Windows NT in poi, i tre filesystem FAT, HPFS e NTFS supportano tutti degli attributi estesi di lunghezza limitata, implementati come parte del sottosistema OS/2. Vengono usati dai server NFS del sottosistema POSIX della Interix per implementare un sistema di permessi stile Unix. Oltre a questi, NTFS supporta attributi estesi di lunghezza infinita attraverso gli Alternate Data Streams (ADS), un tipo di fork.

Note modifica

  1. ^ getea Command – Comandi AIX
  2. ^ getea Subroutine – AIX Technical Reference: Base Operating System and Extensions, Volume 1
  3. ^ setea Subroutine – AIX Technical Reference: Base Operating System and Extensions, Volume 2
  4. ^ listea Subroutine – AIX Technical Reference: Base Operating System and Extensions, Volume 1
  5. ^ statea Subroutine – AIX Technical Reference: Base Operating System and Extensions, Volume 2
  6. ^ removeea Subroutine – AIX Technical Reference: Base Operating System and Extensions, Volume 2
  7. ^ Red Hat Enterprise Linux AS 3 Release Notes (x86 Edition), su access.redhat.com, Red Hat, 2003. URL consultato l'8 aprile 2013.
    «EA (Extended Attributes) and ACL (Access Control Lists) functionality is now available for ext3 file systems. In addition, ACL functionality is available for NFS.»
  8. ^ Guidelines for extended attributes, su freedesktop.org, 21 agosto 2009. URL consultato l'8 aprile 2013 (archiviato dall'url originale il 4 febbraio 2012).
  9. ^ Introduction to attr, su Beyond Linux From Scratch, 4 marzo 2013. URL consultato l'8 aprile 2013 (archiviato dall'url originale il 1º maggio 2012).
  10. ^ listxattr(2), su unix.com.
  11. ^ getxattr(2), su unix.com.
  12. ^ setxattr(2), su unix.com.
  13. ^ removexattr(2), su unix.com.
  14. ^ xattr(1), su unix.com.

Collegamenti esterni modifica

  Portale Informatica: accedi alle voci di Wikipedia che trattano di informatica