Trabalhando com permissões

0
2216

Apesar de toda a evolução em relação aos antigos sistemas Unix, usados nas décadas de 70 e 80, o Linux mantém suas raízes multiusuário. Isso significa que o sistema pode ser usado por várias pessoas simultaneamente (imagine o caso de um servidor de rede), sem que uma atrapalhe o trabalho da outra, nem possa ver e alterar arquivos que não deveria.

Para isso, é usado um sistema de permissões simples, porém eficiente, que consiste num conjunto de três permissões de acesso (ler, gravar e executar) e três grupos (dono, grupo e outros), que combinadas permitem fazer muita coisa. Este sistema de permissões é bem similar ao usado do Windows 2000 e no Windows XP, a principal diferença é que no Windows você usa o sistema como administrador (equivalente ao root) por padrão e muitos programas não funcionam corretamente quando você tenta usar uma conta sem privilégios especiais. No Linux é o contrário, você usa o sistema com um login de usuário e os programas são projetados para funcionar desta forma. Apenas os utilitários de configuração e alguns programas para tarefas específicas precisam ser executados como root. Isso faz com que o sistema seja fundamentalmente mais seguro.

Um argumento comum é que não existem muitos vírus, worms e trojans para Linux porque o sistema é menos popular. Porém, nos servidores, o Linux já é mais usado que o Windows e mesmo assim os casos de problemas de segurança continuam sendo mais raros. Segundo a Netcraft, quase 70% dos sites da internet rodam sobre o Apache, a grande maioria deles sobre o Linux, enquanto apenas 20% rodam sobre o IIS da Microsoft. Mas, mesmo assim, é muito mais comum termos notícias de problemas de segurança no IIS do que no Apache:

http://news.netcraft.com/archives/2005/10/04/october_2005_web_server_survey.html

Voltando às permissões, clicando sobre as propriedades de qualquer arquivo no Konqueror você verá uma janela com três menus de seleção, que permitem ajustar individualmente as permissões para o dono do arquivo, para usuários que façam parte do mesmo grupo e para os outros, que inclui todo mundo que tenha acesso ao sistema.

Cada um dos campos aceita três possibilidades: “negado”, “pode ler” e “pode ler e escrever”. Por default, o dono é o único que pode ler e escrever, os demais (grupo e outros) podem apenas ler o arquivo, mas sem modificar.

No caso dos arquivos, existe uma quarta permissão que é o campo “É executável”. Esta é uma daquelas diferenças fundamentais entre o Linux e o Windows: o sistema não decide quais arquivos são programas pela extensão, mas sim pelas permissões. Isso aumenta bastante a segurança do sistema, mas por outro lado causa um pouco de dor de cabeça em algumas situações. Sempre que você baixar um instalador qualquer via web (o driver da nVidia, por exemplo), vai precisar primeiro marcar o “É executável” nas propriedades do arquivo antes de conseguir instalá-lo.

O “dono” do arquivo é por default o usuário que criou o arquivo. Apenas este usuário pode alterar as permissões de acesso ao arquivo e pasta. Em seguida vem a configuração do grupo, que permite que vários usuários tenham acesso a um arquivo ou pasta, sem ter que apelar para o campo “outros” que daria acesso a qualquer um.

Imagine que estamos configurando um servidor em uma empresa importante, e neste servidor temos uma pasta chamada “projeto_apolo” com vários arquivos confidenciais que deverá ser acessada apenas pelos programadores que estão trabalhando no projeto.

Desativaríamos de imediato o campo “todos”, mantendo marcados apenas os campos “usuário” e “grupo”. O próximo passo seria justamente criar um novo grupo de usuários (“apolo”, por exemplo) e incluir neste grupo todos os usuários que fazem parte do projeto. A partir daí, todos os programadores passariam a ter acesso à pasta, já que fazem parte do grupo.

Você pode criar novos grupos e adicionar usuários a eles através do “users-admin” ou do “kuser”, usando o que estiver disponível na distribuição. Basta chamá-los pelo terminal ou procurar pelo atalho no menu.

No Fedora, o users-admin se chama “system-config-users”, e, no Mandriva, “userdrake”. O Kuser é usado em um número menor de distribuições, mas é também bastante usado.

Para criar um novo grupo, clique em “Grupo > Adicionar grupo”. Na janela que será aberta, especifique o nome do grupo e os usuários que farão parte dele. Um mesmo usuário pode fazer parte de vários grupos simultaneamente. Muita gente cria um grupo diferente para cada pasta importante, de forma a poder definir individualmente quem terá acesso a ela.

Você notará que nesta tela aparecem vários usuários que não são mostrados na tela principal, como o “bin”, “daemon” e “mail”. Estes são usuários ocultos do sistema, contas sem privilégios e que não possuem senhas definidas (é simplesmente impossível fazer login com qualquer uma delas), que são usadas para isolar os programas, fazendo com que cada um tenha acesso apenas a seus próprios arquivos. Isso limita muito os danos que um programa ou servidor com bugs ou falhas de segurança pode causar quando alguma coisa dá errado.

De fato, a configuração default da maior parte das distribuições Linux atuais é dar acesso de leitura para a maioria das pastas (com exceção, naturalmente, dos arquivos de senha e outros arquivos críticos) para todos os usuários, mas ao mesmo tempo dar acesso de gravação apenas para o diretório home de cada um.

Ou seja, por default você, logado como usuário normal, poderá navegar por quase todos os diretórios do sistema, mas só poderá criar e alterar arquivos dentro da sua pasta de usuário. Nos outros lugares receberá sempre um aviso de acesso negado. Isso impede que os usuários possam fazer besteira no sistema, como por exemplo, tentar deletar a pasta de módulos do Kernel ;-).

