Permissões em Linux
O
sistema operacional Unix (e também, Linux) difere dos ambientes computacionais
em que não é somente um sistema multitarefa mas também um sistema multiusuário.
Isto significa que enquanto
seu computador terá apenas um teclado e monitor, este pode continuar sendo
usado por outro usuário. Se o computador estiver conectado a uma rede,
ou Internet, usuários remotos podem fazer login utilizando telnet ou ssh (secure shell) e operar o sistema de arquivo da máquina.
Na
verdade, usuários remotos podem executar aplicações X e ter saídas gráficas exibidas em PCs remotos. O sistema Windows X suporta isto.
A
capacidade de multi usuário do Unix não é uma inovação recente, mas sim um
recurso que está profundamente enraizada na concepção do sistema operacional.
Se você se lembra do ambiente em que foi criado Unix, isso faz todo o sentido.
Anos atrás, antes dos computadores serem "pessoais", eles eram
enormes, caros e centralizados.
Um
típico sistema de computador da universidade consistia em um enorme computador
central (mainframe) localizado em um prédio no campus e terminais conectados a
este eram distribuídos por todo o campus. O computador central deveria suportar
diversos usuários ao mesmo tempo. De maneira a tornar isto prático, um método teve
que ser concebido para proteger os uns usuários de outros.
Afinal,
você não pode permitir que as ações de um usuário possam adulterar o computador,
nem você poderia permitir que um usuário possa interferir nos arquivos
pertencentes a outro usuário.
Este artigo abrangerá os seguintes comandos:
- chmod - modifica os direitos de acesso ao arquivo.
- su - torna-se temporariamente o super-usuário.
- chown - substitui o proprietário do arquivo.
- chgrp - substitui o grupo proprietário do arquivo.
Aviso:
Lembre-se que permissão de arquivo é um recurso de segurança. Sempre que permitir que alguém mais leia, escreva ou execute seus arquivos, está aumentando o risco do arquivo ser adulterado, alterado, ou deletado.
Como uma regra, você deve conceder a permissão de leitura e escrita somente para aqueles que realmente necessitam dela.
Como uma regra, você deve conceder a permissão de leitura e escrita somente para aqueles que realmente necessitam dela.
Esquema de Permissões de Arquivos
Linux
usa o mesmo esquema de permissões que o Unix. Cada arquivo ou diretório em seu
sistema é atribuído com os direitos de acesso pelo proprietário do arquivo, os
membros de um grupo de usuários relacionados, e todos os outros.
Direitos
podem ser atribuídos para ler, escrever e para executar o arquivo Rights (isto
é, executar o arquivo com um programa).
Para
ver as configurações de permissões para o arquivo, usar o comando ls:
[alex@linux alex]$ ls -l algum_arquivo
-rw-rw-r-- 1 alex alex 1097374 Sep 26 18:48 algum_arquivo
Podemos
determinar muitas informações sobre o arquivo examinando os resultados de saída
deste comando:
- O arquivo "algum_arquivo" pertence ao usuário "alex"
- Usuário "alex" tem direito ler e escrever este arquivo
- O arquivo é propriedade do grupo "alex"
- Membros do grupo "alex" pode também ler e escrever este arquivo
- Qualquer um pode ler este arquivo
Tentemos
outro exemplo. Olhemos o programa bash que
está localizado no diretório /bin:
[alex@linux alex]$ ls -l /bin/bash
-rwxr-xr-x 1 root root 316848 Feb 27 2000 /bin/bash
Aqui
nós vemos:
- O arquivo "/bin/bash" é propriedade do usuário "root"
- O superusuário tem direitos de ler, escrever e executar este arquivo
- O arquivo é propriedade do grupo "root"
- Membros do grupo "root" pode também ler e executar este arquivo
- Qualquer pessoa também pode ler e executar este arquivo
Na
figura abaixo, vemos como a primeira parte da lista é interpretada. Isto
consiste de um caractere indicando o tipo de arquivo ("-" para arquivos, "dir" para diretórios), seguido de três
conjunto de três caracteres ( read, write & execute ou
"-" sem permissão) que significam as permissões de ler,
escrever e execução para o proprietário, grupo e público.
Estes
três conjunto de caracteres são na sequência: o proprietário do arquivo, proprietário do
grupo, e outros usuários do sistema.
-rw-rw-r-- 1 usuario usuario
O primeiro dígito especifica o tipo de arquivo, que pode ser:
·
d —
um diretório
·
- (traço) — um arquivo
comum (ao invés de diretório ou link)
·
l —
uma conexão(link) simbólica a outro programa ou arquivo onde quer que seja
do sistema.
Há
outras possibilidades, que estão no escopo da Referência do Red Hat Enterprise
Linux System Administration Guide.
Além
do primeiro item, em cada um dos seguinte conjunto de caracteres, você pode ver
algo como:
·
r — o arquivo pode ser
lido
·
w — o arquivo pode ser
escrito
·
x — o arquivo
pode ser executado (se for um programa)
·
- (traço) — um
permissão específica não foi atribuída
Quando
você ver um traço no proprietário, no grupo, ou em outros usuários, significa
que a permissão específica não foi concedida. Olhe para a primeira coluna de
algo.txt e identifique suas permissões.
ls -1 algo.txt -rw-rw-r-- 1 user user 150 Mar 19 08:08 algo.txt
O
proprietário do arquivo (neste caso o próprio usuário) tem permissão para ler e
escrever o arquivo. No grupo, o usuário também tem permissão para ler e
escrever em algo.txt. Como o arquivo não é um programa, nem o proprietário nem
o grupo tem permissão para executar.
chmod
O
comando chmod é usado para alterar (change mode) as
permissões de um arquivo ou diretório. Para usar, especifique as configurações
de permissão desejada, e o arquivo ou arquivos ao qual deseja-se modificar. Há
duas maneiras de especificar as permissões.
Alterar Permissões Através de Símbolos ou Letras:
Se verificar o resultado com ls -l, pode-se ver que somente a outros usuários será negado o acesso ao diretório_qualquer.
Alterar Permissões Através de Símbolos ou Letras:
Pense nestas configurações como um tipo de atalho quando você deseja alterar as permissões com chmod, porque tudo que você realmente precisa fazer é se lembrar de alguns símbolos e letras com o comando chmod.
Eis uma lista do que estes atalhos representam:
Identificadores
u — o usuário a quem pertence o arquivo (isto é, o proprietário)
g — o grupo ao qual o usuário pertence
o — outros usuários (que não seja o proprietário ou o grupo do proprietário)
a — quaisquer outros ou todos (u, g, e o)
Permissions
r — acesso para leitura
w — acesso para escrita
x — acesso para execução
Actions
+ — adiciona a permissão
- — remove a permissão
= — faz disto a única permissão
Testando a habilidade em Permissões:
Deseja testar sua habilidade em manipular permissões? Remova todas as permissões do arquivo algum.txt — de todos os usuários.
[alex@linux alex]$ chmod a-rwx algum.txt
Agora, verifique se você pode ler o arquivo utilizando o comando cat algum.txt, que deverá retornar o seguinte:
[alex@linux alex]$ chmod a-rwx algum.txt
cat: algum.txt: Permission denied
[alex@linux alex]$
Removendo todas as permissões, incluindo suas próprias,o arquivo foi bloqueado com sucesso. Mas desde ele pertença a você, então sempre poderá alterar suas permissões de volta com os comandos:
[alex@linux alex]$ chmod u+rw algum.txt
Utilize o comando cat foo.txt para verificar que você, o proprietário de arquivo, pode ler o arquivo novamente.
Aqui estão alguns exemplos comuns de configurações que podem ser utilizado com chmod:
· g+w — adiciona acesso de escrita para o grupo
· o-rwx — retira todas as permissões de outros usuários
· u+x — permite ao proprietário a execução do arquivo
· a+rw — permite a todos a ler e escrever o arquivo
· ug+r — permite ao proprietário e ao grupo ler o arquivo
· g=rx — permite somente ao grupo ler e executar o arquivo (não escrever)
Em adicionando a opção -R , você pode alterar as permissões para as árvores de diretório inteira.
Devido ao fato de não de poder realmente "executar" um diretório como o faria a uma aplicação, quando adicionar (ou remover) a permissão de execução para um diretório, realmente está permitindo ( ou negando) acesso para pesquisa através deste diretório.
Verifique o algum diretório que você tenha criado, listando todos os arquivos em seu diretório home.
|
As permissões para o diretório serão:
|
Se não for permitido a outros ter acesso de execução sobre o diretório_qualquer, não importa quem tenha o acesso para ler ou escrever. Ninguém pode acessar o diretório_qualquer a menos que eles saibam exatamente o nome do arquivo.
Por exemplo, digite a linha abaixo para remover as permissões de todos os usuários:
|
Aqui está o que acontecerá quando tentar alterar o diretório usando o comando cd diretorio_qualquer/ após remover a permissão de todos: |
|
Agora, restorar a permissão do proprietário e do grupo:
|
Se verificar o resultado com ls -l, pode-se ver que somente a outros usuários será negado o acesso ao diretório_qualquer.
|
Alterar Permissões Através de Números:
Outra maneira de alterar permissões é pelo uso de representações numéricas.
Verificar a permissão original de um_arquivo_qualquer.txt:
|
Cada configuração de permissão pode ser representado por um valor numérico:
- r = 4
- w = 2
- x = 1
- - = 0
Quando este valores são somados uns ao outros, o total é usado para configurar uma permissão especifica. Por
exemplo, se desejar ajustar uma permissão de ler e escrever, deve-se ter um valor 6;
- 4 (leitura) + 2 (escrita) = 6
Para um_texto_qualquer.txt, é exibido o ajuste de permissão numérica:
- (rw-) (rw-) (r--)
|
O total para o usuário é seis (4+2+0), o total para o grupp é seis(4+2+0), e o total para outros usuários é quatro (4+0+0). A configuração da permissão é exibido como 664.
Se desejar alterar um_arquivo_qualquer.txt, assim como aqueles em seu grupo não tem acesso de gravação, mas ainda podem ler o arquivo, remova o acesso ao subtrair dois (2) a partir desse conjunto de números.
O valor numérico então se tornará em seis, quatro, quatro (644).
Para implementar esta configuração, digite:
|
Agora verificar as alterações listando o arquivo, e terá uma saída assim:
|
Agora, nem o grupo nem outros usuários públicos têm permissão de escrever em um_arquivo_qualquer.txt. Para retornar o direito de acesso de escrever do grupo, adicione o valor de w (2) ao segundo conjunto da permissão.
|
AVISO:
Configurar o acesso para 666 permite a qualquer um ler e escrever em um arquivo ou diretório.
Configurar o acesso para 777 permite a qualquer um ler, escrever e executar o arquivo.
Esta configuração pode permitir a ocorrência de adulteração de arquivos confidenciais ou sensíveis ao sistema, por este motivo, normalmente não é um bom procedimento utilizá-la.
|
|
Pode-se ainda, pensar em permissão como uma série de bits (que é o que o PC pensa sobre
eles). Eis como funciona:
rwx rwx rwx = 111 111 111
rw- rw- rw- = 110 110 110
rwx --- --- = 111 000 000
e assim por diante...
rwx = 111 in binary = 7
rw- = 110 in binary = 6
r-x = 101 in binary = 5
r-- = 100 in binary = 4
Agora,
se você representa cada um dos três conjuntos de permissões (proprietário,
grupo e público) como um simples dígito, você tem uma maneira muito conveniente
de expressar a configuração de permissão possível. Por exemplo, se desejamos
configurar algum_arquivo para ter permissão de ler e escrever pelo usuário, mas
desejamos manter o arquivo confidencial para os usuários públicos, devemos:
[alex@linux alex]$ chmod 600
algum_arquivo
Aqui
está um tabela de números que cobrem todas as configuração comuns. O que
iniciam com "7" são usados para programas (já que eles
permitem as execuções dos arquivos) e o restante para outros tipos de arquivos.
Valor
|
Significado
|
777
|
(rwxrwxrwx) Sem
restrição de permissão. Qualquer usuário pode fazer qualquer coisa com o
arquivo. Normalmente não é uma configuração desejável.
|
755
|
(rwxr-xr-x) O
proprietário pode ler, escrever e executar o arquivo. O demais usuários podem
ler e executar o arquivo. A configuração é comum para programas que são
utilizados por todos os usuários.
|
700
|
(rwx------) O
proprietário pode ler, escrever e executar o arquivo. Ninguém mais tem
quaisquer direitos. A configuração é útil para programas que somente o
proprietário pode utilizar e tem que manter-lo restrito a outros usuários.
|
666
|
(rw-rw-rw-) Todos
os usuários podem ler e escrever o arquivo.
|
644
|
(rw-r--r--) O
proprietário pode ler e, escrever o arquivo, enquanto outros podem somente
ler o arquivo. Uma configuração comum para arquivos de dados que todos podem
ler, mas somente o proprietário pode fazer alterações.
|
600
|
(rw-------) O
proprietário pode ler e, escrever o arquivo. Outros não têm quaisquer
diretos. Uma configuração comum para arquivos de dados que o proprietário
deseja manter restritos.
|
Permissões de Diretórios
O
comando chmod pode
também ser usado para controle de permissões de acesso para diretórios.
Geralmente, o esquema de permissões para diretórios funciona da mesma maneira
que ele funcionam para arquivos. Porém, a execução da permissão é usada
de maneira diferente. Este permite controle para acessar, relaciona os arquivos
e outras coisas. Aqui estão algumas configurações úteis para diretórios:
Valor
|
Significados
|
777
|
(rwxrwxrwx) Sem
restrições em permissões de acesso. Qualquer usuário pode listar arquivos,
criar novos arquivos no diretório e apagar arquivos no diretório. Geralmente
não é uma boa configuração.
|
755
|
(rwxr-xr-x) O
proprietário do diretório tem acesso total. Os demais usuários podem listar o
diretório, mas não podem criar arquivos nem apagá-los. Esta configuração é
comum para diretórios os quais se deseja compartilhar com outros usuários.
|
700
|
(rwx------) O
proprietário do diretório tem acesso total. Ninguém mais tem quaisquer
direitos. A configuração é útil para diretórios os quais somente o
proprietário pode utilizar e deve ser restrito a outros usuários.
|
Tornando-se Um Superusuário Por Alguns Instantes:
É
frequentemente útil se tornar o superusuário para executar tarefas importantes
para a administração do sistema, mas como você foi avisado (e não somente por
mim!), você deverá não estar logado como superusuário. Em muitas versões do
Linux, há um programa que pode dar um acesso temporário com privilégios de
superusuário. Este programa é chamado su (abreviação
para substitute user - usuário substituto) e
pode ser usado naquele caso quando você necessitar ser o superusuário em
algumas poucas tarefas. Para se tornar um superusuário, simplesmente digite o
comando su. Será
solicitado a você que digite a senha do superusuário:
[alex@linux alex]$ su
Password:
[root@linux alex]#
Depois
de executar o comando su, você terá uma nova sessão shell como superusuário. Para sair da sessão
como superusuário, digite exit e você retornará para sua sessão
anterior.
Em
algumas distribuições, mais notavelmente no Ubuntu, um método alternativo é
utilizado. Ao invés de usar su, estes sistemas empregam no
lugar o comando sudo. Com
sudo, são concedidos privilégios de superusuário para um ou mais usuários em
suas necessidades básicas. Para executar um comando como superusuário, o
comando desejado é simplesmente precedido com o comando sudo. Depois da execução do comando,
é solicitado a senha de usuário de usuário ao invés da senha de superusuário:
[alex@linux alex]$ sudo algum_comando
Password:
[alex@linux alex]$
Alterando O Propriedade Do Arquivo
Você
pode alterar o proprietário de um arquivo utilizando o comando chown. Aqui está um exemplo:
suponha que eu desejo alterar o proprietário de algum_arquivo de "eu"
para "voce". Eu poderia:
[alex@linux alex]$ su
Password:
[root@linux alex]# chown voce algum_arquivo
[root@linux alex]# exit
[alex@linux alex]$
Perceba
que para alterar o proprietário de um arquivo, você deve ser o superusuário.
Para fazer isto, nosso exemplo emprega do comando su, então ele executa o chown, e finalmente nós
digitamos exit para retornar a nossa sessão
anterior.
chown funciona
da mesma maneira nos diretórios assim como eles o fazem nos arquivos.
Alterando A Propriedade do Grupo
O
proprietário do grupo de um arquivo ou diretório pode ser alterados com chgrp. This command is used like this:
[alex@linux alex]$ chgrp novo_grupo algum_arquivo
No
exemplo acima, nós mudamos o proprietário do grupo de algum_arquivo de seu
grupo anterior para "novo_grupo". Você deve ser o proprietário do
arquivo ou diretório para executar um chgrp.
Nenhum comentário:
Postar um comentário