FreeBSD

4 de julho de 2016

Permissões de arquivos

Mais artigos de »
Escrito por: Leonardo Souza
Tags:

Resumo: veremos neste artigo como funcionam as permissões de arquivos nos sistemas Unix, forma que o sistema utiliza para gerenciar permissões de recursos a usuários e grupos específicos. Veremos como funciona, como alterar estas permissões e as propriedades de arquivos e pastas.

Introdução

O FreeBSD é um sistema multi-usuário, ou seja, pode ser utilizado por mais de um usuário simultaneamente, sendo assim é necessário determinar quem pode utilizar determinados recursos e como fazê-lo. Para isso ele utiliza um sistema permissões e é o que veremos neste artigo.

O FreeBSD é um sistema multi-usuário, ou seja, pode ser utilizado por mais de um usuário simultaneamente. Sendo assim, para uma maior segurança e organização dos recursos do sistema, ele utiliza um sistema de permissões para determinar quem pode e como pode manipular estes recursos.

Neste sentido, para garantir um maior controle dos recursos utilizados pelos usuários do sistema, tudo que ele gerencia é composto por um conjunto de permissões que determinam quem pode ler, escrever e executá-los, estas permissões são representadas pelas letras r, w e x respectivamente.




Para implementar isso, todo arquivo possui um dono e um grupo dono dele, que por padrão é atribuído no momento da criação do arquivo ao criador. Isso significa que o dono do arquivo por padrão é o criador dele, assim como o grupo dono dele é o mesmo grupo que pertence o criador deste arquivo. Embora este seja o padrão é plenamente possível modificar isso através do comando chown.

Estas permissões são armazenadas no formato de 3 (três) octetos divididos em três partes, uma determina as permissões do proprietário do arquivo , uma para o grupo a que o arquivo pertence e uma para os demais. Elas são representadas por letras que significam basicamente o seguinte:

r (read): leitura, também representada pelo número 4.

w (write): escrita, também representado pelo número 2.

x (execute): execução, também representado pelo número 1.

Na tabela abaixo temos a representação numérica completa.

Permissões de arquivos

De acordo com este quadro temos o seguinte:

0 = sem permissões

1 = execução.

2 = escrita.

3 = 1 (execução) + 2 (escrita).

Observe que o valor três é na verdade o resultado das permissões dos números um e dois somados.

De forma semelhante os valores superiores a 4 são na verdade combinações dos valores anteriores, por exemplo:

5 = 4 (leitura) + 1 (execução).

6 = 4 (leitura) + 2 (escrita)

7 = 4 (leitura) + 3 (escrita + execução)

Podemos utilizar a opção “-l” junto com o comando ls para visualizar detalhadamente as permissões de cada arquivo ou diretório, incluindo dono, grupo e outros.

Veja na imagem abaixo:

permissoes

Através deste comando, podemos ver permissões de proprietário, grupo dono do arquivo e outros usuários, dispostas da seguinte forma: a-aaa-aaa-aaa. Dessa forma vemos um carácter a esquerda seguido de nove outros caracteres divididos em grupos de de três.

O primeiro carácter indica se este é um arquivo normal, um diretório, um dispositivo especial ou até um socket. Nesta imagem temos arquivos normais, representados pelo simbolo “-” e um diretório, representado pelo carácter “d”.

Entre as possíveis representações para o primeiro dígito podemos encontrar:

– = arquivo normal

d = diretório

b = arquivo de bloco

c = arquivo especial de caractere

p = canal

s = socket

Vamos agora visualizar alguns exemplo práticos.

Analisando um exemplo

Veremos agora as permissões do arquivo chamado arquivo2:

Podemos ver que ele é um arquivo comum e que o dono do arquivo é o usuário leo e que sua data de criação é 30 de junho.

lista_arquivos1

Veja na imagem (trecho destacado) que as permissões relativas ao dono do arquivo é rwx, ou seja, possui ao mesmo tempo permissão de leitura, escrita e execução. Esta permissão pode ser representada pelo número 7.

Na imagem abaixo vemos destacadas as permissões do grupo dono do arquivo (trecho destacado):

lista_arquivos2