Claro, como todas as regras, as permissões de acesso têm sua exceção: o root. Ele é o único que não possui restrições: pode alterar, executar ou deletar o que bem entender. Pode alterar o dono das pastas ou alterar as permissões de acesso. O root é o deus do sistema.

Você precisará usar o root sempre que for alterar as permissões de acesso a uma pasta do sistema ou criada por outro usuário, mas não use-o regularmente, a menos que esteja apenas brincando com o sistema e possa reinstalá-lo a qualquer momento, pois além de poder destruir facilmente arquivos do sistema, usar o root abre as portas para várias brechas de segurança ao usar programas de IRC, abrir anexos em e-mails ou mesmo navegar na web.

A maioria dos problemas de segurança a que os usuários do Windows estão submetidos decorre justamente do fato de utilizarem contas com privilégios equivalentes ao do root no Linux. Se você pode fazer o que quiser no sistema, os programas executados por você (incluindo trojans, scripts incluídos de páginas web executados pelo navegador, etc.) também poderão não ter restrições.

Se você se pergunta como alguns vírus do Windows, como o Ninda e o Sircan podem se espalhar tão rapidamente, saiba que o problema é justamente este: a combinação de um sistema com um fraco controle de segurança, combinado com o uso de contas administrativas por usuários sem noções de segurança.

Voltando ao tema da criação de usuários, se você não gostou dos utilitários gráficos, pode adicionar novos usuários também usando os comandos “adduser” e “passwd” (como root). Por exemplo:

adduser manuel

(cria o usuário manuel, já definindo a senha)

passwd manuel

(altera a senha posteriormente)

Para remover um usuário anteriormente criado, utilize o comando “userdel”, como em “userdel manuel”. Por questões de segurança o comando remove apenas o login, preservando o diretório home do usuário. Caso você tenha certeza que não vá mais precisar de nada, deve deletar o diretório manualmente depois.

Você também pode bloquear temporariamente um usuário, um amigo que vem jogar Warcraft 3 com você apenas nos fins de semana, por exemplo, e não precisa ficar com o login ativo no resto do tempo. Neste caso, use o comando “passwd -l usuário” para bloquear o login e “passwd -u usuário” para desbloqueá-lo.

Para alterar as permissões de acesso de arquivos e pastas via linha de comando, você deve usar o comando chmod. A sintaxe dele parece um pouco complicada à primeira vista, mas nada que um pouco de prática não possa resolver:

chmod 744 arquivo

Temos aqui o comando chmod propriamente dito, o arquivo ou pasta que terá suas permissões de acesso alteradas e um número de três dígitos que indica as novas permissões para o arquivo. Note que o “744” é só um exemplo.

Os três números indicam respectivamente:

7: Permissões para o dono do arquivo.
4: Permissões para o grupo.
4: Permissões para os demais usuários.

Você deve lembrar que temos três permissões: leitura, gravação e execução. Como é possível representar estes três atributos através de um único número?

Bem, os programadores costumam ser muito bons em matemática e, como em outros casos, usaram um pequeno truque para resolver este problema. Cada permissão é representada por um número:

4: Ler.
2: Alterar o conteúdo, criar novos arquivos (no caso de uma pasta).
1: Execução (no caso dos arquivos) ou listar os arquivos (no caso das pastas).

Você simplesmente soma estes números para ter o número referente ao conjunto de permissões que deseja:

0: Sem permissão alguma. Se for uma pasta, o usuário sequer pode ver o conteúdo.
1: Permissão apenas para executar (não é possível ler o arquivo ou alterá-lo, apenas executar um programa). No caso de uma pasta, 1 permite que se liste os arquivos dentro dela, mas sem ler ou alterar os arquivos.
4: Apenas leitura.
5 (4+1): Ler e executar (no caso de um arquivo) ou ver os arquivos e abri-los, no caso de uma pasta.
6 (4+2): Leitura + gravação.
7 (4+2+1): Controle total: leitura + gravação + permissão para executar.

Uma observação importante é que ao configurar as permissões de acesso de uma pasta, você sempre deve usar 5 (4+1) ou 7 (4+2+1), pois, sem permissão para listar o conteúdo da pasta, você não consegue ver os arquivos dentro dela.

Engenhoso, não é? Se você quer dar controle total do arquivo ou pasta para o dono e para o grupo, mas permissão de apenas leitura para os demais usuários, usaria o número 774; se você quisesse que todos os usuários tivessem permissão de leitura e gravação, mas sem poder executar nada, usaria o número 666; se quisesse dar controle total para todo mundo, usaria 777 e assim por diante. Como disse, parece um pouco complicado, mas depois de usar o comando algumas vezes você não vai esquecer mais.

Para alterar o dono e o grupo do arquivo, você deve usar o comando chown. O uso dele é simples, basta indicar qual é o novo dono e em seguida indicar o arquivo ou pasta que mudará de dono, como em:

chown manuel projeto_apollo/

Se você quiser que a alteração se aplique a todos os arquivos e subpastas do diretório, use a opção -R (de recursivo) como em:

chown -R manuel projeto_apolo/

Se você quiser alterar também o nome do grupo, acrescente o nome do novo grupo após o nome do dono, separando ambos por um ponto:

chown -R manuel.apolo projeto_apolo/

Agora a pasta “projeto_apolo” passa a ser propriedade do usuário manuel e do grupo apolo. Fizemos a mesma coisa que no exemplo anterior, mas agora usando o comando de modo texto. Você escolhe qual forma prefere.

Receba nossas atualizações
Fique por dentro de todas as notícias e novidades do mundo da tecnologia!

Deixe uma resposta