16
Permissões no Linux Introdução As permissões são um dos aspectos mais importantes do Linux (na verdade, de todos os sistemas baseados em Unix). Elas são usadas para vários fins, mas servem principalmente para proteger o sistema e os arquivos dos usuários. Manipular permissões é uma atividade interessante, mas complexa ao mesmo tempo. Mas tal complexidade não deve ser interpretada como dificuldade e sim como possibilidade de lidar com uma grande variedade de configurações, o que permite criar vários tipos de proteção a arquivos e diretórios. Como você deve saber, somente o super-usuário (root) tem ações irrestritas no sistema, justamente por ser o usuário responsável pela configuração, administração e manutenção do Linux. Cabe a ele, por exemplo, determinar o que cada usuário pode executar, criar, modificar, etc. Naturalmente, a forma usada para especificar o que cada usuário do sistema pode fazer é a determinação de permissões. Sendo assim, neste artigo você verá como configurar permissões de arquivos e diretórios, assim como modificá-las. Entendendo as permissões drwx------ ... 2 wester ............. 512 Jan ... 29 23:30 .. Arquivos/ -rw-rw-r-- ... 1 wester ....... 280232 Dec .. 16 22:41... notas.txt As linhas acima representam um comando digitado (ls -l) para listar um diretório e suas permissões. O primeiro item que aparece em cada linha (drwx----- e -rw-rw-r-) é a forma usada para mostrar as permissões do diretório Arquivos e do arquivo notas.txt. É esse item, que recebe o nome de string, que vamos estudar. Um ponto interessante de citar é que o Linux trata todos os diretórios como arquivos também, portanto, as permissões se aplicam de igual forma para ambos. Tais permissões podem ser divididas em quatro partes para indicar: tipo, proprietário, grupo e outras

Unmask

Embed Size (px)

DESCRIPTION

PERMISSOES LINUX

Citation preview

Permisses no LinuxIntroduo

As permisses so um dos aspectos mais importantes do Linux (na verdade, de todos os sistemas baseados em Unix). Elas so usadas para vrios fins, mas servem principalmente para proteger o sistema e os arquivos dos usurios. Manipular permisses uma atividade interessante, mas complexa ao mesmo tempo. Mas tal complexidade no deve ser interpretada como dificuldade e sim como possibilidade de lidar com uma grande variedade de configuraes, o que permite criar vrios tipos de proteo a arquivos e diretrios.

Como voc deve saber, somente o super-usurio (root) tem aes irrestritas no sistema, justamente por ser o usurio responsvel pela configurao, administrao e manuteno do Linux. Cabe a ele, por exemplo, determinar o que cada usurio pode executar, criar, modificar, etc. Naturalmente, a forma usada para especificar o que cada usurio do sistema pode fazer a determinao de permisses. Sendo assim, neste artigo voc ver como configurar permisses de arquivos e diretrios, assim como modific-las.

Entendendo as permisses

drwx------ ... 2 wester ............. 512 Jan ... 29 23:30 .. Arquivos/-rw-rw-r-- ... 1 wester ....... 280232 Dec .. 16 22:41... notas.txtAs linhas acima representam um comando digitado (ls -l) para listar um diretrio e suas permisses. O primeiro item que aparece em cada linha (drwx----- e -rw-rw-r-) a forma usada para mostrar as permisses do diretrio Arquivos e do arquivo notas.txt. esse item, que recebe o nome de string, que vamos estudar. Um ponto interessante de citar que o Linux trata todos os diretrios como arquivos tambm, portanto, as permisses se aplicam de igual forma para ambos. Tais permisses podem ser divididas em quatro partes para indicar: tipo, proprietrio, grupo e outras permisses. O primeiro caractere da string indica o tipo de arquivo: se for "d" representa um diretrio, se for "-" equivale a um arquivo. Entretanto, outros caracteres podem aparecer para indicar outros tipos de arquivos, conforme mostra a tabela abaixo:

d => diretriob => arquivo de blococ => arquivo especial de caracterep => canals => socket- => arquivo "normal"Repare agora que no restante da string ainda h 9 caracteres. Voc j sabe o que significa o primeiro. Os demais so divididos em trs grupos de trs, cada um representado o proprietrio, o grupo e todos os demais, respectivamente. Tomando a linha 2 do exemplo (-rw-rw-r-), desconsiderando o primeiro caractere e dividindo a string restante em 3 partes, ficaria assim:

