O sistema GNU/Linux é multiusuário e multitarefa,significando isso que muitas pessoas podem acessar e trabalhar no mesmo computador simultaneamente. Esta facilidade revela a necessidade de um mecanismo de controle que permita aos usuários compartilhar e proteger arquivos quando necessário. A ferramenta adequada que se desenvolveu no ambiente Linux para isso são as permissões embutidas no sistema de arquivos .
Entender o sistema de permissão do GNU/linux não é muito simples, mas com um pouco de paciência e atenção compreende-se facilmente. Então vamos lá.
Basicamente, o método de permissões GNU/Linux determina que cada arquivo no sistema pertence a um usuário relacionado a um grupo e cada arquivo tem um conjunto de nove caracteres que controlam o acesso de leitura,escrita,execução. A coisa não para por aí,tem mais caracteres que poderíamos chamar de chaves lógicas,mas ficam pra outro artigo porque o assunto é um tanto complexo para ser abordado por completo num artigo deste tipo.
As permissões dos arquivos são especificadas por Dono, Grupo, Outros.
Dono > A pesssoa que criou o arquivo e que é o proprietário. O Dono tem permissão para alterar como quiser o arquivo,inclusive as permissões. É o mesmo usuário que entrou no sistema. Somente se aplicam ao dono do arquivo as permissões de acesso. A identificação do dono também é chamada de user id (UID). Digite no terminal/konsole o comando id e você terá a ID do usuário e o do grupo,o comando id sozinho retorna o usuário atual. Para saber mais sobre o comando id digite man id no terminal/konsole e veja as opções.
A identificação de usuário e o nome do grupo que pertence são armazenadas respectivamente nos arquivos /etc/passwd e /etc/group. Estes são arquivos textos comuns e podem ser editados em qualquer editor de texto, mas tenha cuidado.
Grupo > O recurso de grupo foi criado pela necessidade de permitir que vários usuários diferentes tivessem acesso a um mesmo arquivo, e não somente o dono do arquivo,isto é muito útil particularmente em ambiente de produção,corporativo e também na sua rede doméstica. Simplificando,diferentes arquivos de diferentes donos podem fazer parte de um mesmo grupo e cada usuário pode fazer parte de vários grupos,mas um arquivo somente pode fazer parte de um grupo por vez. A função central dos grupos é proporcionar um ambiente colaborativo.
Outros > Este tipo de usuário não é o dono do arquivo não é membro do grupo relacionado ao arquivo.
Os arquivos em um sistema Linux possuem trê chaves de permissões para cada atributo citado acima ( Dono ,Grupo ,Outros) fazendo um total de nove chaves, as permissões são definidas com um número gerado a partir de um número binário com equivalente em decimal, sendo na verdade uma notação octal, e ainda uma representação simbólica através de letras do alfabeto .
Forma simbólica:
r - Permissão de leitura (read)
w - Permissão de escrita (write)
x - Permissão de execução (execution)
Ex: rwx rwx rwx
Ex: rw- rw- rw-
Ex: rwx --- ---
Forma Binária:
Ex: 111 111 111
Ex: 110 110 110
Ex: 111 000 000
Forma Octal:
Ex: 7 7 7
Ex: 666
Ex: 700
Outro detalhe importante é que antes das permissões propriamente ditas ainda existe um caracter que identifica o tipo de arquivo, totalizando então dez caracteres e não apenas nove.
O sistema Linux representa tudo como arquivo, daí a necessidade de se dividir os arquivos em tipos específicos. Temos então os sete tipos de arquivos existentes no Linux. O primeiro caracter sempre vai identificar o tipo de arquivo.
São eles:
- - arquivos comuns ( textos,dados,binários)
- d Diretórios ( As pastas que contém outros arquivos)
- c Dispositivos de caracteres (arquivos que representam dispositivos físicos -hardware- que podem ser acessados seqüencialmente, como portas paralelas e/ou seriais. Na verdade, são uma subdivisão dos device files -arquivos de dispositivos)
- b Dispositivos de bloco (arquivos que representam dispositivos físicos que podem ser acessados em blocos de bytes, como o HD. Assim como os arquivos do tipo caractere, são uma subdivisão dos arquivos de dispositivos)
- s Sockets (arquivos utilizados para comunicação entre processos)
- l Links (arquivos que fazem referência a outros arquivos dentro do sistema de arquivos. São subdivididos em hard (diretos) e soft (simbólicos) links)
- p Pipes (arquivos utilizados para a comunicação entre processos)
colossos@ub904jj:~/Desktop$
drwxr-xr-x 3 colossos colossos 4096 2009-06-16 18:50 .
drwxr-xr-x 126 colossos colossos 4096 2009-06-16 15:49 ..
drwxr-xr-x 3 colossos colossos 4096 2009-06-16 18:50 C
-rw-r--r-- 1 colossos colossos 36617 2009-04-24 14:59 machine-update
Observe que a letra de em drwxr-xr-x 2 colossos colossos 4096 2009-06-16 18:50 C nos mostra que é um diretório, depois vem as permissões,o 3 é a quantidade de arquivos dentro do diretório, o 4096 é o tamanho em bytes,data e hora de criação a alteração, por último o nome do arquivo.
O arquivo seguinte inicia com um - ,que mostar ser um arquivo comum. Então conformo arquivo muda outra letra será encontrada conforme as explicações acima
Para manipular as permissões em um sistema Linux geralmente usamos o terminal/konsole, pode ser feito pela interface gráfica mas isso complica mais do que ajuda. Então usaremos alguns comandos simples e fáceis de guardar. Antes porém é bom esclarecer que normalmente nos tutoriais disponíveis pela web ou em fóruns geralmente a notação usada para alterar as permissões será octal, por ser mais flexível. Com ela é possível especificar diretamente a permissão do Dono, Grupo, Outros ao invés de gerenciar as permissões de cada um separadamente. Para simplificar usaremos uma tabela .
1 = Permissão de execução (x)
2 = Permissão de escrita (w)
4 = Permissão de leitura (r)
E o restante dos números (0,3,5,6,7),afinal a notação é octal, ou seja um conjunto de oito números,de 1 até 8? É simples,basta somar.
Apenas permissão de execução use 1
Apenas permissão de escrita use 2
Apenas permissão de leitura use 4
Apenas permissão de execução/escrita, use 3 (equivale a 1+2 - Executar+Escrever)
Apenas permissão de leitura/execução, use 5 (equivale a 1+4 - Executar+Ler)
Apenas permissão de leitura/escrita, use 6 (equivale a 2+4 - Escrever+Ler)
Permissão de execução,escrita,leitura simultaneamente, use 7 (equivale a 1+2+4)
Nenhuma permissão, use 0 (zero)
Voltemos ao nosso exemplo do arquivo:
drwxr-xr-x 2 colossos colossos 4096 2009-06-16 18:50 C
É um diretório (letra d no início) o Dono tem permissão de leitura,escrita,execução sendo 4+2+1= 7 em octal, o Grupo tem permissão de leitura e execução(neste caso,executar é acessar o arquivo) sendo 4+1= 5 em octal, os Outros tem permissão de leitura e execução sendo também 4+1= 5 em octal. A notação completa em octal é 755.
O outro arquivo:
-rw-r--r-- 1 colossos colossos 36617 2009-04-24 14:59 machine-update
É um arquivo comum ( - no início) o Dono tem permissão de leitura e escrita 4+2= 6, o Grupo tem apenas permissão de leitura 4, os Outros tem igualmente apenas permissão de leitura 4. Em octal fica 644.
Com os exemplos ficou mais fácil entender certo? Basta memorizar o que significa 1,2,4 apenas , o restante é aritmética simples. Agora sim vamos alterar as permissões com os tais comandos simples. O primeiro deles é o:
chmod : Altera as permissões de acesso a arquivos e diretórios. Não altera as permissões de links simbólicos, mas as permissões dos arquivos que ele aponta. Sintaxe:
chmod [opções]
- Opção Descrição
- -c Exibe informações sobre os arquivos alterados.
- -f Não imprime mensagens de erro.
- -R Recursivo. Altera o modo de acesso de todos os arquivos e sub-diretórios abaixo do especificado.
- -v Descreve, detalhadamente, as alterações de atributos.
Modo simbólico:
lista de expressões com a sintaxe
u Usuário
g Grupo
o Outros
a Todos (all).
+ Adiciona permissões às existentes.
- Retira a permissão das existentes.
= Altera as permissões do arquivo para as especificadas.
r Permissão para leitura.
w Permissão para escrita.
x Permissão para execução.
Modo absoluto:
Definido com a sintaxe
0 Nenhuma permissão.
1 Permissão para execução.
2 Permissão para escrita.
3 Permissão para escrita e execução.
4 Permissão para leitura.
5 Permissão para leitura e execução.
6 Permissão para leitura e escrita.
7 Permissão para leitura, execução e escrita.
Exemplos:
$ chmod u+x arquivo.txt
Adiciona permissão de execução pelo dono ao arquivo
Exemplo de modo simbólico
$ chmod u+wx,g-w,o=r arquivo.txt
Adiciona permissão de escrita e execução para o dono, retira permissão de escrita para o grupo e, para os outros usuários permite apenas leitura
Exemplos do modo absoluto
$ chmod 750 script.sh
Permissão de leitura, escrita e execução para o dono, leitura e execução para o grupo e nenhuma permissão aos outros usuários.
$ chmod 744 script.sh
Permissão de leitura,escrita e execução para o dono,e apenas leitura para o grupo e os outros
Outro comando utilizado é o chown.
chown: Muda o dono de um arquivo e o grupo de arquivos. Sintaxe:
chown [opções]
Opção Descrição
-c Exibe informações sobre os arquivos modificados.
-f Não imprime mensagens de erro.
-h Afeta os links simbólicos e não os arquivos referidos por ele
-R Recursivo. Muda o grupo de todos os arquivos e sub-diretórios abaixo do especificado.
-v Descreve, detalhadamente, as alterações de atributos.
Exemplos
$ chown fulano arquivo.txt
Altera o dono do arquivo.
$ chown fulano.developer arquivo.txt
Altera o dono e o grupo do arquivo.
O terceiro comando utilizado é o chgrp.
chgrp: Muda o grupo de um arquivo. Sintaxe
chgrp [opções]
Opção Descrição
-c Exibe informações sobre os arquivos modificados.
-f Não imprime mensagens de erro.
-h Afeta os links simbólicos e não os arquivos referidos por ele
-R Recursivo. Muda o grupo de todos os arquivos e subdiretórios abaixo do especificado.
-v Descreve, detalhadamente, as alterações de atributos.
Exemplos
$ chgrp developer web
Muda o grupo do arquivo developer para web.
A compreensão plena das permissões no sistema linux não fica somente nisso,faltou escrever sobre outros atributos como bit setuid,bit setgid,bit sticky,umask,atributo especial,mas fica pra outro artigo. Boa leitura.
Fontes consultadas:
Linux Guia Prático - Carlos Morimoto - Ed. Meridional - 2009
Comandos Linux - Roberto G. A. Veiga - Novatec - 2004
Bash - Joel Saade - Novatec - 2001
Shell Script Profissional - Aurelio M. Jargas - Novatec - 2008
Programação Shell Linux Julio Cezar Neves - Brasport - 5ª ed. 2005
FocaLinux
Viva o Linux
Wikipedia
Ubuntupedia
Nenhum comentário:
Postar um comentário