Linux – Sistema de Permissões

Permissões

No Linux, as permissões são agrupadas em três atributos principais: leitura, gravação e execução (no caso de arquivos) ou listagem do conteúdo (no caso das pastas). Eles são representados, respectivamente pelas letras r,w, x.

As permissões são definidas de forma separada para o dono, o grupo (que inclui todos os usuários incluídos nele) e para os outros, ou seja, todos os demais usuários do sistema. Em geral, o dono tem acesso completo, o grupo tem permissões variáveis  e os demais apenas podem ler os arquivos, sem fazer qualquer alteração.

A ideia básica da segurança no sistema GNU/Linux é definir o acesso aos arquivos por donos, grupos e outros usuários:

  • Dono – É a pessoa que criou o arquivo ou o diretório. Normalmente, somente o dono pode modificar as permissões de acesso do arquivo. As permissões de acesso do dono de um arquivo somente se aplicam ao dono do arquivo/diretório. A identificação do dono também é chamada de user id (UID).
  • Grupo – Permite que vários usuários diferentes tenham acesso a um mesmo arquivo mesmo não sendo dono daquele arquivo. Por padrão, quando um novo usuário é criado e não especificar nenhum grupo, ele pertencerá ao grupo de mesmo nome do seu usuário. A identificação do grupo é chamada de GID (group id). Um usuário pode pertencer a um ou mais grupos. outros
  • Outros – É a categoria de usuários que não são donos ou não pertencem ao grupo do arquivo.

Quanto aos tipos de permissões que se aplicam ao dono, grupo e outros usuários, temos 3 permissões básicas:

  • r – Permissão de leitura para arquivos. Caso for um diretório, permite listar seu conteúdo (através do comando ls, por exemplo).
  • w – Permissão de gravação para arquivos. Caso for um diretório, permite a gravação de arquivos ou outros diretórios dentro dele. Para que um arquivo/diretório possa ser apagado, é necessário o acesso a gravação.
  • x – Permite executar um arquivo (caso seja um programa executável). Caso seja um diretório, permite que seja acessado através do comando cd.

Verificando as Permissões

As permissões de acesso a um arquivo/diretório podem ser visualizadas com o uso do comando ls -l. As 3 letras (rwx) são agrupadas da seguinte forma:

drwxr-xr– root root teste

A primeira letra diz qual é o tipo do arquivo. Caso tiver um “d” é um diretório, um “l” um link a um arquivo no sistema, um “-“ quer dizer que é um arquivo comum, etc.

Da segunda a quarta letra (rwx) dizem qual é a permissão de acesso ao dono do arquivo. Neste caso root ele tem a permissão de ler (r – read), gravar (w – write) e executar (x – execute) o arquivo computadores.

Da quinta a sétima letra (r-x) diz qual é a permissão de acesso ao grupo do arquivo. Neste caso todos os usuários que pertencem ao grupo root tem a permissão de ler (r), e também executar (x) o arquivo teste. Lembre-se que quanto um usuário é criado, um grupo com o nome do usuário também é criado. Isso explica o fato do “root root”, que indica que o arquivo pertence ao usuário root e ao grupo root.

Da oitava a décima letra (r–) diz qual é a permissão de acesso para os outros usuários. Neste caso todos os usuários que não são donos do arquivo teste tem a permissão somente para ler (r) o arquivo.

O primeiro root indica o nome do dono do arquivo.

O segundo root indica o nome do grupo que o arquivo pertence.

A palavra teste indica o nome da pasta.

Ajustando as Permissões

Para ajustar as permissões de acesso de um arquivo/diretório, utilizamos os comandos chmod e chown. O primeiro permite ajustar as permissões de arquivos e pastas, enquanto o segundo permite transferir a posse, dizendo a qual usuário e a qual grupo determinada pasta ou arquivo pertence.

Para que os usuários do grupo professores possam alterar o conteúdo da pasta, o primeiro passo é alterar as permissões, transferindo a posse do grupo root para o grupo professores. Nesse caso, não precisamos alterar o dono da pasta, que pode continuar sendo o root.

# chown –R root:professores teste

O –R no exemplo faz com que a alteração seja aplicada de forma recursiva, afetando todos os arquivos e subpastas. Sem ele, a alteração seria aplicada apenas a pasta propriamente dita, mas não ao seu conteúdo. Em seguida, especificamos o novo dono e o novo grupo, separados por : seguido da pasta. Com isso as permissões serão alteradas para:

drwxr-xr– root professores teste

Falta agora alterar as permissões de acesso para o grupo, de forma que os usuários possam finalmente escrever na pasta. Para isso, usamos o comando chmod –R g+rw, que especifica que o grupo (g) terá permissão de leitura e escruta (+rw):

chmod –R g+rw teste

Se você quisesse fazer o oposto, ou seja, remover a permissão de escrita para o grupo, usaria o chmod –R g-w teste, se quisesse remover a permissão de leitura para todos os demais usuários usaria o chmod –R o-r e, se quisesse abrir as permissões para todo mundo, usaria o chmod –R ugo+rwx.

Abaixo, segue uma pequena “cola” com os parâmetros:

  • -R: Recursivo, altera as permissões de todo o conteúdo da pasta, opcional.
  • u: Permissões para o dono da pasta (user)
  • g: Permissões para o grupo (group)
  • o: Permissões para os demais (others)
  • +: Adiciona a permissão
  • -: Remove a permissão
  • r: Permissão de leitura
  • w: Permissão de gravação
  • x: No caso dos arquivos indica permissão de escrita e, no caso da pasta, permissão para ver o conteúdo.

Modo Octal

Ao invés de utilizar os modos de permissão +r, -r, etc, pode ser usado o modo octal para se alterar a permissão de acesso a um arquivo. O modo octal é um conjunto de oito números onde cada número define um tipo de acesso diferente.

O uso de um destes números define a permissão de acesso do dono, grupo ou outros usuários. Um modo fácil de entender como as permissões de acesso octais funcionam, é através da seguinte tabela:

  • 1 = Executar
  • 2 = Gravar
  • 4 = Ler

A soma desses números define as permissões concedidas.

É mais flexível gerenciar permissões de acesso usando o modo octal ao invés do comum, pois você especifica diretamente a permissão do dono, grupo, outros ao invés de gerenciar as permissões de cada um separadamente. Abaixo a lista de permissões de acesso octal:

  • 0 – Nenhuma permissão de acesso. Equivalente a -rwx.
  • 1 – Permissão de execução (x).
  • 2 – Permissão de gravação (w).
  • 3 – Permissão de gravação e execução (wx). Equivalente a permissão 2+1
  • 4 – Permissão de leitura (r).
  • 5 – Permissão de leitura e execução (rx). Equivalente a permissão 4+1
  • 6 – Permissão de leitura e gravação (rw). Equivalente a permissão 4+2
  • 7 – Permissão de leitura, gravação e execução. Equivalente a +rwx (4+2+1).

Vamos à prática com alguns exemplos:

# chmod 764 teste

Os números são interpretados da direita para a esquerda como permissão de acesso aos outros usuários (4), grupo (6), e dono (7). O exemplo acima faz os outros usuários (4) terem acesso somente leitura (r) ao arquivo teste, o grupo (6) ter a permissão de leitura e gravação (rw), e o dono (7) ter permissão de leitura, gravação e execução (rwx) ao arquivo teste.

# chmod 40 teste

O exemplo acima define a permissão de acesso dos outros usuários (0) como nenhuma, e define a permissão de acesso do grupo (4) como somente leitura (r). Note usei somente dois números e então a permissão de acesso do dono do arquivo não é modificada (leia as permissões de acesso da direita para a esquerda!).

# chmod 751 teste

O exemplo acima define a permissão de acesso dos outros usuários (1) para somente execução (x), o acesso do grupo (5) como leitura e execução (rx) e o acesso do dono (7) como leitura, gravação e execução (rwx).

Referências: Guia Foca GNU/Linux e Guia do Hardware
Confira mais em: www.techlivre.com.br

Ítalo Diego Teotônio

Mais artigos deste autor »

Especialista em Gestão de Segurança da Informação e bacharel em Sistemas da Informação. Experiência na área de Tecnologia da Informação com foco em Infraestrutura de Redes, Gestão de TI e Segurança da Informação, atuando como Professor e Analista de Tecnologia da Informação.


2 Comentários

Deixe seu comentário

Seu endereço de e-mail não será publicado. Campos com * são obrigatórios!