rw- => a primeira parte significa permisses do proprietriorw- => a segunda parte significa permisses do grupo ao qual o usurio pertencer-- => a terceira parte significa permisses para os demais usuriosVamos entender agora o que significa esses caracteres (r, w, x, -). H, basicamente, trs tipos de permisses: leitura, gravao e execuo. Leitura permite ao usurio ler o contedo do arquivo mas no alter-lo. Gravao permite que o usurio altere o arquivo. Execuo, como o nome diz, permite que o usurio execute o arquivo, no caso de ser executvel. Mas acontece que as permisses no funcionam isoladamente, ou seja, de forma que o usurio tenha ou permisso de leitura ou de gravao ou de execuo. As permisses funcionam em conjunto. Isso quer dizer que cada arquivo/diretrio tem as trs permisses definidas, cabendo ao dono determinar qual dessas permisses habilitada para os usurios ou no. Pode ser que uma determinada quantidade de usurios tenha permisso para alterar um arquivo, mas outros no, por exemplo. Da a necessidade de se usar grupos. No caso, a permisso de gravao desse arquivo ser dada ao grupo, fazendo com que todo usurio membro dele possa alterar o arquivo. Note que necessrio ter certo cuidado com as permisses. Por exemplo, do que adianta o usurio ter permisso de gravao se ele no tem permisso de leitura habilitada?

Agora que j sabemos o significado das divises da string, vamos entender o que as letras r, w, x e o caractere - representam:

r => significa permisso de leitura (read);w => significa permisso de gravao (write);x => significa permisso de execuo (execution);- => significa permisso desabilitada.A ordem em que as permisses devem aparecer rwx. Sendo assim, vamos entender a string do nosso exemplo dividindo-a em 4 partes:

Linha 1: drwx------ ... 2 wester ............... 512 Jan ... 29 23:30 .. Arquivos/- um diretrio (d);- o proprietrio pode alter-lo, grav-lo e execut-lo (rwx);- o grupo no pode pode alter-lo, grav-lo, nem execut-lo (---);- os demais usurios no podem alter-lo, grav-lo, nem execut-lo (---).

Linha 2:-rw-rw-r-- ... 1 wester .......... 280232 Dec .. 16 22:41... notas.txt- um arquivo (-);- o proprietrio pode alter-lo, grav-lo, mas no execut-lo. Repare que como este arquivo no executvel, a permisso de execuo aparece desabilitada (rw-);- o grupo tem permisses idnticas ao proprietrio (rw-);- o usurio somente tem permisso de ler o arquivo, no pode alter-lo (r--).

A tabela abaixo mostra as permisses mais comuns:

--- => nenhuma permisso;r-- => permisso de leitura;r-x => leitura e execuo;rw- => leitura e gravao;rwx => leitura, gravao e execuo.Configurando permisses com chmod

Nos tpicos anteriores voc dever tido pelo menos uma noo do que so permisses e de sua importncia no Linux. Chegou a hora de aprender a configurar permisses e isso feito atravs do comando chmod (de change mode). Um detalhe interessante desse comando que voc pode configurar permisses de duas maneiras: simbolicamente e numericamente. Primeiramente veremos o mtodo simblico.

Para ter uma viso mais clara da forma simblica com o chmod, imagine que tais smbolos se encontram em duas listas, e a combinao deles gera a permisso:

Lista 1Smbolo u => usuriog => grupoO (letra 'o' maiscula) => outroa => todosLista 2Smbolor => leituraw => gravaox => execuoPara poder combinar os smbolos destas duas listas, usam-se os operadores:

+ (sinal de adio) => adicionar permisso- (sinal de subtrao) => remover permisso= (sinal de igualdade) => definir permissoPara mostrar como essa combinao feita, vamos supor que voc deseje adicionar permisso de gravao no arquivo teste.old para um usurio. O comando a ser digitado :

chmod u+w teste.oldO "u" indica que a permisso ser dada a um usurio, o sinal de adio (+) indica que est sendo adicionada uma permisso e "w" indica que a permisso que est sendo dada de gravao.

