quarta-feira, 30 de dezembro de 2009

Diretórios e Arquivos 4: Compartilhando com a família

Para encerrar esta série de artigos, neste artigo vamos mostrar como criar uma configuração onde você pode compartilhar de forma segura o teu Desktop openSUSE com toda a família.

 Quando compartilhamos nosso computador com outras pessoas, a preocupação é quase sempre com nossos arquivos. O risco de que eles possam ser deletados ou coisa assim sempre preocupa. Com relação às demais coisas é mais tranquilo. No Linux, coisas como "destruir" o sistema operacional, apagando diretórios importantes ou removendo programas, é virtualmente impossível! Basta não dar a senha do root nem privilégios avançados a mais ninguém além de você!


A Idéia

No primeiro artigo deste série imaginamos um cenário bem fácil de acontecer, o qual reproduzimos aqui:
Imagine que você compartilha teu computador com tua esposa e filhos. E você não quer que eles acessem tudo em tua pasta home. Lembre-se que como todo usuário do Linux pertence ao grupo users, no mínimo todos eles podem ver o conteúdo da tua pasta!



Mas tem coisas que você pode querer compartilhar. Digamos, a pasta padrão "Imagens". O que você faz? Quatro coisas:



1) Alterar as permissões de "Grupo" e "Outros" em todas as pastas dentro da tua home para "Negado", selecionando a opção "Aplicar as alterações em todas as subpastas e seus conteúdos";

Isto faz com que apenas você possa ter acesso a tudo dentro da tua home e todos os outros ficarão sem a possibilidade de sequer abrir as pastas.



2) Agora você pode criar um novo grupo especialmente para definir as regras sobre a pasta padrão "Imagens". Vamos chamá-lo de familia;



3) Você muda o grupo da pasta padrão "Imagens" de users para familia e nas permissões de "Grupo" você muda para "Pode ver e modificar o conteúdo" ou apenas para "Pode ver o conteúdo", selecionando também a opção "Aplicar as alterações em todas as subpastas e seus conteúdos";



4) Incluir teus filhos e tua esposa  no grupo familia.



Pronto. Agora apenas a pasta padrão "Imagens" pode ser aberta e/ou modificada por tua família!


Se este cenário lhe parecer interessante, então este artigo será de utilidade para você!


1) Alterando as permissões nas pastas (diretórios) "protegidas"

Vamos começar alterando as permissões das pastas "protegidas", ou seja, aquelas que você não quer dar acesso a mais ninguém além de você. Isto pode ser feito facilmente com o Dolphin!

Você começa selecionando de vez todas as pastas em tua home, exceto aquela que você quer compartilhar com toda a família, que no nosso caso é a pasta "Imagens". Veja a figura abaixo, para esclarecimentos.


Selecionando múltiplas pastas


Com as pastas selecionadas, basta clicar com o botão direito sobre uma das pastas selecionadas e selecionar "Propriedades" no menu pop-up (você pode também apertar Alt+Enter).


Alterando as permissões sobre as pastas

Para alterar as permissões sobre todas as pastas agora é só fazer como mostrado no figura abaixo.


Alterando as permissões das pastas selecionadas


Observe na figura acima que as permissões para o Grupo e Outros foram modificadas para "Negado". Além disto, a opção "Aplicar as alterações em todas as subpastas e seus conteúdos" foi ativada.


2) Criando o grupo da família e os usuários

Agora vamos criar o novo grupo e os demais usuários da família. Para isto podemos usar o Yast, selecionando "Gerenciamento de usuários e grupos", na seção "Segurança e usuários".

Podemos começar criando os usuários. Neste exemplo, criamos os usuários kids, para as crianças e mother, para a mãe. Veja a figura abaixo, para esclarecimentos.


Criando os usuários


Para criar o grupo familia, basta ir na aba Grupos e mandar adicionar um grupo. É só informar o nome do grupo (familia) e no painel "Membros de grupo" você seleciona logo os membros, ou seja, a família toda (cawasame, kids e mother). No final, as coisas devem estar como mostradas na figura abaixo.


Grupos e membros


Observe na figura acima que toda a família pertence ao grupo familia.

OBS.: Esta etapa atende ao item 4) do cenário, ou seja, inclui os membros da família no grupo.


3) Mudando as permissões e o grupo da pasta "Imagens"

Para mudar as permissões sobre a pasta "Imagens" basta selecionar a pasta com o Dolphin e apertar Alt+Enter, para abrir o diálogo de configuração das propriedades. Observe a figura abaixo para mais detalhes.


Mudando as permissões da pasta "Imagens"

Note na figura acima que foram dadas as permissões de "Pode ver e modificar o conteúdo" para o Proprietário e o Grupo e negadas as permissões para Outros. A opção de aplicar as alterações em subpastas também foi selecionada.


Alterando o Grupo da pasta Imagens

O usuário cawasame, mesmo sendo o dono da pasta "Imagens", não tem poderes para mudar o grupo ao qual ela pertence. Só quem pode fazer isto é o administrador do Linux, o usuário root! Por isto que não fizemos isto via Dolphin!

Para alterar o grupo ao qual a pasta "Imagens" pertence, será preciso abrir um terminal e invocar o usuário root. A melhor forma de fazer isto é através do comando sudo, desta forma:

sudo -R cawasame:familia Imagens

Feito isto, a pasta "Imagens" terá mudado do grupo users para o grupo familia. A opção -R aplica as alterações em todas as subspastas e seus conteúdos.

Pronto. Agora toda a família pode usar o Desktop de forma segura e compartilhar entre si a pasta "Imagens" dentro da home do usuário cawasame!


Compartilhando o Desktop com a família

Feitas as estapas anteriores, a tela de Login ficará como mostrada na figura abaixo.


A família cawasame!


Quando mais de um usuário compartilha o mesmo Desktop, há uma certa "dinâmica" de uso que precisa ser compreendida. Precisamos começar entendendo o conceito de Sessão.


As sessões de usuário

Quando um usuário faz Login, é aberta a sessão daquele usuário. Aberta a sessão, ele pode trabalhar à vontade até que resolva "sair" definitivamente (Logoff)  ou fazer uma "pausa", bloqueando a sessão.

Uma sessão pode ser bloqueada clicando no botão com um cadeado que fica no canto inferior da tela ou simplesmente esperando entrar a proteção de tela. A primeira opção, obviamente, é a mais segura.


Abrindo mais de uma sessão

Uma segunda sessão de usuário pode ser aberta a partir de duas situações. A mais provável é encontrar uma sessão bloqueda, como mostrado no figura abaixo.


Sessão bloqueada


Neste caso, você clica em "Trocar usuário...". Feito isto, você pode trocar para a sessão de outro usuário que porventura esteja aberta ou iniciar uma nova, com mostrado na figura abaixo.


