12.14. Posse e Permissões

No inicio deste capítulo, quando você tentou mudar um de diretório para o diretório /root, logado como usuário comum, você recebeu a seguinte mensagem:

cd /root
bash: /root: Permission denied

Aquela era uma demonstração de segurança do Linux. Tanto o Linux, como o UNIX, é um sistema multi-usuário, e as permissões de arquivo tem a função de proteger o sistema contra alguma alteração maliciosa.

O caminho para acessar um arquivo quando sua permissão é negada é o comando su com ele você estará temporiamente logado como super usuário (root), como foi explicado anteriormente. Isto ocorre pois quem souber a senha do root terá acesso completo.

Mas logar como super usuário nem sempre é conveniente ou recomendado, sendo que uma alteração equivocada em um arquivo do sistema pode provocar sérios danos ao sistema.

Todos os arquivos e diretórios tem permissão especial para a pessoa que o criou. Anteriormente você criou o arquivo dia.txt (veja Utilizando o Redirecionador na Seção 12.9.1 ) em seu diretório home, assim o diretório dia.txt lhe pertence.

Isso significa que você pode definir qual o tipo de permissão dos outros usuários sobre aquele arquivo, essa permissão pode ser referente aos seguintes ítens; ler, escrever, ou (se for uma aplicação em vez de um arquivo de texto) executá-lo.

A leitura, a escrita e a execução são os três ajustes principais nas permissões. Desde que os usuários estiverem organizados em grupo, você pode também especificar se determinados grupos podem ler, escrever ou executar um arquivo.

Faça uma análise do arquivo dia.txt utilizando o comando ls -l (veja Figura 12-11).

Há muitos detalhes fornecidos. Você pode ver quem pode ler (r), escrever (w) e executar (x) o arquivo, quem criou o arquivo (root), e a que grupo o proprietário pertence (root).


Figura 12-11. Permissões para dia.txt


A outra informação à direita do grupo inclui o tamanho do arquivo, a data e a hora da criação do arquivo, e o nome do arquivo.

A primeira coluna mostra permissões atuais; possui dez campos. O primeiro campo representa o tipo de arquivo. Os nove campos restantes são três combinações de permissões para três categorias diferentes de usuários.

Exemplo:

- rw-rw-r --

A primeira combinação refere-se ao proprietário do arquivo, a segunda refere-se ao grupo que o proprietário do arquivo pertence, e o último refere-se aos outros usuários do sistema.

  -        (r w -)        (r w -)      (r - - )   1    root   root
  |           |              |             |
 tipo    Proprietário      grupo         outros

O primeiro campo, que especifica o tipo do arquivo, pode mostrar uma das seguintes definições:

Além do primeiro campo, em cada uma das três seguintes combinações, você verá um das definições:

Quando você vê um traço em uma das combinações, proprietário, no grupo, ou em outros, significa que a permissão não foi concedida. Olhe outra vez na primeira coluna de dia.txt e identifique suas permissões.

ls -l dia.txt
-rw-r--r-- 1 root root     146 Mai  11 15:04 dia.txt 

O proprietário do arquivo (neste caso, root) tem a permissão de ler e escrever o arquivo. O grupo, root, tem a permissão de ler e escrever o arquivo dia.txt, também, os outros tem permissão apenas para ler o arquivo, não podendo escrever. Este arquivo não é um programa, sendo assim nem o proprietário nem o seu grupo nem os outros usuários tem permissão para executá-la.

12.14.1. O comando do chmod

Use o comando chmod para alterar as permissões. Este exemplo mostra como mudar as permissões do arquivo dia.txt com o comando chmod.

O aquivo original está como o exemplo a seguir, com suas permissões iniciais :

ls -l dia.txt
-rw-r--r-- 1 root root     146 Mai  11 15:04 dia.txt 

Se você for o proprietário do arquivo ou estiver logado como usuário root, você pode mudar todas as permissões para o proprietário, grupo, e outros.

Ponta

Cuidado


Lembre-se que as permissões de arquivos são uma característica de segurança. Sempre que você permite que um usuário; leia, escreva e execute arquivos, você está aumentando o risco dos arquivos que poderão ser alterado ou apagados dependendo do tipo de permissão. Em geral, você deve somente conceder a permissão de leitura e escrita àqueles que realmente necessitam.

No seguinte exemplo, você irá conceder permissão de escrita a todos, assim todos poderão ler o arquivo, escrever notas nele, e salvá-lo. Isso significa que você terá que mudar a combinação de permissões de "outros", sendo que o proprietário e o seu grupo já possuem esta permissão.

Faça uma análise do arquivo. No prompt do shell, digite:

ls - l dia.txt

Este comando indicara as seguintes informações do arquivo:

-rw-r--r-- 1 root root     146 Mai  11 15:04 dia.txt 

Agora, digite o seguinte comando para alterar a permissão:

chmod o+w dia.txt

O comando o+w diz ao sistema que você quer alterar a permissão de “outros” para permitir que também tenham permissão de escrita. Para verificar os resultados, liste os detalhes do arquivo outra vez. Agora, verifique a modificação nas combinações de permissões:

-rw-r--rw- 1 root root     146 Mai  11 15:04 dia.txt 