Caso voc queira dar permisses de leitura e gravao ao seu grupo, o comando ser:

chmod g+rw teste.oldAgora, vamos supor que o arquivo teste.old dever estar com todas as permisses disponveis para o grupo. Podemos usar ento:

chmod g=rwx teste.old

Repare que o arquivo teste.old tem permisses rwx para o grupoDica: crie arquivos e diretrios. Em seguida, teste a combinao de permisses com chmod. Isso lhe ajudar muito no entendimento deste recurso.

Usando chmod com o mtodo numrico

Usar o chmod com valores numricos uma tarefa bastante prtica. Em vez de usar letras como smbolos para cada permisso, usam-se nmeros. Se determinada permisso habilitada, atribui-se valor 1, caso contrrio, atribui-se o valor 0. Sendo assim, a string de permisses r-xr----- na forma numrica fica sendo 101100000. Essa combinao de 1 e 0 um nmero binrio. Mas temos ainda que acrescentar a forma decimal (ou seja, nmeros de 0 a 9). Para isso, observe a tabela abaixo:PermissoBinrioDecimal

---0000

--x0011

-w-0102

-wx0113

r--1004

r-x1015

rw-1106

rwx1117

Se voc no conhece o sistema binrio deve estar se perguntando o que esse "monte" de 0 e 1 tem a ver com os nmeros de 0 a 7. Como o sistema binrio somente trabalha com os nmeros 0 e 1 (decimal trabalha com os nmeros de 0 a 9, ou seja, o sistema de numerao que utilizamos no nosso cotidiano), ele precisa de uma sequncia para representar os valores. Sendo assim, na tabela acima, a coluna Binrio mostra como so os valores binrios dos nmeros de 0 a 7 do sistema decimal.

Chegou a hora ento de relacionar a explicao do pargrafo acima com a coluna Permisso. Para exemplificar, vamos utilizar a permisso rw-, cujo valor em binrio 110, que por sua vez, em decimal corresponde ao nmero 6. Ento, em vez de usar rw- ou 110 para criar a permisso, simplesmente usa-se o nmero 6. Repare que, com o mtodo numrico, usamos somente um dgito para representar uma permisso, em vez de trs. Assim sendo, a string de permisses r--r--r-- pode ser representa por 444, pois r-- em decimal igual a quatro. Observe o exemplo abaixo:

chmod 600 notas.txt

Permisses rw------- no arquivo notas.txt com o comando chmod 600Acima, esto sendo dadas as permisses rw------- ao arquivo notas.txt, pois 6 equivale a rw- e 0 equivale a ---. Como zero aparece duas vezes, forma-se ento o valor 600. Faa o comando acima com um arquivo de teste e depois digite ls- l notas.txt para ver o que aparece (notas.txt deve ser substitudo pelo arquivo que voc est usando). A tabela abaixo mostra uma lista de configuraes bastante utilizadas:---------000

r--------400

r--r--r-- 444

rw-------600

rw-r--r--644

rw-rw-rw-666

rwx------700

rwxr-x---750

rwxr-xr-x755

rwxrwxrwx777

As trs ltimas permisses da tabela so comumente usadas para programas e diretrios.

Finalizando

Como voc viu, muito mais prtico utilizar o chmod com o mtodo numrico. Mas voc pode ter ficado confuso com todo esse esquema de permisso. Mas no se sinta culpado por isso (e tambm no ponha toda a culpa na ineficincia do autor para explicar o assunto :D ). A questo que nos sistemas baseados em Unix, permisses so um dos aspectos mais complexos existentes. Tal complexidade equivalente eficincia do uso de permisses. Por isso, a melhor maneira de entender as permisses treinando. Sendo assim, ao trabalho! Treine, crie permisses e veja seus resultados. Boa aprendizagem!

Entendendo e usando permisses no Linux (Parte 2)Introduo

Nesta segunda parte sobre entendimento e uso de permisses no Linux, vamos trabalhar com os comandos umask, chown e chgrp. O primeiro comando permite manipular as permisses padro (default) do sistema, o segundo usado para alterar o proprietrio do arquivo ou diretrio e, por fim, o terceiro utilizado para mudar o grupo no qual um arquivo/diretrio pertence.