Selecionando ou iniciando outra sessão


Uma situação que pode ocorrer é um usuário que estava usando uma sessão fazer Logoff. Neste caso, o openSUSE mostrará a tela de Login e outro usuário pode ser induzido a abrir outra sessão, mesmo tendo uma já aberta! Para evitar isto, o melhor a fazer é clicar no item "Menu" da tela de Login e depois em "Trocar usuário", para ver se não há uma sessão já aberta. Veja a figura abaixo, para esclarecimentos.


Trocando de sessão a partir da tela de Login


Ajuste fino

Você pode facilitar a vida da família, orientando-os a adicionar um Local no painél Locais do Dolphin. É muito fácil: basta clicar com o botão direito no painél e selecionar "Adicionar entrada". Então você informa um nome e o caminho para a pasta compartilhada (em /home/cawasame/Imagens, neste exemplo) e pronto! Veja a figura abaixo.


Adicionando um local no Dolphin


Feito isto, basta um click para que os membros da família tenham acesso a pasta compartilhada "Imagens". Veja a figura abaixo, mostrando o resultado.


O local "Pasta da Família"


Considerações finais

A idéia básica é esta! Os "mecanismos" são muito simples de implementar e modificar. Se você quiser compartilhar outras pastas, é só seguir a lógica. Se quiser compartilhar uma pasta em outro lugar que não seja dentro da tua pasta home, a lógica é a mesma, mudando apenas nomes, local, etc.

Espero que estas dicas tenham sido úteis!


Diretórios e Arquivos 3: usuários X permissões (chmod e chown)

No primeiro artigo desta série nós falamos vagamente sobre permissões de acesso a arquivos e pastas, num tópico entitulado como "Proprietário, Permissões e Grupos".

Neste artigo vamos nos aprofundar um pouco mais neste assunto pouco compreendido, mas de suma importância para quem administra um computador baseado em Linux. Vamos falar sobre Grupos de Usuários e as diferentes modalidades de Permissão de Acesso a Arquivos e Diretórios.


Grupos, Usuários e Permissões


O conceito de usuários e permissões é muito importante no openSUSE e deve ser entendido como uma idéia de um sistema central que engloba tudo no Linux.


Grupos

Quando da instalação do openSUSE você deve ter criado ao menos uma conta de usuário. E, desde então, vem utilizando esta conta para fazer login, acessar o openSUSE e rodar seus programas preferidos. E espero que você nunca tenha utilizado a conta do root para fazer login no openSUSE. Nunca!

Ainda que você não tenha se dado conta, um usuário do Linux sempre pertence a um grupo. No openSUSE, todo usuário pertence ordinariamente (por default) a um grupo chamado users.

OBS.: Algumas distribuições Linux criam um grupo com o mesmo nome do usuário, fazendo ele pertencer automaticamente a este grupo.


Por que existem grupos de usuários?

O Linux é um sistema operacional baseado (ou inspirado) no Unix. O Unix é um poderoso sistema operacional que nasceu no que é chamado de "Grande Porte": computadores Main Frame, onde inúmeros usuários trabalham simultâneamente nele.

Imagine um grande banco, com vários diretores, gerentes, caixas e demais funcionários, cada um com atribuições diferentes e permissões diferentes sobre os arquivos e dados no Main Frame. Seria impraticável para um administrador deste servidor configurar as permissões de acesso individualmente.

Através dos grupos, um administrador pode muito mais facilmente fazer estas configurações pois, ao invés de informar individualmente quais usuários podem ter acesso ou não a diretórios e/ou arquivos, ele informa qual grupo.

Assim, ele pode, por exemplo, criar um grupo para os gerentes e fazer com que todo usuário gerente pertença a este grupo. Feito isto, ele pode facilmente configurar determinado diretório de modo que apenas o grupo dos gerentes tenha acesso a ele. Automaticamente, todos os usuários deste grupo passam a ter acesso ao diretório.

Embora você muito provavelmente utilize o openSUSE em tua casa e, mais provavelmente ainda, seja o único usuário, lembre-se que o "motor" do openSUSE é o Kernel do Linux. E o mesmo "motor" usado no openSUSE é utilizado no SUSE Enterprise Server e tantos outros servidores baseados em Linux, geralmente servidores de arquivos.

Mas vamos supor que, além de você, mais de uma pessoa utilize o openSUSE. Acredite, compreender como funcionam os grupos de usuário e como isto facilita a configuração das permissões de acesso a diretórios e arquivos, vai tornar tua vida mais tranquila e segura.


Usuários

Uma conta padrão de usuário no openSUSE restringe-se ao que pode ser feito em sua própria área, dentro da pasta /home. Vimos em artigos anteriores desta série que para cada usuário criado é criado também um diretório dentro de /home, geralmente com o mesmo nome da conta do usuário.

O que o usuário pode ou não fazer em todo o sistema é definido no ato da criação da conta. basicamente, ele tem "plenos poderes" sobre sua "home" e "poderes limitados" sobre todo o resto. Entenda por "poder" o conceito de Permissões.


MEMORIZE: No Linux, tudo (diretórios e arquivos) tem um dono e pertence a um grupo. Vamos repetir: No Linux, tudo (diretórios e arquivos) tem um dono e pertence a um grupo!
Tudo (diretórios e arquivos) dentro da home de um usuário pertence a ele e, por default, tudo o que ele criar em sua home, obviamente, pertencerá a ele. Além disso, também por default, tudo pertencerá ao grupo users.
Embora um usuário de uma conta padrão possa navegar livremente por quase todos os diretórios do sistema, o que ele poderá fazer varia, conforme o diretório e as permissões definidas para ele.

Se ele "visitar" o diretório de outro usuário, por exemplo, poderá ver tudo. E quando falamos ver tudo estamos falando de abrir subdiretórios, arquivos, etc. E embora ele não possa modificar nem apagar coisa alguma, nada o impedirá de copiar os arquivos para a "home" dele e fazer o que quiser com eles depois...

Da mesma forma, se ele "visitar" os diretórios essenciais do sistema, poderá entrar em quase todos, com a certíssima excessão do diretório /root.

Enfim, o que define as permissões do que um usuário pode ou não ter sobre tudo no Linux (diretórios e arquivos) é o grupo a que ele pertence e quais diretórios e arquivos ele é o dono.


Permissões

Entendendo as permissões

Cada arquivo e cada diretório pertence a um usuário. Tudo no Linux pertence a um usuário. Isto é uma "cláusula pétrea na constituição" do Linux!

Além disso, diretórios e arquivos têm três separadas configurações que indicam quem, dentro de todo o sistema Linux, pode ler, escrever e, se o arquivo em questão for um "executável", quem pode "executar" ou rodar (run) o arquivo.

No caso de um diretório, estas configurações servem ainda para dizer quem pode entrar nele. Se você tentar entrar num diretório sobre o qual não tenha permissão de acesso, receberá um "Acesso negado!".

Quando você pede para ver as propriedades de um diretório ou pasta no Dolphin, ele te mostra uma tela em cuja aba "Permissões" podemos ver algo como mostrado na figura abaixo.


Permissões sobre a pasta cawasame

Na figura acima podemos ver de quem é a propriedade da pasta cawasame e podemos ver também as permissões sobre ela.

Pensando alto: "O mundo visual é lindo, maravilhoso, a interface gráfica é uma "mão na roda", blá-blá, mas oculta muita informação. É por isto que os usuários do mundo das janelas tendem a ser tão obtusos!"

Há outra forma de ver como as coisas de fato funcionam no Linux: abrir um terminal e usar o comando ls. O comando ls exibe informações sobre diretórios e arquivos da forma como eles são, de fato, tratados pelo Linux.

Executando o comando ls -l, podemos ter uma saída como esta:

ls -l
(...)
-rw-r--r-- 1 cawasame users      903 Jan  4 01:30 Teste.txt
(...)

(Fizemos algumas omissões e colorimos o resultado por questões didáticas)

Não se preocupe com todas as informações apresentadas. O que precisa ser analisado agora é o seguinte:

cawasame é o dono do arquivo Teste.txt;
users é o grupo ao qual o arquivo Teste.txt pertence;
A parte -rw-r--r-- corresponde a lista de permissões sobre o arquivo Teste.txt.

O conceito de dono e grupo já é de nosso domínio. Vamos analisar mais de perto as permissões.

As letras r, w e o símbolo - representam as permissões sobre o arquivo Teste.txt. Normalmente, a lista de permissões consiste nas letras r (para leitura), w (para escrita), x (para executáveis) e o símbolo - (significando nada aplicável), que pode aparecer no lugar de uma destas letras.

Pode parecer confuso a primeira vista, mas é muito simples de entender, depois que a gente aprende a olhar direito. Analise a figura abaixo.


Permissões


A lista de permissões

Para entender facilmente a lista de permissões, basta dividí-la em quatro grupos, como mostrado na figura acima. O significado de cada grupo é o seguinte:

Tipo de arquivo: este caractere representa o tipo de arquivo. Um arquivo comum é indicado por um traço (-). A maioria absoluta dos arquivos se enquadra nesta categoria. Um d indica que o "arquivo" é, na verdade, um diretório. Existem outras letras, mas para casos raros e fora do escopo deste artigo.

Permissões do dono: os dois primeiros caracteres deste grupo (rw) indicam que o dono deste arquivo tem permissões de leitura (r) e escrita (w) sobre ele. O traço (-) indica que o dono não pode executar este arquivo, provavelmente porque ele não é um programa nem um script. Caso fosse um executável poderia haver um x neste local, e o dono poderia executá-lo.

Permissões do grupo: o primeiro caractere deste grupo indica que todo usuário que pertencer a este grupo tem permissão para ler (r) o arquivo. Porém o traço (-) na segunda posição indica que a escrita não é permitida. O traço (-) na terceira posição indica, da mesma forma que para o dono, que o arquivo em questão não é um executável e que os usuários que pertencem ao grupo não podem executá-lo.

Permissões dos demais: este último grupo de regras de permissões define o que todos os demais usuários do sistema podem fazer sobre o arquivo. A interpretação dos caracteres é a mesma: o primeiro caractere deste grupo indica que qualquer usuário tem permissão para ler (r) o arquivo. Porém o traço (-) na segunda posição indica que a escrita não é permitida. O traço (-) na terceira posição indica que o arquivo em questão não é um executável e que ninguém poderá executá-lo.


Exercício de fixação

Como este assunto pode ser difícil de assimilar na primeira leitura, vamos observar a figura abaixo e interpretar o que vemos.


Arquivos e diretórios na pasta bin de minha "home"


O Dolphin pode ser configurado para exibir muita informação a respeito dos diretórios e arquivos, como mostrado na figura acima. Nela podemos ver as colunas Permissões, Proprietário e Grupo.

De imediato, podemos ver que todos os diretórios e arquivos pertencem ao usuário cawasame e ao grupo users.

Graficamente, podemos ver que BOINC e chkrootkit-0.49 são diretórios. Isto fica claro porque podemos ver também o d na primeira posição, na coluna Permissões!

burnxbox360game e videoinfo.sh não são diretórios. Isto fica claro pela ausência do d na primeira posição.

Estas mesmas informações em um Terminal seriam exibidas desta forma, pelo comando ls -l:

cawasame@SuSE112:~/bin> ls -l
total 16
drwxr-xr-x 3 cawasame users 4096 Nov 29 12:55 BOINC
-rwxr-xr-x 1 cawasame users  465 Dez 30 12:07 burnxbox360game
drwxr-xr-x 2 cawasame users 4096 Dez  6 18:28 chkrootkit-0.49
-rwxr-xr-x 1 cawasame users   87 Dez  2 17:41 videoinfo.sh
cawasame@SuSE112:~/bin>


Note que para facilitar a interpretação, BOINC e chkrootkit-0.49 são exibidos na cor azul, indicando de imediato que são diretórios e não arquivos comuns. Mas o tira-teima é o d na primeira posição das permissões.


Os x que aparecem no segundo, terceiro e quarto grupos de permissões não significam que BOINC e chkrootkit-0.49 são executáveis. Como se tratam de diretórios, significa que é permitido o acesso a eles, ou seja, os usuário poderão entrar neles.


burnxbox360game e videoinfo.sh, como já foi dito, são arquivos. No caso destes dois arquivos, os x que aparecem no segundo, terceiro e quarto grupos de permissões indicam que eles são executáveis (programas ou scripts) e que tanto o dono quanto os demais usuários têm permissão para executá-los. Porém a ausência da permissão de escrita (w) no terceiro e quarto grupos indicam que apenas o dono pode modifcá-los (escrever ou alterar).

No Dolphin é ainda mais óbvio, visualmente (o ícone semelhante a um cursor indica que são scripts). No Terminal, a cor verde indica a mesma coisa: são arquivos executáveis.


Alterando Permissões e a Propriedade (ownership)

Embora seja possível alterar as permissões de acesso via Dolphin, vamos fazer isto usando o terminal. É sabido que as interfaces gráficas ajudam bastante a utilização de qualquer sistema operacional. Todavia, muita coisa importante é deixa em segundo plano e o usuário termina por acostumar-se com o pouco que lhe é passado via interface gráfica.

Por questões didáticas, vamos mostrar como alterar permissões usando o comando chmod, e vamos mostrar como alterar a propriedade (quem é o dono) de um arquivo, usando o comando chown.

Depois que você tiver aprendido a usar chmod e chown em toda a potencialidade deles, ficará muito fácil fazer a parte mais simples via Dolphin.


O comando chmod

chmod é o comando do Linux que altera as permissões de acesso sobre diretórios e arquivos. A sintaxe básica de chmod é apresentada quando o invocamos com a opção --help. Ex.:

chmod --help
Uso:  chmod [OPÇÃO]... MODO[,MODO]... ARQUIVO...
 ou:  chmod [OPÇÃO]... MODO-OCTAL ARQUIVO...
(...)
Altera o modo de cada ARQUIVO para MODO.

(...)

  -R, --recursive  altera arquivos e diretórios recursivamente
      --help       mostra esta ajuda e finaliza
      --version    informa a versão e finaliza

Cada MODO é da forma "[ugoa]*([-+=]([rwxXst]*|[ugo]))+".


Mais uma vez, fizemos algumas omissões por questões didáticas. E nâo se assuste com a forma hieroglífica deste help! Vamos dissecá-lo a partir de agora.

Simplificadamente, você usa chmod desta forma:

chmod permissões ARQUIVO

permissões é o que o --help chama de MODO
ARQUIVO é o arquivo ou diretório que você quer modificar as permissões

A parte que precisamos estudar é realmente permissões! Nada melhor que alguns exemplos, para depos virem as explicações, concordam? Então vamos partir de uma situação um pouco atípica. Analisem o que se segue:

d--------- 2 cawasame users 4096 Jan  4 22:50 Diretorio
---------- 1 cawasame users  592 Dez 21 00:36 Texto.txt

Observem que Diretorio é um diretório. E Texto.txt é um arquivo comum. Mas, que coisa esquisita, não há permissão nenhuma! Do jeito que aí está, quase ninguém pode fazer quase nada sobre Diretorio e Texto.txt. (Claro que o usuário root pode tudo!).

Dissemos quase ninguém pode fazer quase nada por uma razão: o dono pode alterar as permissões. Mas antes que ele as faça, nem ele poderá ler (r), escrever (w) ou executar (x) nada!

Se algum usuário, mesmo o dono, tentar entrar em Diretorio, não vai conseguir!
Se algum usuário, mesmo o dono, tentar ver o conteúdo de Texto.txt, não vai conseguir!

É uma situação absurda, inútil! Foi criada apenas para que possamos aprender a usar o chmod. Então vamos lá:


chmod e diretórios

Para que um diretório tenha utilidade, é preciso que você possa entrar nele (x) e ter direitos de leitura (r) e escrita (w) sobre ele, não é mesmo? Então vamos começar dando ao dono (u) permissões para isto. Fazemos assim:

chmod u+rwx Diretorio

Resultado:
drwx------ 2 cawasame users 4096 Jan  4 22:50 Diretorio


Interprete isto como:

"Mude as permissões (chmod) do dono (u) dando-lhe (+) permissão para leitura, escrita e execução (rwx) sobre Diretorio"

OBS.: Lembre-se que, no caso de diretórios, "execução" significa poder entrar neles.

Ok, agora o dono pode entrar no diretório e tem permissão de gravar coisas dentro dele e até mesmo apagar. Vamos agora dar permissões ao grupo (g). Você seria capaz de fazer isto sozinho? Aposto que sim. Arraste o ponteiro do mouse sobre as linhas em branco aí abaixo, para ver o comando!


chmod g+rx Diretorio


Resultado (acumulando com o comando anterior):
drwxr-x--- 2 cawasame users 4096 Jan  4 22:50 Diretorio



Interprete isto como:

"Mude as permissões (chmod) do grupo (g) dando-lhe (+) permissão para leitura e execução (rx) sobre Diretorio"

Neste ponto, o dono do diretório Diretorio tem permissões para entrar nele, ler, gravar e apagar coisas dentro dele. Os usuários do grupo ao qual Diretorio pertence, têm permissão para entrar nele e apenas ler coisas dentro dele.

Se deixarmos as coisas como estão, os outros (o), ou seja, os demais usuários que não o dono e que não façam parte do grupo ao qual Diretorio pertence, não poderão fazer absolutamente nada sobre Diretorio. Mas, se você quiser dar aos outros as mesmas permissões que o grupo, basta usar chmod maus uma vez, deste forma:


chmod o+rx Diretorio


Resultado (acumulando com os comandos anteriores):
drwxr-xr-x 2 cawasame users 4096 Jan  4 22:50 Diretorio

Interprete isto como:
"Mude as permissões (chmod) para outros usuários (o) dando-lhes (+) permissões para leitura e execução (rx) sobre Diretorio"


Juntando tudo

Fizemos as mudanças nas permissões de forma gradativa, começando pelo dono, depois o grupo e finalmente os outros. Mas poderíamos ter feito tudo de uma vez, desta forma:

chmod u+rwx,g+rw,o+rw Diretorio

Simples, não?!

Se você agora olhar mais uma vez para o --help do comando chmod, certamente entenderá melhor o que significam:
 Uso:  chmod [OPÇÃO]... MODO[,MODO]... ARQUIVO... 
(...)
Cada MODO é da forma "[ugoa]*([-+=]([rwxXst]*|[ugo]))+".

Já utilizamos as letras u, g, e o, que correspondem ao usuário dono (u), ao grupo (g) e aos outros (o). A letra a significa todos (all).

Se você quiser dar as mesmas permissões a todos (usuário dono, grupo e outros) de uma vez só, use chmod com a. Ex.:

chmod a+rwx Diretorio

O comando acima permissões de leitura, escrita e execução sobre Diretorio a todo mundo (all) de uma só vez!


chmod e arquivos

Tudo o que você aprendeu até agora sobre o chmod e diretórios funciona do mesmo jeito com os arquivos. A única diferença é que, no caso de arquivos, a permissão x deve ser usada para informar que determinado arquivo é um programa ou script executável.

O arquivo Texto.txt continua sem nenhuma permissão definida. Ou melhor, as permissões estão definidas de modo a que ninguém possa fazer nada com ele. Com base no conhecimento que já temos, podemos definir as permissões simplesmente com o comando:

chmod u+rw,g+r,o+r Texto.txt

Desta forma, as permissões ficam assim:

-rw-r--r-- 1 cawasame users  592 Dez 21 00:36 Texto.txt


O comando chown

Outro comando que precisamos aprender para completar esta etapa é o chown. Este comando é usado para informar quem é o dono e também a que grupo pertence um diretório ou um arquivo. Sua sintaxe básica é a seguinte:

chown --help
Uso: chown [OPÇÃO]... [DONO][:[GRUPO]] ARQUIVO...
 ou: chown [OPÇÃO]... --reference=ARQREF ARQUIVO...
Muda o dono e/ou grupo de cada ARQUIVO para DONO e/ou GRUPO.
(...) 
  -R, --recursive        muda arquivos e diretórios recursivamente        
(...)

     --help     mostra esta ajuda e finaliza
      --version  informa a versão e finaliza

O dono, caso não informado, permanece inalterado. O grupo também não é
alterado se não for informado, mas mudará para o grupo de login se deixado
implícito por ":" após um DONO simbólico.
DONO e GRUPO podem ser numéricos bem como simbólicos.

Exemplo:
  chown root /u         Altera o dono de /u para "root".
  chown root:equipe /u  Idem, mas também altera seu grupo para "equipe".
  chown -hR root /u     Altera o dono de /u e seus arquivos para "root".

(mais uma vez, fizemos algumas omissões por questões didáticas)

OBS.: Embora você possa usar chown, em muitas situações você terar que utilizá-lo com sudo ou depois de mudar para o modo super usuário como o comando su. Isto decorre do fato de que você só pode fazer mudanças sobre o que te pertence. Ou seja, se um arquivo te pertence e você quer dá-lo a outro, tudo bem. Mas se o arquivo não for teu, apenas o usuário root poderá mudar de uma para outro dono (a não ser o próprio dono, claro).


chown na prática

O uso prático de chown é muito simples. Você o utiliza mais ou menos assim:

chown dono:grupo ARQUIVO

dono:grupo é a combinação "usuário que será o novo dono":"novo grupo" ao qual ARQUIVO passará a pertencer.

Você pode mudar apenas o dono, sem interferir no grupo ao qual ARQUIVO pertence, desta forma:
chown dono ARQUIVO

Uma das utilidades para chown é quando você por alguma razão copiou ou moveu um arquivo para tua home ou, ainda, se estava trabalhando com o usuário root e criou alguma coisa. Nestes casos, pode acontecer que embora o arquivo esteja em tua home, ele pertence ao root (ao a outro usuário). Você usa chown para resolver o problema. Analise a situação abaixo:

cawasame@SuSE112:~> ls -l
(...)
-rw-r--r--   1 root     root          20 Jan  5 13:33 config.txt
(...)

Sabe lá Deus por que, o arquivo config.txt está em minha home, mas pertence ao usuário root. E embora eu tenha permissões de leitura, não sou o dono, nem posso fazer alterações nele!

Resolve-se isto facilmente com chown. Basta executar o seguinte comando:

cawasame@SuSE112:~> sudo chown cawasame:users config.txt
Senha:
cawasame@SuSE112:~>

Feito isto, as coisas agora estarão assim:

cawasame@SuSE112:~> ls -l config.txt
-rw-r--r-- 1 cawasame users 20 Jan  5 13:33 config.txt
cawasame@SuSE112:~>


Note que se tivéssemos usado chown sem o sudo antes, teríamos obtido o seguinte resultado:

cawasame@SuSE112:~> chown cawasame:users config.txt
chown: alterando o dono de "config.txt": Operação não permitida

Pelo simples fato de que o dono de config.txt até então é o root!


Outra forma de usar chmod

Existe outra forma de usar chmod muito mais eficiente, embora seja talvez mais difícil de entender. Quando você usa a forma chmod u+rw, fica fácil interpretar o que está sendo realizado, pois o u indica que você vai alterar as permissões do usuário dono do arquivo. Além disso, o + indica que você está dando permissões e o r e o w também claramante informam quais serão as permissões.

Este modo de usar chmod, porém, tem um incoveniente: ele não altera o modo das permissões que não forem informadas. Explicando: se você der permissões de leitura, escrita e execução a um arquivo e depois quiser remover apenas a permissão de execução do seguinte modo:

chmod u+rwx Texto.txt

e depois um

chmod u+rw Texto.txt

Não vai funcionar! Ou seja, a permissão de execução dada anteriormente não será removida no segundo comando, como poderia parecer que sim!

O correto seria fazer

chmod u-x Texto.txt

Porém existe um outro modo de usar chmod que mata os dois coelhos numa só paulada! É o modo octal (ou numérico).


OCTAL-MODE de chmod

A outra forma de usar chmod é esta:

chmod 000 Texto.txt -> Retira todas as permissões sobre Texto.txt (---------)
chmod 777 Texto.txt -> Dá a todo mundo todas as permissões possíveis sobre Texto.txt (rwxrwxrwx)
chmod 444 Texto.txt -> Dá a todo mundo apenas a permissão para leitura sobre texto.txt (r--r--r--)

No modo octal você deve sempre usar três dígitos numéricos. O primeiro dígito define as permissões do usuário dono (u); o segundo dígito define as permissões do grupo (g); e o terceiro dígito define as permissões dos outros (o). Os valores possíveis estão dentro da faixa de 0 a 7 e as permissões envolvidas podem ser mais esclarecidas observando a figura abaixo.


Octetos usados em chmod

A lógica por trás disto é muito simples, se você entende de binários! Considere que cada permissão (rwx) é um bit. Se o bit correspondente ao r estiver ativado (1), então a permissão é dada. Se o bit correspondete ao r estiver desativado (0), então a permissão e tirada. E isto vale para todas as outras permissões, respeitando a posição da letra (a ordem é sempre rwx).

7 significa todas as permissões ativadas, pois todos os bits estão em 1. É só lembrar que 111 em binário é igual a 7.
4 significa apenas a permissão de leitura, pois apenas o bit da letra r está ativado e os outros estão desativados. 100 em binário é igual a 4!

É muito simples! Digamos que você tenha um script (arquivo executável) e você queira dar permissões de leitura, escrita e execução para o dono, mas apenas leitura e execução para os demais. As permissões seriam rwxr-xr-x. Colocando isto em binário seria 111101101. Separando em seus respectivos grupos, teríamos 111 para o dono, 101 para o grupo e 101 para os outros. Ora 111=7; 101=5 (consulte a figura acima). Deste modo, usaríamos chmod assim:

chmod 755 script

que pode ser interpretado como

chmod 111 101 101 script

ou como

chmod rwx r-x r-x script

As cores são para lembrar que a primeira posição é o usuário dono, a segunda posíção é o grupo e a terceira os outros.

A vantagem de usar chmod assim é que de uma vez só você ativa ou desativa as opções que quiser.

terça-feira, 29 de dezembro de 2009

Diretórios e Arquivos 2: diretórios do sistema

Se você é um usuário "comum" do openSUSE, pode continuar a utilizá-lo sem se preocupar com suas "entranhas". Mas se você é ou pretende ser um usuário mais avançado, este artigo pode te ajudar um pouco.

Há determinadas atividades no openSUSE que te levam a executar alguns comandos "exóticos", abrir pastas com nomes esquisitos, e outras coisas deste tipo. Se você seguir à risca as instruções, sempre dará tudo certo, embora não saiba exatamente o que e, mais importante ainda, por que está fazendo aquilo.

Neste artigo vou apresentar a estrutura de diretórios do openSUSE, que vale para o Linux em geral. São muitos diretórios, alguns até "bizarros". Por isto, vou me concentrar nos mais relevantes.


A Raiz de tudo

Vimos no artigo anterior desta série que não existem letras de unidade no Linux, como existe no outro sistema operacional. "Inspirado" no Unix, o Linux tem "Pontos de Montagem". Tudo no Linux, de partições em discos rígidos a dispositivos periféricos são acessados através de um ponto de montagem.

O diretório raiz /

Tudo no Linux começa no diretório /

A barra simboliza o que chamamos de diretório raiz. É por isto que o mais comum de se ver no Linux são coisas do tipo /usr ou /bin ou /etc/X11 ou ainda /home/cawasame/Documentos/FotosNatal2009/PapaiNoel.jpg...

É chamado de raiz numa alusão a idéia de árvore: a raiz está na base de tudo. Acima da raiz vem a árvore. Daí falarmos "árvore de diretórios".

Então quando você digita algo como cd /home, você está dizendo ao Linux:

"Comece a partir do diretório raiz (/) e depois vá para um diretório chamado home!"

Mas se você estiver num ponto qualquer e digitar apenas cd home, o Linux vai entender o seguinte:

"Ei, entre num diretório chamado home!"

E ele vai tentar entrar num diretório home, que espera estar acima do ponto em que você estiver quando digitar o comando! Se você estiver dentro do diretório /estudos/linux, ele vai procurar um diretório home dentro de /estudos/linux, ou seja /estudos/linux/home tem que existir!


Os diretórios principais

Vamos agora analisar os pricipais diretórios do Linux, sua finalidade, e o que pode ser encontrado neles.

O Diretório /bin

Neste diretório se encontram os utilitários padrão do Linux. Coisas do tipo cp (copiar arquivos) e ls (listar informações sobre arquivos) se encontram neste diretório.

O diretório /bin

Embora no mundo das janelas e do Dolphin você não precise sempre usar diretamente estes comandos ou programas utilitários, são eles quem de fato executam muita coisa nos bastidores.

O Diretório /root

Este diretório é a "casa" do usuário root!

Vimos no artigo anterior desta série que cada usuário no Linux tem um diretório dentro da pasta /home. Cada diretório de usuário é identificado pelo mesmo nome de acesso do usuário (o nome usado para o login) e é simplificadamente chamado de "home do usuário".

Naquele artigo foi dito:
Toda as homes de todos os usuários do Linux, com excessão do usuário root, ficam dentro da pasta padrão /home. Assim, se existirem os usuário Lucia, Maria e Pedro, existirão as pastas /home/Lucia, /home/Maria e /home/Pedro. É muito simples!
O usuário root é o todo poderoso do Linux. Ele é o rei do pedaço. Pode tudo, inclusive apagar tudo com um só comando! Por isto tenha sempre muito cuidado quando utilizar o usuário root!

Ele é tão poderoso que nenhum usuário tem direito ou privilégio algum sobre sua home. Caso você tente ver o que tem dentro desta pasta, será surpreendido com esta mensagem:




O Diretório /etc

Neste diretório é onde ficam as configurações e algumas tarefas de rotina do sistema. Se você estiver com problemas com a rede, por exemplo, pode resetá-la através do comando

sudo /etc/rc.d/network reset

network é um script do sistema que tem entre tantas finalidades esta: resetar a rede.


O Diretório /dev

Neste diretório é onde ficam os "arquivos" de acesso aos periféricos do sistema. dev vem de devices, que significa dispositivos [periféricos]. A impressora, unidades de disco, portas USB e tantos outros dispositivos periféricos são acessados através de "arquivos" dentro deste diretório.

Se você abrir um terminal e digitar, por exemplo

cp /dev/stdin teste.txt

Verá que, estranhamente, o sistema entrará num modo de "edição de texto"!

Se você digitar algumas coisas e no final apertar Ctrl+Z, será criado um arquivo chamado teste.txt, contendo tudo o que você escreveu até apertar Ctrl+Z!

Observe a figura abaixo e tente entender o que aconteceu!


Brincando com stdin!

stdin é, na verdade, o dispositivo de entrada padrão, mais conhecido como o teclado!

O que a gente fez foi mandar "copiar" o "arquivo" /dev/stdin para o arquivo teste.txt. Ora, stdin não é um arquivo de verdade (por isto as aspas duplas). Trata-se de um dispositivo de entrada, mais precisamente o teclado.

Espero que esta nossa "brincadeira" tenha esclarecido o significado dos "arquivos" dentro do diretório /dev e, principalmente, o real significado deste diretório.


O Diretório /home

Neste diretório é onde ficam os "apartamentos" de cada usuário. Uso a analogia a apartamentos como se quisesse sugerir que o Linux é um prédio ou condominio de moradores: eles compartilham uma área comum, mas cada um tem sua área privativa.

Este diretório já foi bastante explicado tanto neste quanto no artigo anterior.



O Diretório /tmp

Este é o diretório para as coisas temporárias no Linux. Pense neste diretório como uma área de rascunho, onde coisas são gravadas durante a criação de algo e antes deste algo ser salvo definitivamente num lugar seguro.

O próprio Linux grava muitas coisas nele sem que você saiba o que é e para que é...

Algumas distribuições do Linux são configuradas de modo a de tempos em tempos fazer uma "faxina" neste diretório, apagando tudo! Não é o caso do openSUSE.

DICA: Se algum dia faltar espaço em teu disco rígido, uma solução provável para este problema é fazer você mesmo uma "faxina" em /tmp.

E se algum dia precisar de um lugar para armazenar coisas temporárias e descartáveis, fique a vontade para fazer o que quiser neste diretório. Só não confie que as coisas ficarão lá por muito tempo, pois todos os usuários do Linux têm plenos privilégios sobre ele: qualquer um pode apagar tudo, a qualquer momento!


O Diretório /usr

Neste diretório é onde você pode encontrar coisa "extras", tipicamente coisas de usuário tais como jogos, utilitários de impressão, enfim, coisas que são programas, mas que não se aplicam a serem colocadas no diretório /bin.

usr vem de Unix System Resources. 

Este diretório pode ainda ser subdivido em /usr/bin, para programas; /usr/share, para coisas compartilhadas (shared) entre programas tais como icones, sons, etc;


Outros diretórios

Além dos diretórios principais que aprensentamos até agora existem outros que podem ser utilizados, mas que não são, digamos assim, um padrão em todas as distribuições Linux. São eles:


O Diretório /opt

Neste diretório é onde você coloca coisas opcionais (options). Quer experimentar a versão beta de algum programa? Este é o local para você instalar!

Normalmente, os programas instalados em /opt são instalados de forma "estanque", ou seja, tudo o que eles precisam para funcionar são colocados alí mesmo. Nada é colocado em /bin, /lib ou em qualquer outro diretório principal do sistema. Desta forma, tão logo se dê por satisfeito com a experiência, você pode apagar tudo, sem nenhuma preocupação em deixar "lixo" para trás!


O Diretório /media

Algumas distribuições como o openSUSE usam este diretório para montar dispositivos como discos usb (HDs externos), pen drivers, unidades de CD e DVD, etc.


---X---

Ainda existem muitos outros diretórios, tais como /boot, /lib, /lib64, /sbin. Mas eles são para finalidades tão específicas que vamos deixar para falar sobre eles quando estivermos discutindo algo pertinente.


Comentem, critiquem, fiquem à vontade!




.

segunda-feira, 28 de dezembro de 2009

Diretórios e arquivos 1: a pasta home

Uma das coisas mais complicadas para os novos usuários do Linux é saber onde as coisas são guardadas nele. A estrutura de diretórios do Linux pode ser bem estranha no início, principalmente para [ex] usuários de Windows.

Neste artigo pretendo esclarecer este aspecto elementar do Linux, mas que ainda causa "espanto".

OBS.: Para entender melhor este artigo, considere que os vocábulos Pasta e Diretório são a mesma coisa!


Um cenário que pode se tornar caótico


Para demonstrar as diferenças entre o Windows e o Linux, no que diz respeito à organização de diretórios e arquivos, vamos analisar uma situação hipotética, mas não muita rara de acontecer. Imagine um computador com a seguinte configuração de discos:

- 3 Discos Rígidos (HD) de 250 GBytes cada
- 1 Unidade CD-RW
- 1 Unidade DVD-RW


Sendo que os três discos rígidos são uma necessidade que o usuário tem de armazenar muita -- mas muita -- coisa. Digamos que ele seja um músico e que use o computador em seu trabalho! Então os três discos rígidos são reservados para as seguintes finalidades:

- HD1: Disco de BOOT, com uma partição de de 100GB para o sistema operacional windows+aplicativos; e outra partição de 150GB para arquivos temporários;
- HD2: Disco de trabalho com partição única de 250GB;
- HD3: Disco de "finalização", com uma partição de 125GB para organizar os trabalhos (as músicas) masterizados e prontos para a entrega; e outra partição de 125GB para BACKUP.

As unidades CD-RW e DVD-RW são destinadas à gravação das músicas, seja em formato CD-Audio ou em forma de dados, no DVD-RW.


O caos no Windows

Se você é ou era usuário do Windows, já deve estar verificando se as letras do alfabeto serão suficientes para nomear tantas unidades de disco!

No Windows, o cenário exposto implica em sete unidades de disco:

- HD1
C: Partição de Boot+Sistema Operacional+Aplicativos;
D: Partição para arquivos temporários;

- HD2
E: Disco de trabalho com partição única de 250GB

- HD3
F: Disco de "finalização", com uma partição de 125GB
G: Partição de 125GB para BACKUP

- CD-RW
Unidade H:

- DVD-RW
Unidade I:


No Windows, isto além de ser caótico é praticamente impositivo. Não há outra forma de organizar as coisas no Windows. Tua única liberdade seria usar letras diferentes para as unidades (com excessão da unidade C:).

E além de você ter que memorizar para que servem estas unidades todas, ainda teria que memorizar toda uma série de diretórios (ou pastas) dentro destas unidades!


A ordem no Linux

Diferentemente do Windows, no Linux você tem a liberdade de organizar as unidades de disco e pastas do jeito que você quiser. Mas há um certo padrão a se seguir, até mesmo para facilitar a vida.

Vamos ver como este mesmo cenário pode ser implementado no Linux. A estrutura de pastas mais provável é algo como:

- Pasta raiz ( / )

Ponto de montagem para o sistema operacional e os aplicativos. Para isto, normalmente são destinadas as pastas /boot, /root, /bin, /lib, /etc e /dev. E você não tem que se preocupar com isto: o Linux cuida disto na instalação.
(isto é o equivalente ao C: no Windows)

- Pasta /discos

Ponto de montagem para as demais partições de trabalho, distribuidas entre os discos rígidos citados. Desta forma, as partições dos diversos discos rígidos podem ser montadas em um só lugar, mais ou menos como:

/discos/temp -> Partição para arquivos temporários;
/discos/trabalho -> Disco de trabalho;
/discos/finalizacao -> Disco de "finalização";
/discos/backup -> Disco de backup

(isto é o equivalente aos D:, E:, F: e G: no Windows)

- Pasta /media

Ponto de montagem para as unidades de CD-RW e DVD-RW. Desta forma, as unidades de disco são referenciadas como:

/media/cdrom -> a unidade CD-RW
/media/dvd -> a unidade DVD-RW

(isto é o equivalente aos H: e o I: no Windows)


Entendendo a ordem no Linux

Olhando assim de imediato, parece uma doideira, mas não é. É apenas diferente do que você pode estar acostumado. E muitas vezes nos acostumamos a fazer coisas terríveis, sem nos darmos conta que são terríveis, simplesmente porque elas sempre foram assim!

Mas, vamos fazer alguns "exercícios de imaginação". Imagine que:

1) Preciso gravar em um CD de audio um trabalho já finalizado:
De /discos/finalizacao para /media/cdrom

2) Preciso abrir o diretório daquele trabalho que já conclui:
Vou em /discos/finalizacao

3) Preciso abrir um trabalho em andamento:
Vou em /discos/trabalho

4) Preciso gravar num DVD um trabalho finalizado, para entregar ao cliente:
De /discos/finalizacao para /media/dvd

5) Preciso mover um trabalho finalizado para o backup:
De /discos/finalizacao para /discos/backup


Toda as coisas similares ficam no mesmo lugar

Quer ver como isto é mais simples? Responda sem olhar o texto anterior:

Como, no Linux, você se refere ao CD-RW e ao DVD-RW?
E no Windows, quais são as letras de unidade do CD-RW e do DVD-RW?

Então, conseguiu responder de bate pronto?

É mais fácil lembrar de /media/cdrom e /media/dvd ou é mais fácil lembrar que H: e I: são as unidades de CD-RW e DVD-RW, respectivamente?

No Linux, mesmo que você "espete" dúzias de HD no computador, até mesmo se forem unidades externas (USB), eles poderão ser montados todos num só ponto: /discos!


Resumo da ópera

O Linux tem um mecanismo chamado "Ponto de montagem". Alguns pontos de montagem são padronizados e seus nomes muito conhecidos pelos usuários. Mas a grande vantagem nisto é que você pode montar coisas de origens diferentes todas num mesmo ponto.

É como no caso das unidades de CD e DVD. Nós os montamos em /media. Da mesma forma, todos os discos (temp, trabalho, finalizacao e backup) foram montados no mesmo ponto: /discos.

Então, é mais fácil lembrar que as unidades de CD e DVD estão em /media/cdrom e /media/dvd, respectivamente, ou é mais fácil lembrar que são as unidades H: e I:?

E é mais fácil organizar os discos de trabalho em /discos/temp, /discos/trabalho, /discos/finalizacao e /discos/backup ou é mais fácil ficar memorizando que D: é temp, E: é trabalho, F: é finalização e G: é backup?


A Estrutura Padrão de diretórios no Linux

Feita esta introdução, vamos a partir de agora conhecer onde as coisas ficam guardadas no Linux. Iremos conhecer os nomes de pasta padrão do Linux e aprender para que cada uma serve. Ao menos as mais relevantes.


Teu Computador

Um bom lugar para começar a desvendar a estrutura de pastas do Linux é a partir do ícone "Meu computador". Observe a figura abaixo, antes de prosseguirmos.


"Meu computador"


Em "Meu computador" você pode obter um monte de informações a respeito da tua máquina. Mas agora estamos interessados na seção "Pastas comuns". Vamos começar clicando em "Minha pasta Home".


A Pasta Home ou /home/user

Tudo o que diz respeito a "você", ou seja, ao teu usuário, fica confinado à tua pasta Home, a princípio.

No Linux, cada usuário tem uma Home, ou Casa (ou melhor: apartamento). Todas as configurações personalizadas, todas as opções que você define nos mais diversos aplicativos, enfim, praticamente tudo o que diz respeito à você fica gravado a partir desta pasta. Veja a figura abaixo, mostrando minha pasta home, que fica em /home/cawasame


Minha pasta home

Toda as homes de todos os usuários do Linux, com excessão do usuário root, ficam dentro da pasta padrão /home. Assim, se existirem os usuário Lucia, Maria e Pedro, existirão as pastas /home/Lucia, /home/Maria e /home/Pedro. É muito simples!

De mesma forma que num apartamento de verdade, você é o senhor absoluto de sua home: Você tem privilégios sobre toda ela. Dentro dela, você pode fazer uma re-engenharia e criar novas "dependências" (diretórios). Você também pode, se quiser, até mesmo demolir o apartamento todo por dentro!

Mas uma coisa que você não vai conseguir é demolir o prédio inteiro. Afinal, existem os "apartamentos" dos outros...


Proprietário, Permissões e Grupos

Proprietário

Olhando a figura acima você poderá ver uma coluna chamada "Proprietário ". Tudo no Linux tem um proprietário. Naturalmente, tudo dentro da tua pasta home tem você como proprietário. Ao menos deveria... Isto define quem é o dono de que e quem pode fazer o que!


Permissões


Outro conceito importante no Linux é o conceito de permissões. Ou seja, o que é permitido fazer sobre diretórios e arquivos e, mais importante, quem pode! Para entendermos isto melhor, olhe a figura abaixo.


Permissões sobre a minha pasta home

Destacamos o seguinte da figura acima:

- Permissões de acesso
Proprietário: Pode ver e modificar o conteúdo
Grupo: Pode ver o conteúdo
Outros: Pode ver o conteúdo

Voltando a analogia do que acontece em tua casa, você, naturalmente, tem acesso a todas as dependências dela. Mas é pouco provável que você fique à vontade com um visitante abrindo tua geladeira ou entrando na tua suite master, mesmo que ele seja do teu grupo de amigos!

E mais ainda: se é um visitante que não é do teu grupo de amigos, pode ser que você não queira nem que ele saia dos limites da sala. No máximo, ir até o banheiro social!

Grupos

Para organizar ainda mais as permissões, o Linux implementa o conceito de Grupos. Todo usuário pertence a um grupo. A não ser que se informe algo diferente, todos os usuários do Linux pertencem ao grupo users. Mais uma vez, a excessão é usuário root, que pertence ao exclusivo grupo com o mesmo nome: root.

Através dos grupos, você pode dar permissões a todo um grupo de usuários sobre determinada coisa.

Voltando a analogia da casa (ou apartamento), digamos que você queira que teus amigos possam ter as mesmas permissões que você sobre, digamos, a cozinha!

Você pode criar um grupo chamado meus_amigos e, nas configurações da pasta cozinha, informar que ela pertence a este grupo (veja a seção Propriedade na figura acima).

Assim, você pode configurar na seção "Permissões de acesso" que o grupo da cozinha (agora modificado de users para meus_amigos) pode "Ver e modificar o conteúdo". Isso faz com que, além de você, seus amigos possam entrar na cozinha, abrir a geladeira, pegar uma maçã para comer, etc :-)

Saindo da analogia e voltando ao Linux

Espero não ter confundido tua mente com esta analogia maluca da casa e da cozinha! Para me redimir, vou propor uma situação não muito difícil de acontecer:

Imagine que você compartilha teu computador com tua esposa e filhos. E você não quer que eles acessem tudo em tua pasta home. Lembre-se que como todo usuário do Linux pertence ao grupo users, no mínimo todos eles podem ver o conteúdo da tua pasta!

Mas tem coisas que você pode querer compartilhar. Digamos, a pasta padrão "Imagens". O que você faz? Quatro coisas:

1) Alterar as permissões de "Grupo" e "Outros" em todas as pastas dentro da tua home para "Negado", selecionando a opção "Aplicar as alterações em todas as subpastas e seus conteúdos";
Isto faz com que apenas você possa ter acesso a tudo dentro da tua home e todos os outros ficarão sem a possibilidade de sequer abrir as pastas.

2) Agora você pode criar um novo grupo especialmente para definir as regras sobre a pasta padrão "Imagens". Vamos chamá-lo de familia;

3) Você muda o grupo da pasta padrão "Imagens" de users para familia e nas permissões de "Grupo" você muda para "Pode ver e modificar o conteúdo" ou apenas para "Pode ver o conteúdo", selecionando também a opção "Aplicar as alterações em todas as subpastas e seus conteúdos";

4) Inclui teus filhos e tua esposa  no grupo familia.

Pronto. Agora apenas a pasta padrão "Imagens" pode ser aberta e/ou modificada por tua família!



No próximo artigo desta série irei falar sobre os demais diretórios do Linux

Comentem, critiquem, fiquem à vontade!




.