• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

vbmaster

Permissões em GNU/Linux | LinTeam

4 mensagens neste tópico

Este simples tutorial tem como objectivo começar a ambientar os utilizadores que possivelmente o venham a ler, ao sistema de permissões de qualquer distribuição de Linux. É um tutorial de nível simples de compreensão e que não requer grandes conhecimentos prévios sobre bash shell - a shell (comandos de consola) mais usada nas distribuições de Gnu-Linux. Ou seja, existem mais shells.

De certo, ao longo da vossa caminhada pelos "reinos livres" que já se depararam, quando executavam algum comando ou função seja graficamente, seja por consola, uma mensagem referindo 'Permition Denied'. Estas são apenas fruto do bom e eficaz sistema de segurança do Linux.

Como poderão saber e denotarão ao executar qualquer comando 'ls -l' na consola, é vos mostrado todos os ficheiros de um directório (não-ocultos), incluindo nos detalhes o esquema de permissões. Este divide-se por 3 repetições das letras 'rwx'. A letra r refere-se à permissão para ler, a letra w para a permissão para escrever, e a letra x para a permissão de executar.

Por exemplo:

imagem3qs.jpg

Quando ao executar este comando, não verificamos todas as letras da sequência "rwxrwxrwx", mas sim algumas delas substituídas por um traço, significa apenas que essa permissão particular não está activa no documento em questão, para o utilizador em questão.

Antes de mais há que saber para que utilizador se refere os três conjuntos de 'rwx'. É aqui que entra o conceito de dono de um ficheiro. Quando criamos normalmente um ficheiro de texto, o utilizador que o criou é o seu dono. Portanto nas permissões o primeiro conjunto de 'rwx' refere-se sempre às permissões que o próprio dono do ficheiro detem. O segundo conjunto, refere-se às permissões que o grupo de utilizadores tem para aquele ficheiro. O terceiro refere-se a todos os outros que acedam externamente. Este dono e grupo de ficheiros a que se refere um file, são mostrados em qualquer comando 'ls -l'. Na imagem acima verifica-se que tanto o dono como o utilizador do grupo de utilizadores é 'miguel' para todos os ficheiros apresentados.

Atentando particularmente no primeiro ficheiro da imagem apresentada:

$ ls -l

-rw-r--r--  1 miguel miguel 12229308 2006-01-12 20:45 cedega_5.0.1_i386.deb

Verificamos que, para o ficheiro em questão, temos como dono do ficheiro o user miguel, e como grupo de utilizador, também o user miguel.

Portanto, e observando a imagem, verificamos que o dono do ficheiro (user miguel) pode ler e editar o ficheiro, mas não o pode executar. Já o utilizador referido no grupo de utilizadores, apenas pode ler o ficheiro, bem como todos os outros utilizadores externos.

De referir que, quando em root, ou seja, tendo permissões máximas, todos os ficheiros têm todas as permissões activas, pelo que se deve ser cuidadoso no que se faz quando se está neste modo.

Agora a pergunta que se põem é: "Eu não quero ter que estar a usar o comando sudo, para ter permissões máximas, sempre que quero executar, ler ou escrever no ficheiro file.txt, que tem permissões ilimitadas apenas para o dono (óbvio que o user em questão não é o dono). Como é que eu resolvo isso?"

A resposta é simples e vem através de principalmente dois comandos: o 'chmod' e o 'chown'.

São ambos bastante simples de utilizar. O chmod muda a configuração das permissões para que o dono, ou o grupo de utilizadores, ou mesmo outros, possam ver o ficheiro, executá-lo, bem como impedir que o façam.

Para isso usa um método simples de perceber, um método numérico. O chmod dá valores a cada letra das permissões.