Para voc entender esses recursos, extremamente importante que a primeira parte deste assunto tenha sido lida. Isso porque os conceitos mostrados no primeiro artigo sero aplicados aqui. Vamos l?

Trabalhando com permisses padro

Pode acontecer de voc, por exemplo, criar arquivos com permisses de leitura e gravao para o proprietrio e para um grupo usando chmod. Neste caso, voc pode no ter permitido nenhum acesso aos outros usurios do sistema. Mas muito provavelmente essa no era sua inteno. Voc percebe ento que ao criar permisses em arquivos, as permisses padro podem diferenciar. a que entra em cena o comando umask.

O umask (mscara de criao de arquivos) responsvel por controlar as permisses padro dos arquivos. Mas h algo importante a citar em relao a esse comando: quando esta instruo utilizada, ela pode, por exemplo, mostrar o valor 07. Neste caso, acrescenta-se um 0 esquerda, transformando o valor em 007 (sempre que houver uma situao como essa, deve-se interpretar como se houvesse mais um zero esquerda). Mas isso no significa que o arquivo em questo tenha sido criado sem nenhuma permisso para o proprietrio e para o grupo, e tenha sido dada permisses de leitura, gravao e execuo para todos os demais. Na verdade, significa exatamente o contrrio! Vejamos o porqu:

O umask uma espcie de filtro pelo qual os arquivos passam para determinar suas permisses. Se o valor da permisso for verdadeiro, continua no arquivo, caso contrrio, dever sair. Observe o esquema abaixo para entender melhor:

Vamos transformar a mscara (no nosso caso, o valor 007) em um valor binrio:

007 => 000 000 111Agora vamos alinhar esse valor com o equivalente em binrio para "todas as permisses dadas", ou seja, 777 (este valor sempre usado neste tipo de operao) e fazer uma adio:

777 => 111 111 111Ento,

000.000.111 ====>007

+111 111 111 ====>777

111.111.000

Repare no valor que resultou da adio. Quando h 0 + 1, o valor 1. Quando h 1 + 1 o valor passa a ser 0 e no 2, pois no sistema binrio somente existem os valores 0 e 1 (no h 2 ou outros nmeros). Com os valores do resultado da adio do equivalente binrio para 007 e 777 em mos, vamos agora transform-los em um valor decimal:

111 111 000 => 770Esse ento passa a ser o valor da permisso padro. Repare agora que o valor do umask justamente o contrrio do valor normal, ou seja, quando algum quer, por exemplo, ter 770 como permisso padro para um arquivo, deve ento usar o valor 007, o oposto. Isso significa que o umask vai dar permisso padro, ou seja, leitura, gravao e execuo para o proprietrio e para o grupo, mas nenhuma permisso para os demais. Veja, essa situao exatamente o contrrio de 007 se fosse usado chmod. Isso deixa claro que o umask sempre trabalhar com o valor oposto. Isso pode, de fato, parecer confuso, por isso necessrio raciocinar e praticar bastante para ter um entendimento claro do umask e de sua utilidade. Por isso, vamos exercitar: crie um diretrio qualquer, por exemplo, iw, e digite:

umask 027 iwEsse comando faz com que, por padro, os arquivos criados dentro do diretrio iw tenham permisso total para o dono do arquivo, apenas permisso de leitura e execuo para o grupo, e nenhuma permisso para os demais. Basta criar um arquivo qualquer dentro desse diretrio e digitar "ls -l nome do arquivo" para ver que as permisses padro so justamente essas, observe:

Aplicando umask no diretrio iwNote que o arquivo no tem permisso de execuo para o proprietrio e para o grupo porque no um arquivo executvel. Veja este caso para entender melhor: ao trabalhar com 770 (mscara 007) com determinados arquivos, por que alguns tm, na realidade, valor 660? Simplesmente porque o sistema sabe que para alguns arquivos a permisso de execuo no faz sentido. Assim, ele oculta essa permisso e d ao arquivo com permisso 770 o valor 660. Mesmo assim, recomendvel usar um valor com permisso de execuo mesmo para arquivos de textos, pois pode haver um diretrio no meio de tudo e, para este caso, a permisso de execuo vlida.

