Permissões no Linux: O que é, importância e quais usar?

Tem uma aplicação Web, um website, enfim alguma coisa rodando em uma conta de hospedagem e está tendo um erro de permissão?

Conforme veremos, as permissões no Linux são essenciais para que as coisas funcionem corretamente, mas acima de tudo, protegidas sob as configurações corretas.

No post de hoje, vamos desvendar o que é o conceito de permissionamento, qual a sua importância para que tudo funcione como se espera e, finalmente, como definir as permissões mais adequadas, zelando pela segurança da conta de hospedagem.

O que são as permissões do Linux?

As permissões do Linux constituem um mecanismo e um conceito presente em sistemas operacionais Unix-like (que se comportam / funcionam de modo semelhante ao Unix) – que é o caso das distribuições Linux – que controla quem tem autoridade para ler, modificar ou executar arquivos e diretórios.

Calma! Vamos explicar melhor.

Por padrão, há três tipos de ações geralmente são possíveis em um sistema operacional: leitura, gravação e execução.

Porém, permitir que qualquer pessoa – no caso, um usuário – realize qualquer uma dessas três ações, torna o sistema passível de alterações indesejadas, acidentais e, sobretudo, inseguras.

Aí que entra o sistema de permissionamento, o qual determina o que cada usuário pode fazer.

Para ficar ainda mais fácil, vamos a uma analogia que visa ilustrar algumas das possibilidades mais comuns.

Pense na sua casa. Nela, você é soberano e, portanto, tem o poder de decidir sobre tudo o que nela acontece:

  • Autoriza (concede permissão) ou não o acesso à casa. As pessoas (usuários) que você permite entrar, conseguem enxergar o que há dentro do cômodo de entrada da casa (permissão de leitura do diretório);

  • Entre os visitantes (usuários) que têm permissão para entrar, alguns você não permite ir além do cômodo de entrada. Ou seja, estes não têm permissão para ver os demais cômodos (não têm permissão de leitura das outras pastas / diretórios);

  • Você também pode escolher o “grau de liberdade” que dá aos visitantes:

    • Alguns você permite tocar nos objetos e até mudá-los de posição (permissão de gravação, que altera o conteúdo e salva a alteração);

    • No caso de outros visitantes, a liberdade é ainda maior e você permite usar o fogão, o micro-ondas e outros eletrodomésticos (permissão de execução);

    • Uma outra possibilidade, é você não permitir o acesso (não dar permissão de leitura e gravação) ao quarto (diretório quarto), mas você pegar um ventilador nele contido para o visitante utilizar (concede permissão de execução);

  • Frequentemente, você não permite que estranhos – que podem ser uma ameaça – vejam e, portanto, saibam nada do que há dentro da sua casa. Não dá nem mesmo permissão de leitura a nenhum conteúdo (arquivos e pastas).

Ou seja, assim como é na sua casa, onde você determina o que é permitido ou não, de acordo com o grau de confiança e relacionamento com cada visitante, em sistemas Linux você também estipula o que cada usuário pode ou não fazer nos diretórios (cômodos) e arquivos (móveis e objetos) sob seu controle, usando para isso o sistema de permissionamento.

Como funcionam as permissões Linux?

Entender o funcionamento desse sistema é mais fácil quando você visualiza as propriedades de arquivos e diretórios no Linux.

Se você tem acesso SSH à sua conta de hospedagem ou ainda usa uma distro Linux no seu PC / notebook, em uma janela de terminal execute o comando “ls -lah”.

Esse comando indica ao sistema:

  • ls – é o comando principal usado para listar o conteúdo de uma pasta. Os atributos do comando, são “lah”, onde:

    • l (Long) – exibe a listagem no formato longo, mostrando permissões, proprietário, grupo, tamanho e data de modificação;

    • a (All) – estipula a exibição de todos os arquivos, incluindo os ocultos que começam com um ponto (.), como .bashrc ou .env;

    • h (Human-readable) – converte o tamanho dos arquivos (geralmente exibido em bytes) para formatos de fácil leitura, como KB, MB ou GB.

Como resultado do comando, você verá algo parecido com a imagem abaixo

Permissões no terminal

Da esquerda para a direita, temos:

  • Permissões (ex: drwxr-x---), onde:

    • Primeiro caractere – especifica o tipo do conteúdo

      • d = diretório;

      • - = arquivo comum;

      • l = link simbólico;

    • Próximos 9 caracteres – indicam as permissões propriamente ditas, as quais estão divididas em blocos de 3 caracteres (usuário, grupo, outros):

      • r (Read) = leitura;

      • w (Write) = escrita;

      • x (eXecute) = execução;

  • Número de links:

    • Quantas referências (hard links) apontam para aquele arquivo/diretório;

    • Em diretórios, indica quantos subdiretórios existem (incluindo . e .. – ponto e dois pontos);

  • Dono ou proprietário (owner) – mostra quem é o dono do arquivo/diretório;

  • Grupo (group) – indica o grupo ao qual o arquivo pertence. Permissões podem ser aplicadas ao grupo;

  • Tamanho:

    • Para arquivos – tamanho em bytes;

    • Para diretórios – tamanho da estrutura de metadados;

  • Data e hora de modificação – indica quando o arquivo ou diretório foi alterado pela última vez;

  • Nome do arquivo/diretório – é o identificador visível no sistema de arquivos. Se for um link simbólico, será exibido algo como “lib -> /usr/lib”

Considere a última linha (arquivo de nome “texto”) para exemplo prático.

