quarta-feira, 24 de agosto de 2016

ACLs e XATTRs nos principais sistemas de arquivos Linux

EXT4 XFS
POSIX_ACL CONFIG_EXT4_FS_POSIX_ACL CONFIG_XFS_POSIX_ACL
XATTR CONFIG_EXT4_FS_XATTR[1] sempre habilitado
SECURITY CONFIG_EXT4_FS_SECURITY CONFIG_XFS_SECURITY[2]
OP. MOUNT desnecessárias[3] desnecessárias

Btrfs JFS
POSIX_ACL CONFIG_BTRFS_FS_POSIX_ACL CONFIG_JFS_POSIX_ACL
XATTR sempre habilitado sempre habilitado
SECURITY sempre habilitado CONFIG_JFS_SECURITY
OP. MOUNT desnecessárias desnecessárias

ReiserFS
POSIX_ACL CONFIG_REISERFS_FS_POSIX_ACL
XATTR CONFIG_REISERFS_FS_XATTR
SECURITY CONFIG_REISERFS_FS_SECURITY
OP. MOUNT acl,user_xattr

Legenda:

- POSIX_ACL: configuração requerida para habilitar ACLs.
- XATTR: configuração requerida para habilitar atributos extendidos (XATTRs).
- SECURITY: configuração requerida para permitir o uso de XATTRs por módulos LSM (SELinux, Smack, etc.).
- OP. MOUNT: opções de montagem requeridas para habilitar ACLs e XATTRs.

As configurações dos três primeiros itens são definidas na hora da compilação e são controladas pelos empacotadores das distribuições. São recursos básicos, habilitados em praticamente todo lugar.

Caso complicado: EXT2/3/4

Desde o kernel 2.6.33 é possível usar o driver ext4 para montar volumes EXT2 e EXT3 (CONFIG_EXT4_USE_FOR_EXT23). No 4.3, o driver ext3 foi removido; portanto, o ext4 é sempre usado em volumes EXT3 a partir dessa versão. O driver ext2 continua disponível e a configuração para usar o ext4 em volumes EXT2 foi renomeada para CONFIG_EXT4_USE_FOR_EXT2. Levando em conta que desde o 2.6.38 o driver ext4 aplica as opções acl,user_xattr por padrão, caso sua distribuição tenha um kernel minimamente recente e habilite CONFIG_EXT4_USE_FOR_EXT23 ou CONFIG_EXT4_USE_FOR_EXT2 (a maioria habilita[4]), sistemas EXT2 e EXT3 também sempre terão suporte a ACLs e XATTRs sem precisar mexer nas opções de montagem.

Desde muito tempo atrás (lá na pré-história do kernel 2.4), sistemas EXT permitem que algumas opções de montagem pré-definidas sejam salvas em seus superblocos, o que possibilita, na hora da criação do sistema de arquivos, ao mke2fs (e seus atalhos de conveniência mkfs.ext2, mkfs.ext3 e mkfs.ext4) as definir. O mesmo pode ser feito posteriormente através da opção -o da ferramenta tune2fs. São respeitadas pelos três drivers, ext2, ext3 e ext4. A partir da versão 1.42, o mke2fs cria sistemas de arquivos EXT2/3/4 com as opções acl,user_xattr salvas no superbloco por padrão (redundante[5] com o driver ext4 desde o kernel 2.6.38). Note que as opções noacl,nouser_xattr, usadas para desabilitar os recursos, não podem ser armazenadas no superbloco[6]. Precisam ser passadas ao mount (via -o) ou postas no fstab.

Considerando volumes EXT2/3/4 com defaults em fs_mntops (fstab):

ACLs e XATTRs
Kernel ≥ 2.6.38 com
CONFIG_EXT4_USE_FOR_EXT23 ou
CONFIG_EXT4_USE_FOR_EXT2
habilitados
Kernel ≥ 2.6.38 sem
CONFIG_EXT4_USE_FOR_EXT23 ou
CONFIG_EXT4_USE_FOR_EXT2
EXT4: habilitados
EXT3 (kernel ≥ 4.3): habilitados
EXT3 (kernel < 4.3) e EXT2: dependem
das opções salvas no superbloco[7]
Kernel < 2.6.38 dependem das opções salvas
no superbloco

Ou seja, com exceção do ReiserFS, que ainda requer opções de montagem, os principais sistemas de arquivos vêm de fábrica com ACLs e XATTRs habilitados por padrão em distribuições modernas.


[1] A partir do kernel 3.8, a opção não existe mais e o suporte é sempre habilitado.
[2] A partir do kernel 2.6.26, a opção não existe mais e o suporte é sempre habilitado.
[3] Desde o kernel 2.6.38.
[4] CentOS 7+, Debian 8+, Ubuntu 14.04+, Fedora, openSUSE, Arch.
[5] Mesmo depois de remover as opções do superbloco com tune2fs -o ^acl,^user_xattr <dispositivo> e remontá-lo, o sistema de arquivos continuará suportando ACLs e XATTRs.
[6] Desde o kernel 2.6.35 e e2fsprogs 1.41.13, opções de montagem arbitrárias podem ser armazenadas no superbloco com tune2fs -E mount_opts="opção1 opção2 ..." <dispositivo>. No entanto, são interpretadas apenas pelo driver ext4 e não servem para noacl,nouser_xattr.
[7] Ver com tune2fs -l <dispositivo>.

Nenhum comentário:

Postar um comentário