Qual é a relação e a diferença entre xattre chattr? Quero saber quando definir um chattratributo no Linux o que está acontecendo nos metadados do kernel e inode do Linux.
Escrevi ontem uma resposta longa sobre uma pergunta relacionada, que pode ser útil - unix.stackexchange.com/questions/118840/… . Observe que o attrcomando é destinado a sistemas de arquivos XFS, o comando independente do sistema de arquivos equivalente ésetfattr
Graeme
Respostas:
13
Os atributos manipulados pelo lsattr/ chattrno Linux e alguns dos quais podem ser armazenados por alguns sistemas de arquivos (ext2 / 3/4, reiserfs, JFS, OCFS2, btrfs, XFS, nilfs2, hfsplus ...) e até consultados pelo 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 arquivar ...). 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 nos sistemas de arquivos nativos do Linux (ext2 / 3/4, btrfs ...), embora nem todos os sinalizadores se apliquem a todo o FS e, para outros FS não nativos, o Linux tenta mapeá-los para equivalentes recursos no sistema de arquivos correspondente. Por exemplo, o sinalizador simmutable armazenado pelo OSX nos sistemas de arquivos HFS + é mapeado para o sinalizador imutável correspondente no Linux chattr. Qual sinalizador é suportado por qual sistema de arquivos quase não está documentado. Freqüentemente, a leitura do código fonte do kernel é a única opção.
Atributos estendidos, por outro lado, conforme definido com setfattrou attrno Linux, armazenam mais que sinalizadores. Eles também estão anexados a um arquivo e são pares de chave / valor que podem ser (chave e valor) 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_accessou user.rsync.%stat. O systemespaço para nome é reservado para o sistema (você não alteraria as ACLs POSIX com setfattr, mas mais com setfacl, as ACLs POSIX são armazenadas como atributos estendidos pelo menos em alguns sistemas de arquivos), enquanto o userespaço para nome pode ser usado por aplicativos (aqui rsyncusa-o como --fake-superopção, para armazenar informações sobre propriedade ou permissões quando você não é superusuário).
Novamente, como eles são armazenados é específico do sistema de arquivos. Veja WikiPedia para mais informações .
Fazer lsattr/ chattrtrabalho para não extsistemas de arquivos? Se não, como você mudaria os sinalizadores em extsistemas não no Linux? Além disso, a attrpágina de manual diz que foi escrita para o XFS (mesmo que funcione para mim ext4). Na verdade, passei muito tempo analisando isso ontem, é difícil obter boas informações. Veja - unix.stackexchange.com/questions/118840/…
Graeme
@ Graeme, as respostas para essas perguntas estão na minha resposta. lsattr/chattrsão para sinalizadores de arquivo. Nem todos os sinalizadores são suportados por todos os sistemas de arquivos, por exemplo, alguns deles, como a compactação, não funcionam no ext4, mas no btrfs.
Stéphane Chazelas 17/03/14
Se você estiver interessado, escrevi um script para testar esses sinalizadores em alguns sistemas de arquivos e colocar os resultados na minha resposta vinculada acima. Não tive sucesso definindo / lendo nenhum deles reiserfs.
Graeme
-1
Tudo foi incluído inode. Quando você altera um arquivo, na verdade, você altera seu inodescript. Para obter um bom comando:
stat --format=%a yourfile
Você pode usar %variablee retornar um útil deinode
attr
comando é destinado a sistemas de arquivos XFS, o comando independente do sistema de arquivos equivalente ésetfattr
Respostas:
Os atributos manipulados pelo
lsattr
/chattr
no Linux e alguns dos quais podem ser armazenados por alguns sistemas de arquivos (ext2 / 3/4, reiserfs, JFS, OCFS2, btrfs, XFS, nilfs2, hfsplus ...) e até consultados pelo 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 arquivar ...). 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 nos sistemas de arquivos nativos do Linux (ext2 / 3/4, btrfs ...), embora nem todos os sinalizadores se apliquem a todo o FS e, para outros FS não nativos, o Linux tenta mapeá-los para equivalentes recursos no sistema de arquivos correspondente. Por exemplo, o sinalizador simmutable armazenado pelo OSX nos sistemas de arquivos HFS + é mapeado para o sinalizador imutável correspondente no Linux
chattr
. Qual sinalizador é suportado por qual sistema de arquivos quase não está documentado. Freqüentemente, a leitura do código fonte do kernel é a única opção.Atributos estendidos, por outro lado, conforme definido com
setfattr
ouattr
no Linux, armazenam mais que sinalizadores. Eles também estão anexados a um arquivo e são pares de chave / valor que podem ser (chave e valor) 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
ouuser.rsync.%stat
. Osystem
espaço para nome é reservado para o sistema (você não alteraria as ACLs POSIX comsetfattr
, mas mais comsetfacl
, as ACLs POSIX são armazenadas como atributos estendidos pelo menos em alguns sistemas de arquivos), enquanto ouser
espaço para nome pode ser usado por aplicativos (aquirsync
usa-o como--fake-super
opção, para armazenar informações sobre propriedade ou permissões quando você não é superusuário).Novamente, como eles são armazenados é específico do sistema de arquivos. Veja WikiPedia para mais informações .
fonte
lsattr
/chattr
trabalho para nãoext
sistemas de arquivos? Se não, como você mudaria os sinalizadores emext
sistemas não no Linux? Além disso, aattr
página de manual diz que foi escrita para o XFS (mesmo que funcione para mimext4
). Na verdade, passei muito tempo analisando isso ontem, é difícil obter boas informações. Veja - unix.stackexchange.com/questions/118840/…lsattr/chattr
são para sinalizadores de arquivo. Nem todos os sinalizadores são suportados por todos os sistemas de arquivos, por exemplo, alguns deles, como a compactação, não funcionam no ext4, mas no btrfs.reiserfs
.Tudo foi incluído
inode
. Quando você altera um arquivo, na verdade, você altera seuinode
script. Para obter um bom comando:Você pode usar
%variable
e retornar um útil deinode
Mas sua resposta:
xattr
está no MacOS echattr
na caixa Linux.fonte