Deste modo, o r passa a valer 4 valores, o w 2 valores, e o x 1 valor. Se quisermos que um utilizador tenha permissões para ler, apenas usamos o número 4, se quisermos que ele leia e escreva, somamos 4 a 2, e usamos o número 6. Se quisermos que ele tenha permissões totais: 4 + 2 + 1 = 7, usamos, portanto, o 7. Como o utilizador já deve ter percebido se quisermos que ele leia e execute será 4 + 1 = 5. E se quisermos que ele escreva e execute será 2 + 1 = 3.

No entanto, na utilização do chmod não utilizaremos apenas um número, mas sim 3. O primeiro referir-se-á às permissões do dono, o segundo às do grupo, e o terceiro a todos os outros.

Por exemplo, se quisermos tornar o ficheiro file.txt com permissões máximas para todos os utilizadores faríamos:

$ sudo chmod 777 file.txt

Portanto, permissões máximas (número 7 utilizado: 4 + 2 + 1), para cada uma das instâncias (dono, grupo de ficheiros e outros)

Se, no entanto formos egoístas e apenas queiramos que o dono do ficheiro possa trabalhar com este, faríamos:

$ sudo chmod 700 file.txt

Em que o 0 indica que as instâncias grupo de utilizadores e outros não terão permissões para nada no ficheiro em questão.

Por exemplo, se temos utilizadores traquinas a usar o mesmo computador, e que gostam de abrir os nossos documentos e voltá-los de pernas para o ar, podemos-lhes dar apenas a hipótese de os verem.

Supondo que esses utilizador não fazem parte do grupo de utilizador faríamos, por exemplo:

$ sudo chmod 774 file.txt

Supondo que esses utilizadores fazem parte do grupo de utilizadores, por exemplo, poderia ser:

$ sudo chmod 744 file.txt

Se, por qualquer motivo, nós próprios tivermos criado um file e tenhamos medo de o destruir, podemos simplesmente apenas dar ordem de leitura, para nós, e para todos.

por exemplo (permissão apenas de leitura para todos):

$ sudo chmod 444 file.txt

Nota: o sudo só é preciso caso não sejamos o dono do ficheiro. :OK:

Continuando no caminho das suposições, e se nós fôssemos uns completos irresponsáveis poderíamos muito bem declarar o nosso sistema com um paraíso de permissões, onde todos poderiam fazer tudo o que lhes apetecesse.

Nesse caso, faríamos:

$ sudo chmod -R 777 /

Usou-se o -R seguido do código de permissão, para que todos os files incluídos na pasta / e todos por aí fora, dentro das pastas seguintes, também tivessem aplicadas este tipo de permissões.

Continuando nos exemplos, podemos muito bem criar uma pasta, e dentro dela criar um ficheiro de texto com permissões a 777. E ao sair da pasta poderíamos defini-la como 700. Deste modo, só um user que soubesse o nome do ficheiro que se encontra dentro da pasta o poderia aceder. Não terá nunca acesso para, no entanto, abrir a pasta.

Penso que esta parte tenha ficado clara, passamos agora ao outro método de fazer as coisas. Como já viram, as permissões referem-se sempre a 3 instâncias de utilizadores, o dono, o grupo de utilizadores e todos os eventuais outros.

Ora se o super-utilizador root criou um ficheiro de texto, e lhe definiu as permissão para 700, todos os outros utilizadores não lhe terão acesso (pois o root é o dono).

Mas, se por exemplo, temos no sistema um utilizador 'x' que por acaso sabe a pass do root, este pode defenir permanentemente o seu acesso ao ficheiro da maneira que já devem saber:

$ sudo chmod 770 file.txt

(caso ele se encontrasse no grupo de utilizadores)

Mas pode também apenas e só mudar as regras do jogo. E é isso que faz o novo comando que vos vou ensinar, o 'chown'. Este muda a referência de a quem se estão a referir as permissões. Se no file em questão o 7 refere-se ao dono que é o root, podemos definir que nós, o user 'x', é que passamos a ser o dono do ficheiro. Executando o simples comando:

$ sudo chown x file.txt

