Qualquer sistema operacional precisa contar com um bom controle de acesso aos seus arquivos e diretórios. Isso é o primeiro passo para garantir a segurança e a integridade dos dados gravados no sistema.

Além disso, como poderemos garantir que as configurações do sistema não serão alteradas por pessoas não autorizadas, se o sistema operacional não conta com um bom controle de acesso aos seus arquivos e diretórios.

No LINUX o controle de acesso aos arquivos e diretórios possui uma forma particular de funcionamento, muito diferente da maioria dos demais sistemas operacionais. Apesar de bem simples, o controle é eficaz e garante a segurança do sistema, se bem configurado.

Veremos como podemos garantir que o nosso sistema LINUX esteja com seus dados e seus arquivos de configuração seguros e bem salvos de qualquer tipo de alteração indevida.

Primeiramente, é importante destacar que, em sistemas LINUX, existem dois modos de se definir as permissões em arquivos e diretórios. Iremos conhecer os dois modos, mas é importante salientar que, existe um deles que é mais difundido e mais utilizado por toda a comunidade.

Outro detalhe que devemos lembrar é que as permissões são dadas para contas de usuários e para contas de grupos no sistema. Isso quer dizer que, os direitos efetivos de um usuário em arquivos e diretórios são a soma das permissões deste usuário com as permissões dos grupos aos quais este usuário pertence.

Cada arquivo/diretório possui três níveis de permissão:

Usuário dono: Também conhecido como owner, é o proprietário do arquivo/diretório;

Grupo dono: É o grupo proprietário do arquivo/diretório, o grupo pode contar um usuário (geralmente o usuário dono) ou vários usuários

Outros: Aplica-se a qualquer outro usuário, que não se encaixe nos níveis anteriores.

 

  • Modo Simbólico / Textual

Neste modo, será utilizado o comando chmod e, além dele, as permissões em modo simbólico, os operadores e as notações simbólicas. Vejamos abaixo, a explicação de cada um dos itens citados.

Permissões LINUX

r           leitura

w         gravação

x          execução

Importante destacar: Com base nas permissões mostradas acima, como poderíamos fazer para dar permissão de exclusão a um usuário em um arquivo qualquer do sistema? Tarefa simples e complicado ao mesmo tempo. Simples porque, quando dermos a um usuário a permissão de gravação em um arquivo, automaticamente este usuário terá permissão de exclusão para este arquivo. Complicado porque, um usuário que tem permissão de alteração em um arquivo, pode excluí-lo acidentalmente e complicar a vida do administrador do sistema. Sendo que existem outras formas de garantir que este arquivo não seja excluído acidentalmente.

 

Operadores do modo Simbólico

+          Utilizado para adicionar a permissão

–           Utilizado para remover a permissão

=          Utilizado para atribuir somente a permissão especificada na linha de comando

 

Notação simbólica

u          Usuário dono do arquivo

g          Grupo dono do arquivo

o          Outros usuários do sistema

a          Utilizado para definir permissões tanto para o usuário dono, para o grupo dono e para os outros usuários do sistema.

 

Exemplificando: $ chmod u+rw,g+w,o-rwx arquivoteste.txt

Este comando adiciona leitura e escrita/gravação para o dono, adiciona escrita/gravação para o grupo e remove todas as outras permissões para outros usuários em arquivoteste.txt.

  • Modo Octal

Este é o modo mais utilizado para definirmos permissões no LINUX. Isso porque, além de ser mais fácil, é também mais prático quando digitado na linha de comando. Para utilizarmos o modo octal, basta apenas sabermos os valores octais de cada uma das três permissões existentes no LINUX.

 

Valores octais das permissões LINUX

r           leitura              4

w         gravação         2

x          execução         1

Exemplificando: $ chmod 640 arquivoteste.txt

Configura a permissão do arquivoteste.txt como sendo 640:

6 = leitura(4) + escrita(2) para o usuário dono,

4 = leitura para o grupo e

0 (nenhuma permissão) para outros.

 

SUID BIT, SGID BIT e STICKY BIT

O suid bit, o sgid bit e o sticky bit são permissões avançadas que podem ser utilizadas para garantir ainda mais a segurança do sistema. Vejamos agora a função de cada uma dessas permissões.

– suid bit : um arquivo com o suid bit ativado, será executado com as permissões do usuário dono do arquivo e não com as permissões do usuário que o executou (valor octal = 4).

– sgid bit : em um diretório com o sgid bit ativado, qualquer arquivo que seja criado dentro dele, será criado com o mesmo grupo dono do diretório (valor octal = 2).

– sticky bit : em um diretório com o sticky bit ativado, somente o dono do arquivo poderá remove-lo, ou seja, mesmo que um usuário qualquer tentar remover este arquivo e tenha permissão para isso, o sticky bit não permitirá (valor octal = 1).

 

IMPORTANTE: Dentre essas três permissões avançadas apresentadas acima, podemos dizer que somente as permissões sgid bit e sticky bit, respectivamente, podem ser utilizadas com a finalidade de manter a segurança do sistema. A primeira delas, suid bit, é muito perigosa e deve ser evitada em qualquer sistema, mesmo os que não tenham conexões ativas com a Internet. Isso porque, imagine que um script tenha como usuário dono o root. Se este script estiver com o suid bit ativado, qualquer usuário que executá-lo, o estará fazendo com direito de root.

Importante também salientar que para trabalharmos com permissões no sistema de arquivos do LINUX, sempre temos que utilizar dois comandos em conjunto. Um deles será utilizado para definir permissões nos arquivos e diretórios e o outro será utilizado para definir quem terá estas permissões.