Introdução
Tudo no Linux é um arquivo. Diferentemente de outros sistemas operacionais e assim como o Unix, o Linux trata todas as partes do sistema como arquivos, como, por exemplo, dispositivos de hardware, que são acessados por meio de arquivos que os representam e até mesmo a comunicação entre processos (programas em execução) se dá através de arquivos.
Genericamente, os sistemas de arquivos suportados pelo Linux mantém, associados a cada arquivo, informações como identificadores do dono do arquivo, grupo do dono, o tipo do arquivo, as permissões relativas ao arquivo, data e hora de criação e última modificação etc.
Permissões
Segundo [1], permissão é o ato de dar liberdade, poder ou licença para; consentir; autorizar a fazer uso de; não obstar; tolerar. Esta é justamente a intenção das permissões dos arquivos no sistema: limitar o acesso aos arquivos, de acordo com a importância dos mesmos e com o desejo do seu dono, de forma a manter a segurança e integridade do sistema.
Como já foi dito, cada arquivo possui, associado a ele, um conjunto de atributos e um deles são as permissões relativas a ele próprio. Estas permissões podem ser entendidas como um número de 12 bits onde, obviamente, cada bit pode variar entre zero e um, indicando a ausência ou presença de uma permissão específica (ao longo do artigo será mostrado que as permissões se subdividem em grupos e cada bit representa um tipo de permissão específico).
Tudo no Linux é um arquivo. Diferentemente de outros sistemas operacionais e assim como o Unix, o Linux trata todas as partes do sistema como arquivos, como, por exemplo, dispositivos de hardware, que são acessados por meio de arquivos que os representam e até mesmo a comunicação entre processos (programas em execução) se dá através de arquivos.
Genericamente, os sistemas de arquivos suportados pelo Linux mantém, associados a cada arquivo, informações como identificadores do dono do arquivo, grupo do dono, o tipo do arquivo, as permissões relativas ao arquivo, data e hora de criação e última modificação etc.
Permissões
Segundo [1], permissão é o ato de dar liberdade, poder ou licença para; consentir; autorizar a fazer uso de; não obstar; tolerar. Esta é justamente a intenção das permissões dos arquivos no sistema: limitar o acesso aos arquivos, de acordo com a importância dos mesmos e com o desejo do seu dono, de forma a manter a segurança e integridade do sistema.
Como já foi dito, cada arquivo possui, associado a ele, um conjunto de atributos e um deles são as permissões relativas a ele próprio. Estas permissões podem ser entendidas como um número de 12 bits onde, obviamente, cada bit pode variar entre zero e um, indicando a ausência ou presença de uma permissão específica (ao longo do artigo será mostrado que as permissões se subdividem em grupos e cada bit representa um tipo de permissão específico).
A primeira divisão que pode ser feita neste número de 12 bits, separa 3 bits para determinar os atributos do arquivo, que será abordado mais a frente, e o restante (9 bits) para a determinação da proteção do arquivo.
Bits de Atributo
Os bits de atributo definem um controle adicional às permissões de proteção do arquivo [2].
Os atributos de um arquivo são três e cada um deles desempenha uma função bem específica. O primeiro é conhecido como bit setuid, que, se estiver ativado (valor igual a 1), faz com que o arquivo seja executado como se o fosse pelo seu dono (não faz sentido para diretórios) [2].
O segundo atributo é o bit setgid, que, se estiver ativado, faz com que o arquivo seja executado como se o fosse por um membro do grupo do seu dono (todo arquivo criado em um diretório com o bit setgid ativado, é criado com o mesmo grupo do diretório) [2].
Por fim, o terceiro atributo é conhecido como bit sticky e, se estiver ativado, faz com que o arquivo possa ser apagado apenas pelo seu dono [2]. Um grande exemplo da utilização deste bit de atributo está no diretório /tmp, onde todos os usuários cadastrados no sistema podem utilizar o diretório livremente. Contudo, nenhum usuário pode apagá-lo, visto que ele pertence ao superusuário (root) e possui o seu bit sticky ativado. Sendo assim, pode ser apagado apenas pelo usuário root.
Desta maneira, pode-se reescrever os bits de atributo com sua notação simbólica, onde, da esquerda para a direita, os bits podem substituídos por letras que os simbolizam. O primeiro bit pode ser substituído por um S, que simboliza o bit setuid, o segundo bit pode ser substituído por outro S, que simboliza o bit setgid e o terceiro bit, por um T, que simboliza o bit sticky, assim como mostrado na figura 3.
Bits de Proteção
Os bits de proteção definem as proteções básicas de cada arquivo (leitura – read –, escrita – write – e execução – execution). A ativação, ou não, de cada um destes bits define quem pode visualizar (ler) o arquivo, quem pode alterá-lo/apagá-lo (escrever) e/ou executá-lo (executar).
Assim como os bits de atributo, há uma subdivisão destes bits em três grupos de três bits cada: o que define as permissões para o dono do arquivo (primeiros três bits, da esquerda para a direita), as permissões para os membros do mesmo grupo do dono do arquivo (os três bits da sequência) e as permissões para os outros usuários do sistema (últimos três bits). Isto pode ser facilmente visualizado na figura 4.
Cada bit, de cada subdivisão, determina se o usuário que a subdivisão representa pode ler, escrever ou executar o arquivo. Sendo assim, pode-se utilizar as letras r (leitura), w (escrita) e x (execução) para representar, simbolicamente estes bits, como na figura 5.
Deste modo pode-se perfeitamente definir o que cada tipo de usuário pode fazer com o arquivo.
Conclusão
As permissões de arquivos são um grande trunfo do sistema operacional para manter a segurança. Apesar de parecer complicado, o seu entendimento é relativamente simples e é crucial para usuários que querem entender mais sobre o sistema que utilizam. Um detalhe bastante interessante e motivador é que o "primo do Linux", o OS X da Apple, sistema operacional usado nos Macintoshes, utiliza os mesmos conceitos aqui apresentados. Sendo assim uma motivação a mais para o aprendizado desta teoria.
[1] Rocha, R. (1995) "Minidicionário Ruth Rocha", 1ª edição, Editora Scipione.
[2] Ferreira, R. E. (2003) "Linux, Guia do Administrador do Sistema", 1ª edição, Editora Novatec.
Série Completa
[2] Ferreira, R. E. (2003) "Linux, Guia do Administrador do Sistema", 1ª edição, Editora Novatec.
Série Completa
- Permissões de Arquivos: Notações – Aprenda sobre os tipos de notações de permissões.
- Tipos de Arquivos – Conheça os diversos tipos de arquivos presentes em sistemas Unix-like.
- Permissões de Arquivos: Checagem – Aprenda como verificar quais são as permissões de determinado arquivo.
Nenhum comentário:
Postar um comentário