desta maneira o 7 que se aplicava ao root, passa-se a aplicar ao user 'x'. Claro que o super-utilizador root nunca vai perder as permissões do ficheiro.

Além de podermos mudar quem é o dono do ficheiro, podemos também mudar o grupo de utilizadores do ficheiro.

Desta maneira, para o file.txt, podemos considerar tanto o user x como dono, como o utilizador do grupo de utilizadores fazendo:

$ sudo chown x:x file.txt

E desta maneira os 2 primeiros conjuntos de 'rwx' referir-se-ão ambos ao utilizador x, bem como os dois primeiros algarismos de qualquer código de permissões aplicado ao ficheiro.

Se por exemplo temos medo de fazer estrago a determinado file, e sabemos que nós somos o dono (user x), e que ele está actualmente definido para chmod 744, podemos dar apenas acesso ao root, de fazer o que quiser no file fazendo:

$ sudo chown root file.txt

Neste momento, penso que estão aptos para começaram a editar as permissões dos vosos ficheiros como bem quiserem, e desta maneira terem o vosso sistema Linux mais seguro.

Deixo um exercício para quem leu o tutorial, e que gostaria que postasse seguidamente a resolução para podermos avaliar se no fundo percebeu todo este processo. Escreva a branco se possível.

Exercício:

1. Temos um sistema, com os seguintes utilizadores: root, x, y, z.

a) o utilizador root sacou umas fotos da Carmen Electra e infelizmente quer tê-las só para ele, mas esqueceu-se que o utilizador x sabe a sua password.

aa) Diz dois métodos pelo que o utilizador x poderia ter acesso às fotos, sem ter que se tornar root sempre que quisesse acedê-las (o file pode-se considerar o foto.jpg com permissões a 700);

b)O utilizador y acabou de escrever o seu relatório sobre as lagostas das ilhas Fiji. Ao que parece isso é bastante importante para ele, e portanto apenas quer que ele possa ter permissão de escrita nesse relatório. No entanto não se importa que os outros utilizadores o vejam. Os restantes utilizadores do pc fazem, no file em questão parte do grupo de utilizadores.

O relatorio.txt veio criado com as seguintes permissões: rwxrwxr--

bb) Como pode ele fazer o que deseja, de duas maneiras possíveis (usando chmod e chown)?

E pronto, espero ter sido explícito neste meu tut, e que todos tenham compreendido.

vbmaster

LinTeam

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Tutorial muito bem concebido :(

Uma sugestão, acho bastante importante explicar o porquê do octal e fazer a relação com o binário (não vi referência ao binário aqui), é certo que colocar as somas em décimal ajuda os mais newbies a perceberem no entanto pode dar origem a más interpretações.

Por exemplo rwx corresponde a 7 pois o bit do r está a 1, tal como o bit do w e do x o que faz com que rwx seja 111 (7 em binário).

Como um ficheiro tem permissões de owner, grupo e others temos 3 agrupamentos de 3 bits cada, cada um correspondendo a rwx de forma igual, quando queremos ocultar as permissões de w ficando apenas de rx em binário seria 101 (5 em décimal).

Outra coisa que acho importante referir e que não vi é o significado de rwx, o r e o w é fácil de deduzir que se trata de read e write, no entanto o x não é assim tão intuitivo..., significa execute.

Mais uma vez parabéns pelo tutorial :)

abraços, HecKel

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Como poderão saber e denotarão ao executar qualquer comando 'ls -l' na consola, é vos mostrado todos os ficheiros de um directório (não-ocultos), incluindo nos detalhes o esquema de permissões. Este divide-se por 3 repetições das letras 'rwx'. A letra r refere-se à permissão para ler, a letra w para a permissão para escrever, e a letra x para a permissão de executar.

Quanto a isso do binário, nem eu próprio sabia... :(

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

ups :X fiz search por execute para confirmar se não me tinha passado..., afinal acabou por passar :(

Sorry :)

abraços, HecKel

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora