Formação - Projeto UCA - Um Computador por Aluno.
Formação - Projeto UCA - Um Computador por Aluno.
Cursista: Solange Mendes
Ross
Atividade 03: Trabalhando
com Permissões
Escola Estadual Antônio
Nascimento Filho
Acessado em 11/outubro/2012
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:
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.
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)
(cria o usuário manuel, já definindo a senha)
# passwd manuel
(altera a senha posteriormente)
(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.
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).
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.
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.





.jpg)
.jpg)
Nenhum comentário:
Postar um comentário