Vamos supor agora que voc queira que a permisso padro direcione os arquivos somente ao proprietrio (isto , os outros usurios no tm acesso) e os deixe como leitura, ou seja, voc quer ter a permisso r-x------. Para usar o umask necessrio usar o valor contrrio, que -w-rwxrwx. Passando este valor para binrio, o resultado 010 111 111 e passando para decimal, 277 (010 = 2, 111 = 7). Ento, o comando que deve ser usado : umask 277.

Lembre-se de um detalhe importante: as permisses padro so dadas aos arquivos e diretrios assim que criados. Sendo assim, para alterar permisses particularmente usa-se o comando chmod.

Alterando a propriedade de um arquivo/diretrio

Como voc j deve saber, todo arquivo ou diretrio no Linux tem um dono e um grupo. E se voc precisar, por algum motivo, transferir a "posse" desse arquivo/diretrio para outro usurio? Fazer isso muito fcil! Para facilitar a compreenso, vamos fazer o seguinte: transferir o arquivo guia.txt do usurio arthur para o usurio marvin. Para isso, faremos uso do comando chown. Mas, antes de prosseguirmos, esteja atento ao seguinte detalhe: se voc "transferir" a propriedade de um arquivo seu para um colega de trabalho, por exemplo, no poder "tomar" o arquivo de volta. Somente seu colega, agora dono do arquivo, poder devolv-lo a voc.

O procedimento para alterar a propriedade de arquivo consiste em primeiro informar quem ser o novo proprietrio e ento indicar o arquivo ou diretrio. Antes de executar esse passo, vamos digitar o comando "ls -l guia.txt" para comprovarmos que, de fato, arthur o dono atual do documento:Checando a propriedade do arquivoAgora, vamos executar o procedimento de transferncia de propriedade de guia.txt para o usurio marvin por meio do comando chown. Em seguida, vamos digitar novamente "ls -l guia.txt" para mostrar que o processo foi bem sucedido:

chown marvin guia.txtls -l guia.txt

Transferindo a propriedade do arquivo para outro usurio Em muitos casos, esse comando pode no ser permitido aos usurios (somente ao root) por questes de segurana. Se voc usar o chown e aparecer um aviso de "Permission Denied" ou "Command Not Found" ou equivalente, porque provavelmente seu usurio se encaixa neste caso. Cabe ento ao root permitir a transferncia de propriedade dos arquivos. Para isso, voc pode utilizar o comando sudo seguido da instruo de transferncia. Em poucas palavras, o sudo uma espcie de lista de autorizao para que o seu e outros usurios possam executar tarefas de poder administrativo. Se seu usurio tiver autorizao para isso, o sudo pedir que voc informe sua senha na primeira vez que o comando for utilizado. Note que, na imagem anterior, o comando sudo foi utilizado, ficando da seguinte forma:

sudo chown marvin guia.txt

Alterando o grupo de um arquivo/diretrio

Tambm possvel alterar o grupo de um arquivo ou diretrio. Para isso, pode ser necessrio identificar o grupo no qual o arquivo pertence. Tal procedimento pode ser feito com o comando "ls -lg nome do arquivo/diretrio". Veja o caso do nosso arquivo de exemplo guia.txt:

Alterando o grupo de um arquivo Note na imagem anterior que o arquivo em questo pertence ao grupo terra. Em seguida, foi transferido para o grupo infowester. Neste caso, o comando utilizado foi chgrp. Basta digitar esse comando seguido do nome do novo grupo mais o nome do arquivo. Veja como fica em nosso caso (repare que, novamente, o comando sudo utilizado):

chgrp infowester guia.txtAcima, o arquivo guia.txt foi transferido com sucesso para o grupo infowester. importante citar que voc deve ser membro do grupo do qual o arquivo pertencia para poder transfer-lo.

Finalizando

Uma das caractersticas que tornam sistemas operacionais baseados no Unix to seguros o leque de possibilidades de permisses. Todo arquivo e diretrio precisa ter um dono, assim como necessita ter configuraes de permisses para informar o que outros usurios e grupos podem ou no fazer. Perceba ento que, sabendo configurar permisses, possvel manter o sistema e suas funcionalidades bastante seguras. Por isso, a dica final : pratique e explore as possibilidades de cada comando.