5 de setembro de 2015

Alterando permissões chmod de arquivos ou pastas

Por sidnei

permissions-reset-icon

Permissões de arquivos e pastas são uma consideração importante para o funcionamento de um site. As permissões possibilitam que o servidor escreva nos seus arquivos ou edite-os. Mas por motivos de segurança, alguns arquivos precisam ser protegidos contra escrita ou edição. Você pode alterar as permissões dos seus arquivos e pastas de várias formas:

Usando o Gerenciador de Arquivos

Uma forma bastante fácil de alterar as permissões é acessar o Gerenciador de Arquivos do cPanel. Para alterar as permissões de um arquivo ou pasta no cPanel, faça o seguinte:

  1. Clique no ícone do Gerenciador de Arquivos.
  2. Selecione o arquivo ou pasta cujas permissões você quer alterar
  3. Clique com o botão direito e escolha “Alterar Permissões/Change Permissions
  4. Escolha as permissões desejadas
  5. Clique no botão “Alterar Permissões/Change Permissions
Alterar permissões usando o FTP

Conecte ao FTP usando seu cliente favorite e clique com o botão direito sobre o arquivo ou pasta. Selecione “Escolher Permissões”, “Atributos” ou “Propriedades” (depende do programa).

Alterar permissões usando o SSH (shell) ou um script

Isso pode ser feito utilizando o comando chmod.


Mas afinal o que essas permissões e números querem dizer?

Permissões de arquivos determinam o que pode ser feito e quem pode fazê-lo.

Owner (Proprietário) Group (Grupo) World (Todos)
Read (Ler)
Write (Escrever)
Execute (Executar)

Nas colunas da tabela acima, temos 3 tipos de usuário. O primeiro tipo é o Proprietário; isto é, você, a pessoa que tem acesso ao cPanel ou à shell (SSH). O segundo é o Grupo; ou seja, outras pessoas no seu servidor. O terceiro é Todos; qualquer visitante público da web.

Cada linha representa uma ação que pode afetar esse arquivo ou pasta. “Ler” significa que o usuário tem permissão para visualizar o arquivo. “Escrever” significa que o usuário pode editar o arquivo. “Executar” significa que o usuário pode rodar o arquivo.

É muito importante que os tipos de usuário Grupo e Todos possam visualizar os arquivos do seu website. Existem alguns arquivos, porém, que você pode não querer que qualquer pessoa veja. Se você remover a permissão de leitura para Grupo e Todos, então o arquivo não aparecerá no navegador de ninguém: em vez do arquivo, os visitantes verão um erro “403 Forbidden”.

No Gerenciador de Arquivos, permissões são representadas sob a forma de um número. Só nos importam três dos dígitos desse número, então se você se deparar com 4 dígitos, ignore o primeiro. Ou seja, se você se deparar com o número 0755, considere esse número o mesmo que 755.

O primeiro dígito representa as permissões de Proprietário. O segundo dígito representa as permissões de Grupo. O terceiro dígito representa as permissões de Todos. Cada tipo de permissão é representado por um número:

  • Permissão de leitura é igual a 4.
  • Permissão de escrita é igual a 2.
  • Permissão de execução é igual a 1.
  • Nenhuma permissão é igual a 0.

Cada dígito desse número de 3 dígitos representa uma combinação diferente de cada tipo de permissão. Assim:

  • Escrita e Execução sem Leitura é igual a 3.
  • Leitura e Execução sem Escrita é igual a 5.
  • Leitura e Escrita sem Execução é igual a 6.
  • Leitura e Escrita e Execução é igual a 7.

Neste ponto, tudo o que você precisa saber é que seus arquivos precisam ter permissões 644 ou 755.

Para a maioria dos arquivos, não importa se você lhes dá permissão de execução ou não. Pastas, porém, precisam utilizar permissões 755 sempre.

Mais uma regra: quaisquer arquivos dentro da pasta cgi-bin precisam ter permissões 755.

Avançado

Uma preocupação comum dos usuários é poder utilizar permissões 777. A LX HOST não permite o uso de permissões 777 em arquivos que são processados “server-side” (isto é, do lado do servidor, como scripts PHP). As documentações de alguns scripts, porém, requerem que você utilize permissões 777.

Podemos lhe dizer, porém, que permissões 755 funcionarão tão bem quanto 777. Você não precisa utilizar permissões 777 em arquivos PHP ou pastas.

Por quê não posso utilizar permissões 777?

É perigoso dar aos tipos de usuário Grupo e Todos permissões de escrita. Isso permite que hackers editem os seus arquivos. Assim, os últimos dois dígitos do número que representa as permissões dos seus arquivos e pastas nunca devem ser 2, 3, 6 ou 7.

O problema é que, quando você instala um script PHP, o script precisa de permissões para editar certos arquivos. Tradicionalmente, o PHP é tratado como um usuário ‘nobody’ no servidor. Ou seja, é considerado o mesmo que um visitante externo e precisa obedecer às permissões dadas ao grupo Todos. A solução para esse conflito é tratar o PHP como usuário do grupo Proprietário. A LX HOST faz isso utilizando um ambiente especial para o PHP conhecido como suPHP (ou phpSuExec). Com o suPHP, todos os scripts ganham as mesmas permissões que o Proprietário, e do lado de fora os visitantes permanecem restritos às permissões do grupo Todos. Assim, 755 é o número perfeito: permite todas as ações das quais o PHP precisa, mas apenas leitura e visualização para hackers em potencial.

Outros formatos
Permissões podem ser representadas de várias formas. Já lhe mostramos a matriz bidimensional (isto é, a tabela permissão versus tipo de usuário) e os números com 3 ou 4 dígitos.

Se você estiver utilizando a shell (SSH) do Linux, porém, as permissões serão apresentadas deste jeito:

drwxr-xr-x

Você pode ignorar o primeiro caractere (d); ele representa o tipo de arquivo e não um tipo de permissão. Em seguida, temos 3 caracteres, que representam as permissões do Proprietário.

  • r = leitura
  • w = escrita
  • x = execução
  • – (hífen) = nenhuma das anteriores

Assim, o Proprietário normalmente tem 3 permissões, representadas por rwx. Os 3 caracteres seguintes representam as permissões dos usuários do tipo Grupo. E por fim, os últimos 3 caracteres representam as permissões dos usuários do tipo Todos.
Note que os tipos de usuário Grupo e Todos não têm permissão de escrita. Por isso, no lugar do “w” há um hífen, o que significa que a permissão de escrita não foi concedida: r-x.

Abaixo, uma tabela de comparação entre as diferentes formas de representar permissões.

Matriz bidimensional Representação numérica Representação Linux
755 ou 0755

(Recomendada para pastas e arquivos na pasta cgi-bin)

drwxr-xr-x
644 ou 0644

(Recomendada para arquivos)

drw-r–r–
700 ou 0700 drwx——
777 ou 0777

(Não recomendada!)

drwxrwxrwx