Permissões no linux, é o principal “recurso” dos sistemas baseados em Unix. Elas são usadas de diferentes formas, e com diferentes finalidades. Mas principalmente para segurança e organização de um sistema.
Através das permissões, você pode definir quem pode acessar, escrever e executar um arquivo. Tanto por grupo, quanto por usuário. Com as permissões, o linux impede que um programa mal intencionado, por exemplo, apague um arquivo que não deve, envie arquivos especiais para outra pessoa ou forneça acesso da rede para que outros usuários invadam o sistema.
Vamos entender melhor, e aprender como mudar e verificar as permissões de determinado diretório ou arquivo.
Como verificar permissão
Para verificar as permissões de um arquivo ou diretório, é comum se utilizar o comando ls com o parâmetro -l, com ele descobriremos as permissões e os proprietários dos arquivos e diretórios.
ls -l /home/vinicius/tmp/
Me retornará o resultado:
total 4 -rw-r--r-- 1 vinicius vinicius 0 Nov 22 12:59 index.html lrwxrwxrwx 1 vinicius vinicius 15 Nov 22 12:59 link -> /home/vinicius/ drwxr-xr-x 2 vinicius vinicius 4096 Nov 22 12:59 test -rwxrwxrwx 1 vinicius vinicius 0 Nov 22 13:00 test_777
Ok? Ta achando que isso é um monte de letra solta né? Vamos entender, o que cada parte disso significa.
Diretório, link, arquivo?
Para sabermos o que é cada item, basta observarmos a primeira letra.
- l => Significa que aquele item é um link;
- d => Aquele item é um diretório;
- – => Um arquivo;
- b => arquivo de bloco;
- c => arquivo especial de caractere;
- p => canal;
- s => socket;
rwx o que é isso?
Você notou que essas letras ficam se repetindo no decorrer da listagem do ls, cada um tem seu significado:
- r => read – indica a permissão de leitura;
- w => write – indica a permissão de escrita;
- x => Execution – indica a permissão de execução
- – => indica a ausência de permissão
Pronto agora já sabemos o significado de cada letra, já podemos interpretar o resultado do comando ls. Podemos dividir o resultado em 3 partes, vamos pegar a primeira linha como exemplo:
rw-|r–|r–
Cada grupo de 3 caracteres significa nesta ordem, a permissão para o dono, permissões para o grupo ao qual pertence o dono do arquivo e permissões para os outros usuários.
Lendo apenas os dados de permissão -rw-r–r–, podemos identificar que, é um arquivo, que o proprietário do arquivo tem permissão de leitura e escrita, e que os demais(grupo e outros) tem permissão apenas de leitura.
Bits da permissão
Cada letra tem seu bit correspondente, o que podemos identificar da seguinte forma:
Letras | Binário | Decimal | Significado |
— | 000 | 0 | Sem permissão |
–x | 001 | 1 | Permissão de execução |
-w- | 010 | 2 | Permissão de escrita |
-wx | 011 | 3 | Permissão de escrita e execução |
r– | 100 | 4 | Permissão de Leitura |
r-x | 101 | 5 | Permissão de leitura e execução |
rw- | 110 | 6 | Permissão de leitura e escrita |
rwx | 111 | 7 | Permissão total |
Mudando a permissão
Utilizando se da tabela acima podemos mudar a permissão de arquivos e diretórios com o chmod.
A sintaxe do comando chmod é:
chmod
Alguns exemplos:
Permissão total
chmod 777 test.txt
Permissão apenas de leitura
chmod 444 test.txt
Permissão de leitura e escrita para o dono e leitura para os outros
chmod 644 test.txt
O chmod alem de utilizar as permissões com números, também há possibilidade de utilizar a forma mais chata das letras. Onde precisamos entender que
- u => usuário
- g => grupo
- O => outros
- a => todos
- + => adicionar permissão
- – => remover permissão
- = => definir a permissão
Com isso podemos utilizar o chmod da seguinte forma:
Permissão de execução para o usuário
chmod u+x test.txt
Permissão de leitura para o grupo
chmod g+r test.txt
O perigo da permissão 777
Como eu disse anteriormente, a permissão 777 é a permissão total a algo, ou seja, todo mundo pode editar, apagar, escrever. Se imagine com um arquivo com permissão 777 onde todo mundo pode edita-lo, alguém com intenções maliciosas, pode editar seu arquivo, e executa-lo, podendo lhe roubar informações preciosas, executar algo em seu sistema operacional e apagar dados. Por isso é normal se utilizar permissão 755 para diretórios e 644 para arquivos não executáveis, como arquivos php em servidores de hospedagem.
Inclusive isso é algo que alguns servidores bloqueiam com o suphp, sempre que tiver recebendo erro 403, verifique primeiro a permissão de seus arquivos e pastas, pois em 90% dos casos o problema é esse.
Você pode entender mais sobre o assunto em:
http://www.guiafoca.org/cgs/guia/intermediario/ch-perm.html
Wikipedia CHMOD
Vinicius, parabéns!
Ficou ótimo.
Nota 10.
Obrigado Elim!
Muito bom, aprendi bastante.
Quando haverá mais tópicos?
Esse blog é muito bom!
Muito bom o seu blog, aborda assuntos muito interessantes e bem explicados de forma simples.
Só uma coisa que esta errado, mas logico que acontece por falta de atenção e etc.
Ali na tabela de Bits de Permissão vc colocou:
-wx 010 3
repetindo o 010 que é = 2
no caso o que seria 011 = 3
e também repetiu a permissão r-x 101 5
só isso, mas a explicação ta muito boa, curti sua pagina la no face
Obrigado!! Vou ajeitar!