Como podemos perceber, o grupo deste arquivo possui permissões de leitura e execução nele. Porém o carácter que representa a escrita não está presente nesta permissão, indicando assim, que o grupo deste arquivo não possui permissões de escrita sobre ele. Estas permissões podem ser representado pelo número 5.

Vamos analisar agora as permissões dos outros usuários, ou seja, que não é dono ou faz parte do grupo dono do arquivo (trecho destacado).

lista_arquivos3

De acordo com estas permissões, os outros usuários podem ler e executar este arquivo, porém não podem escrever, ou seja, alterá-lo. Esta permissão pode ser representada pelo número 5.

Na prática as permissões para diretórios funcionam da seguinte forma: quando um diretório é definido como executável, significa que ele pode ser acessado, ou seja, é  possível entrar nele, através do comando “cd”. Dessa forma é possível acessar arquivos que se encontram dentro dele, porém com as limitações de permissão atribuídos a estes arquivos.

Por outro lado, para realizar a listagem de um diretório, é necessário que as permissões atribuídas sejam de leitura. Sendo assim, é plenamente possível utilizar o comando “ls” neste diretório. Enquanto para poder apaguar um arquivo em seu interior é preciso permissão de escrita neste diretório.

Alterando permissões de arquivos

as permissões de arquivos no sistema não são fixas, elas podem ser alteradas, por um usuário que possui este privilégio, utilizando o comando chmod (change mode). Este comando pode ser utilizado de duas formas por meio de símbolos e por meio de números.

A forma de se realizar este procedimento é utilizando o comando chmod seguido da permissão que será atribuída, vindo logo depois o arquivo que terá a permissão alterada. Por este motivo, para realizar estas alterações é preciso entender o que significam os simbolos e números utilizados como opções do comando chmod.

As instruções utilizadas como parâmetro para o comando podem ser divididas em: usuários e permissões.

Permissões de arquivos

Para utilizar estes símbolos é preciso realizar combinações com os seguintes operadores:

+ (sinal de adição) = adicionar permissão

– (sinal de subtração) = remover permissão

= (sinal de igualdade) = definir permissão

Vamos a alguns exemplo:

1 – Alterando permissões por meio de símbolos

Veremos agora como realizar a alteração de permissões por meio da combinação de símbolos relativos a usuário, grupo e outros com r,w e x.

A – manipulando permissões de usuário

Vamos iniciar alterando as permissões referentes ao dono do arquivo. Neste exemplo utilizaremos o arquivo2. Vamos ver novamente como estão as permissões utilizando o comando ls –l.

lista_arquivos1

Percebemos que o usuário possui permissões do tipo rwx, ou seja, pode ler, escrever e executar o arquivo. Vamos remover a permissão de escrita, ou seja, a letra w. Para isso é necessário digitar o comando:

$ chmod u-w arquivo2

A letra u indica que estamos manipulando as permissões relativas a usuário dono do arquivo, o sinal  de subtração (-) indica que vamos remover uma permissão e a letra w (write) indica que a permissão que vamos manipular é de escrita.

Depois de executa o comando veja novamente como ficaram as permissões.

usuario_permissao

Perceba que após o comando a permissão w, escrita, foi retirada do usuário.

B – manipulando permissões de grupo

Vamos agora remover uma permissão de execução do trupo dono do arquivo. Observe novamente as permissões do arquivo chamado arquivo2;
com_execucao

Perceba que o grupo possui permissões de r (leitura) e x (execução), porém não possui permissão de escrita. Vamos remover a permissão de execução, dessa forma o grupo terá no fim deste procedimento a permissão apenas de leitura.

Para isso digitamos o comando chmod g-x nome_do_arquivo.

$ chmod g-x arquivo2

A letra g indica que estamos manipulando as permissões de grupo, o carácter de subtração (-) indica que vamos remover uma permissão e a letra x (execute) indica qual a permissão que queremos manipular, neste caso a de execução.

sem_execucao

Na imagem acima vemos o comando chmod aplicado e logo depois verificamos as permissões novamente com o comando ls –l. Pode-se perceber que após o comando a permissão de execução (x) foi retirada do grupo.

C – Manipulando permissões de outros usuários

Vamos visualizar agora as permissões de outros usuários, ou seja, o último conjunto de três caracteres.

permissoes_outros