Agora, todos podem ler e escrever o arquivo.

Para remover a permissão de ler e escrever do grupo e dos outros usuários sobre o arquivo dia.txt, utilize da seguinte forma o comando chmod.

chmod go-rw dia.txt

Digitando go-rw, você está dizendo ao sistema para remover as permissões de ler e escrever do grupo e dos outros usuários sobre arquivo dia.txt.

O resultado será como este:

-rw------- 1 root root     146 Mai  11 15:04 dia.txt 

Pense nesses ajustes como um atalho para modificar as permissões com chmod, pois tudo o que você realmente tem que fazer é lembrar alguns símbolos e opções que o comando chmod utiliza.

A seguir há uma lista de atalhos que podem ser utilizados na alteração de permissões:

Identidades
u - o usuário que possui o arquivo (proprietário)
g - o grupo a que o usuário pertence
o - outros (demais usuários do sistema)
a - todos ou tudo (u, g, e o)
Permissões
r - acesso a leitura
w -acesso a escrita
x - acesso a execução
Ações
+ - adiciona a permissão
- - remove a permissão
= - torna única a permissão

Para testar suas habilidades com permissões? Remova todas as permissões de dia.txt.

chmod  a-rwx  dia.txt

Agora, veja se você tem permissão para ler o arquivo com o comando cat dia.txt, deverá retornar a seguinte mensagem:

cat: dia.txt: Permissão negada

Ao remover todas as permissões, nem mesmo o proprietário poderá acessa-lo Mas é permitido ao proprietário realizar novas modificações nas permissões, sendo assim com o comando abaixo o proprietário do arquivo poderá novamente visualizar o arquivo:

chmod u+rw dia.txt

Utilize o comando cat dia.txt para verificar se realmente você tem permissão para visualizar o arquivo. A seguir a alguns comando utilizados na alteração de permissões de um arquivo com o comando chmod.

Adicionando a opção -R, você poderá mudar as permissões de uma árvore inteira de diretórios.

Quando você adiciona ou remove a permissão de executar para um diretório, você está permitindo (ou negando) a permissão de acesso a este diretório.

Se você não permitir que outros tenham permissão para executar o diretório documentos, não importará se tem permissão de leitura ou escrita. Ninguém poderá acessar o diretório a menos que saibam o nome exato do arquivo dentro dele.

Para remover a permissão de execução sobre o diretório documentos, digite:

chmod a-x documentos

Agora tente acessar o diretório tigger e veja o que acontece.

cd documentos
bash: documentos: Permissão negada

Em seguida, iremos permitir acesso comente ao proprietário e a seu grupo:

chmod ug+x documentos 

Agora, se você verificar as permissões com o comando ls -l você verá que somente os outros usuários estão sem permissão de execução, tendo assim o seu acesso ao diretório negado.

12.14.2. Alterando as Permissões com Números

Está é uma outra forma de alterar as permissões.

Volte as permissões do arquivo dia.txt para as permissões originais:

-rw-rw-r-- 1      root root          146 Mai  11 15:04 dia.txt 

Cada tipo de permissão pode ser representado por um valor numérico:

Para utiliza-los para definir as permissões soma-se os valores das permissões que deseja conceder e coloca-se o total para definir a permissão que será dada. Exemplo, se você deseja permissão de leitura e escrita, você teria o valor 6; 4 (leitura)+ 2 (escrita) = 6.

Para dia.txt, estão a seguir os valores numéricos de suas permissões:

 -  (rw -)  (rw -)  (r--)       
      |        |      |    
    4+2+0    4+2+0  4+0+0

O total para o proprietário é seis, o total para o grupo é seis, e o total para os outros usuários é quatro. A permissão desse arquivo é 664.

Se você quiser alterar as permissões do arquivo dia.txt para que o grupo do proprietário só tenha permissão, retire a permissão de escrita (2), ou seja se a permissão para o grupo era de valor 6, retirando o acesso a escrita (2), o valor da permissão do grupo será 4.

Os valores de permissões,ficariam então seis, quatro, e quatro (644).

Para executar esta mudança, digite:

chmod 644 dia.txt

Verifique agora as mudanças listando o arquivo:

ls -l dia.txt

As permissões do arquivo ficaram assim:

-rw-r--r--    1      root root          146 Mai  11 15:04 dia.txt

Agora, nem o grupo nem os outros usuários têm permissão de escrita sobre o arquivo dia.txt. Para conceder novamente ao grupo permissão de escrita some ao valor da permissão dele o valor referente a escrita(2), ficando o comando assim:

chmod 664 dia.txt

 

Aviso

Aviso


Configurar as permissões em 666 concederá a todos permissão de escrita e leitura a um arquivo ou diretório. Configurar permissões em 777 concederá a todos permissão de escrita leitura e execução sobre um arquivo ou diretório. Estas permissões permitem a qualquer pessoa a alterar os arquivos, isso não é aconselhável, pois uma alteração em um arquivo de sistema por exemplo poderá causar sérios danos.

A lista a seguir contém algumas configurações comuns de valores numéricos e suas conseqüências:

Estão aqui algumas combinações de permissões para diretórios:

 


   Anterior

Home

Próxima