Quantos bits são os flags de acesso de um arquivo?

5

Quantos bits em um sistema de arquivos linux são usados para as permissões de um arquivo?

    
por Philoxopher 01.04.2011 / 03:08

3 respostas

8

Para adicionar as outras respostas:

As permissões tradicionais do Unix são divididas em:

  • leia ( r )
  • write ( w )
  • execute o diretório file / access ( x )

Cada um desses é armazenado como um bit, onde 1 significa permitido e 0 significa não permitido.

Por exemplo, o acesso somente leitura, geralmente escrito r-- , é armazenado como binário 100 ou octal 4 .

Existem três conjuntos dessas permissões, o que determina o acesso permitido para:

  • o proprietário do arquivo
  • o grupo do arquivo
  • todos os outros usuários

Eles são todos armazenados juntos na mesma variável, por ex. rw-r----- , significando leitura / gravação para o proprietário, somente leitura para o grupo e nenhum acesso para outros, é armazenado como 110100000 binário, 640 octal.

Então, isso faz 9 bits.

Então, há outros 3 bits especiais:

  • setuid
  • setgid
  • pegajoso

Veja man 1 chmod para detalhes sobre eles.

E, finalmente, o tipo do arquivo é armazenado usando 4 bits, por exemplo seja um arquivo regular, um diretório, um pipe, um dispositivo ou qualquer outra coisa.

Estes são todos armazenados juntos no inode e juntos formam 16 bits.

    
por 01.04.2011 / 04:30
4

Quais permissões? Permissões básicas cabem em 16 bits; ext2 usa 32 bits, além de outros 32 bits para sinalizadores de arquivo ( chattr(1) ); então, as ACLs POSIX usam espaço variável além disso. Veja /usr/include/linux/ext2_fs.h para detalhes. (ext3 e ext4 constroem em ext2 e usam principalmente a mesma estrutura.)

    
por 01.04.2011 / 03:57
3

As informações sobre arquivos são armazenadas em uma estrutura de dados chamada inode. Existe um campo nessa estrutura para o modo, que contém as permissões. Este campo no meu sistema é um curto não assinado que tem 2 bytes e 16 bits.

Dê uma olhada no fs.h na fonte do Linux para ver por si mesmo.

    
por 01.04.2011 / 03:47