Diferença entre xattr e chattr

8

Qual é a relação e a diferença entre xattr e chattr ? Eu quero saber quando eu definir um atributo chattr no Linux o que está acontecendo dentro do kernel Linux e metadados inode.

    
por Cerberuzs 17.03.2014 / 08:17

2 respostas

9

Os atributos manipulados por lsattr / chattr no Linux e alguns deles podem ser armazenados por alguns sistemas de arquivos (ext2 / 3/4, reiserfs, JFS, OCFS2, btrfs, XFS, nilfs2, hfsplus ...) e até mesmo consultados sobre CIFS / SMB (quando com extensões POSIX) são sinalizadores. Apenas bits que podem ser ativados ou desativados para desativar ou ativar um atributo (como imutável ou arquivo ...). Como eles são armazenados é específico do sistema de arquivos, mas geralmente como um registro de 16/32/64 bits no inode.

A lista completa de sinalizadores é encontrada em sistemas de arquivos nativos do Linux (ext2 / 3/4, btrfs ...), embora nem todos os sinalizadores se apliquem a todos os FS, e para outros FS não nativos, o Linux tenta mapear -los para recursos equivalentes no sistema de arquivos correspondente. Por exemplo, o sinalizador simmutable conforme armazenado por OSX em Os sistemas de arquivos HFS + são mapeados para o sinalizador imutável correspondente no Linux chattr . Qual sinalizador é suportado por qual sistema de arquivos é dificilmente documentado. Muitas vezes, ler o código-fonte do kernel é a única opção.

Atributos estendidos, por outro lado, como definido com setfattr ou attr no Linux armazenam mais de sinalizadores. Eles também são anexados a um arquivo e são pares de chave / valor que podem ser (tanto valores quanto chaves) matrizes arbitrárias de bytes (embora com limitação de tamanho em alguns sistemas de arquivos).

A chave pode ser, por exemplo: system.posix_acl_access ou user.rsync.%stat . O namespace system é reservado para o sistema (você não alteraria as ACLs POSIX com setfattr , mas mais com setfacl , as ACLs POSIX seriam armazenadas como atributos estendidos pelo menos em alguns sistemas de arquivos), enquanto o namespace user pode ser usado por aplicativos (aqui rsync usa-o para sua opção --fake-super , para armazenar informações sobre propriedade ou permissões quando você não é superusuário).

Mais uma vez, como eles são armazenados é específico do sistema de arquivos. Veja WikiPedia para mais informações .

    
por 17.03.2014 / 11:46
-1

Tudo foi superado em inode .Quando você altera um arquivo, na verdade você altera seu inode .Para script, você tem um bom comando:

stat --format=%a yourfile

Você pode usar %variable e retornar um valor útil de inode

Mas sua resposta:

xattr está no MacOS e chattr na caixa linux.

    
por 17.03.2014 / 08:49