-rw-r--r-- 1 hostmidia hostmidia 3,7K jun 4 11:47 texto

A permissão no caso indica que:

  • Primeiro caractere (traço / hífen (-)) – indica que se trata de um arquivo;

  • Primeiro grupo de três caracteres (rw-) - o usuário “hostmidia” tem permissão para leitura e gravação (ver e alterar e salvar a alteração feita, mas também remover / apagar o arquivo), mas não tem para executar;

  • Segundo grupo de três caracteres (r--) - o grupo de usuários “hostmidia” tem permissão de leitura, mas não tem para gravar ou executar o arquivo;

  • Terceiro grupo de três caracteres (r--) - os outros usuários que não sejam “hostmidia” ou que não pertençam ao grupo “hostmidia”, só têm permissão de leitura.

Na imagem a seguir, outro exemplo de como "enxergar e interpretar" uma permissão.

Permissões de diretório

Observações importantes:

  1. A permissão de leitura (r) no caso de um diretório / pasta, implica poder “enxergar” o conteúdo dele. No caso de um arquivo, ler o seu conteúdo;

  2. A permissão de gravação (w) em uma pasta permite criar, renomear ou deletar qualquer arquivo dentro dela, independentemente das permissões do arquivo em si;

  3. A permissão de execução, autoriza executar um arquivo, ainda que a pasta na qual ele esteja contido, não tenha permissão de leitura e gravação.

Tabela de definição de permissão

Na tabela a seguir, é possível compreender como se obtém o permissionamento para arquivos ou diretórios com base em usuário, grupo e mundo (outros usuários).

Dono / Proprietário

Grupo

Mundo (outros usuários)

Leitura

Gravação

Execução

Leitura

Gravação

Execução

Leitura

Gravação

Execução

4

2

1

4

2

1

4

2

1

R

W

-

R

-

-

-

-

X

6

4

1

Ou seja, o decimal correspondente ao arquivo com a permissão -rw-r----x, é 641.

Usando a mesma tabela, uma pasta com permissão drwxr-xr-x, tem como decimal 755.

Como alterar as permissões no Linux?

Há diferentes alternativas para realizar a alteração das permissões de pastas e arquivos:

  • Gerenciador de arquivos – quando o hosting oferece o recurso, a alteração via gerenciador de arquivos pode ser o método mais simples e menos sujeito a erros, pois é visual e intuitivo. Basta selecionar o diretório ou arquivo e ao clicar com o botão direito, selecionar a opção “alterar permissões”. A desvantagem é não permitir o modo recursivo, ou seja, que realiza a alteração nos subdiretórios;

Permissionamento no gerenciador de arquivos

  • FTP – outra maneira fácil, é via algum cliente de FTP. O modo de alteração é semelhante ao feito no gerenciador. A depender do cliente usado, o recurso de mudança do permissionamento é diferente. Também não é o mais adequado quando se quer alterações recursivas;

  • SSH ou terminal – pode ser um pouco mais “desafiador” para quem não está familiarizado com linhas de comando do Linux. No entanto, é o método mais eficiente e poderoso, pois permite mudar rapidamente o permissionamento de todo conteúdo de subdiretórios (recursivamente).

O comando para efetuar a mudança via terminal ou SSH, é CHMOD.

Qual o permissionamento correto?

Essa é uma questão muito importante e conforme já mencionamos, é fundamental tanto para o correto funcionamento e segurança do seu site ou das aplicações que estejam na sua conta.

Na maioria dos casos, o indicado é:

  • Permissão 755 para diretórios – a permissão 755 é suficiente para sites baseados em WordPress e desenvolvidos em linguagens como PHP ou Python;

  • Permissão 644 para arquivos – a permissão 644 é a indicada para os arquivos do site / aplicação.

O comando correspondente, é:

  • Pasta ou diretório – “chmod 755 ./caminho/do/diretorio” (sem aspas);

  • Arquivo – “chmod 644 nome-do-arquivo” (sem aspas).

Mas cuidado! Se não estiver seguro do que está sendo feito, é altamente recomendável contatar o suporte técnico do seu hosting! Acima de tudo, NUNCA atribua permissão 777 para pastas ou arquivos!

Isso porque atribuir permissão 777 é o equivalente a deixar a porta da sua casa escancarada com uma placa: “Entrem e mexam em tudo”. Qualquer script malicioso ou invasor que infecte um site vizinho no mesmo servidor, poderá apagar, roubar ou adulterar os dados da sua conta

Dica prática

O problema de usar “chmod -R” (modo recursivo) diretamente, é que ele aplica exatamente as mesmas permissões para arquivos e pastas. Porém, pastas precisam da permissão de execução (+x) para serem acessadas, enquanto arquivos geralmente não.

Aí que entra o “poder” das linhas de comando Linux!

Alteração de todas as pastas e sub-pastas:

find ./public_html -type d -exec chmod 755 {} +

Alteração de todos os arquivos na pasta e nas sub-pastas:

find ./public_html f -exec chmod 644 {} +

Conclusão

Configurar as permissões no Linux pode parecer um desafio técnico no início, mas é o pilar que garante a estabilidade e a segurança do seu site. Evite o atalho perigoso da permissão 777 e adote o padrão 755 para pastas e 644 para arquivos. Se surgir qualquer dúvida durante o processo, não hesite: conte com o suporte da HostMídia para proteger a sua conta de hospedagem!

 
 

 

 

Comentários ({{totalComentarios}})