Podemos perceber que a permissão para estes usuários é de r (leitura) e x (execução). Agora vamos atribuir a permissão w (escrita)  por meio do comando chmod.

permissoes_outros2

A letra o indica que desejamos manipular as permissões de usuários que não são donos do arquivo, o carácter de adição (+) indica que vamos adicionar uma permissão e a letra w (escrita) indica que vamos manipular a permissão de escrita.

Perceba na imagem que agora a permissão w está atribuída.

Agora veremos como atribuir permissões por meio do formato numérico.

Para alguns manipular permissões por meio de números pode parecer mais simples, isso é o que vamos apresentar agora.

2 – Alterando permissões através dos números

Como explicado anteriormente na tabela numérica, podemos representar as permissões de arquivos de forma numérica. Basta utilizarmos o comando chmod, visto anteriormente seguido dos números que representam as permissões. Neste formato o primeiro número representa o primeiro conjunto de três, o segundo número representa o segundo conjunto e assim por diante.

Para começar nosso exemplo vamos retirar todas as permissões deste arquivo.

permissao000

Agora podemos ver que o arquivo não possui qualquer permissão atribuída. Agora vamos atribuir permissão de leitura para todos os usuários. Podemos ver na tabela octal que a permissão de leitura é representada pelo numero 4, então para atribuir a permissão de leitura para todos devemos utilizar três número quatros junto como comando chmod.

$ chmod 444 arquivo2

permissao444

veja que agora o arquivo2 possui as permissões de leitura para todos os usuários, conforme foi aplicado pela representação do número 4.

Agora vamos atribuir permissão para o dono de  leitura e escrita (representado pelo número 6), para o grupo proprietário a permissão de leitura e execução (representado pelo número 5) e permissão apenas de escrita (representado pelo número 2) para os outros usuários.

Dessa forma, para aplicar estas permissões vamos utilizar o comando comando 652.

permissao652

Vemos na imagem acima que as permissões forma aplicadas.

Por último vamos atribuir permissões de leitura, escrita e permissão para o dono e de leitura e execução para o grupo e outros usuários. Podemos ver na tabela que para utilizar estas permissões devemos utilizar 755.

permissao755

Novamente a permissão foi aplicada.

Alterando propriedade de arquivo

Como explicado anteriormente, os arquivos possuem donos e grupos de donos e geralmente esta atribuição ocorre no momento que o arquivo é criado. Dessa forma o dono, na maioria das vezes, é o criador do arquivo. Porém esta propriedade pode ser alterado através do comando chown.

Para se alterar o dono do arquivo utiliza-se o comando chown no seguinte formato: chown novo_dono arquivo.

Para iniciar vamos visualizar novamente o arquivo2.

proprietario

Podemos ver em destaque que o dono do arquivo é o usuário leo, assim como o grupo, que possui o mesmo nome do usuário.

Vamos realizar a alteração:

proprietario_novo

Perceba na imagem em destaque que o dono do arquivo agora é o usuário leonardo, segundo alteração feita pelo comando chown.

Através do comando anterior alteramos apenas o dono do arquivo, porém ele continua pertencendo ao grupo de nome leo. Para se alterar também o grupo podemos utilizar a seguinte sintaxe do comando chown: chown usuário:grupo arquivo.

Vamos alterar o grupo do arquivo de leo para leonardo.

grupo1

Perceba que agora o grupo também foi alterado.

Finalizamos assim as alterações relativas a permissões de arquivos.

Conclusão

Conhecer a forma como o sistema reconhece e gerencia as permissões de arquivos é um aspecto básico para um administrador de sistemas Unix e seus derivados, pois muitos problemas podem ser solucionados simplesmente corrigindo ou atribuindo corretamente elas.  Por outro lado, a versatilidade do comando chmod, que permite a manipulação destas permissões por meio de símbolos ou códigos numéricos, permite ao administrador escolher o tipo de que mais lhe agrada e o utilize, afinal opções são sempre bem vindas.






Sobre o Autor

Leonardo Souza
Bacharel em Informática, pós graduado em Segurança de Redes de Computadores e analista de Segurança da Informação. Entusiasta de Segurança da Informação e usuário FreeBSD, porém sem xiismo.




0 Comments


Seja o Primeiro a Comentar!


You must be logged in to post a comment.