Alterando a permissão de pastas em Linux

De Wiki Locaweb
Ir para: navegação, pesquisa

O acesso via SSH (Configurando o Putty) permite efetuar várias tarefas nos servidores, como conectar-se à área de hospedagem, proteger diretórios, gerar e restaurar backups do MySQL e PostgreSQL.


Permissões possíveis

Abaixo segue a tabela com os códigos de permissão (formato octal):


|   | r | w | x |                      Descrição                      
| 0 | - | - | - | Nenhuma permissão de acesso.                        
| 1 | - | - | x | Permissão somente de execução (x).                  
| 2 | - | x | - | Permissão somente de gravação (w).                  
| 3 | - | x | x | Permissões de gravação e execução (wx).             
| 4 | x | - | - | Permissão somente de leitura (r).                   
| 5 | x | - | x | Permissões de leitura e execução (rx).              
| 6 | x | x | - | Permissões de leitura e gravação (rw).              
| 7 | x | x | x | Permissão total (leitura, gravação e execução, rwx).


Exemplos mais comuns

Usaremos o código de cores para facilitar a compreensão quanto ao owner, grupo e outros:

Permissão 644:
644 ou [rw-r--r--]: Owner com permissão de leitura e gravação, grupo com permissão somente de leitura, outros com permissão somente de leitura.
Permissão 755:
755 ou [rwxr-xr-x]: Owner com permissão total, grupo com permissão de leitura e execução, outros com permissão de leitura e execução.
Permissão 777:
777 ou [rwxrwxrwx]: Owner com permissão total, grupo com permissão total, outros com permissão total.

SFTP e FTP

Alterando a permissão em arquivos ou em diretórios

Acesse a sua área de hospedagem por algum programa de SFTP ou FTP que tenha suporte à alteração de permissão.

Na imagem abaixo usamos o WinSCP:

  • Clique com o botão direito do mouse em algum diretório ou arquivo e escolha Propriedades.
  • Observação importante: Ao alterar a permissão de um diretório, todos os arquivos e sub-diretórios contidos nele não terão a permissão herdada. Caso necessite, consulte abaixo Aplicando permissão recursiva.


Aplicando permissão recursiva

Permissao-Winscp-3.png

  • Para definir a permissão de modo recursivo marque essa opção destacada Set group, owner and permissions recursively.

SSH

Alterando a permissão de um arquivo ou de um diretório

Para alterar a permissão de um diretório ou arquivo digite o seguinte comando:

  chmod [permissão] [nome do diretório ou caminho do diretório]

Por exemplo:

  cd ~/public_html
  chmod 777 teste

ou

  chmod 777 ~/public_html/teste/

O exemplo acima aplica a permissão total ao diretório "teste" para o Dono (owner), o Grupo e Outros.

drwxrwxrwx 1 teste teste 4493 Aug 14 16:42 teste

  • Observação importante: Ao alterar a permissão de um diretório, todos os arquivos e sub-diretórios contidos nele não terão a permissão herdada. Caso necessite, consulte abaixo Aplicando permissão recursiva.

Aplicando permissão recursiva

Para aplicar permissão recursivamente (aplicar a permissão no diretório e todos os seus arquivos e sub-diretórios), use a opção -R:

  chmod -R 777 teste

Nota: Não recomendamos aplicar permissão total na raiz de seu site (~/public_html).


Como garantir que os arquivos criados ou enviados através de scripts sejam acessados por FTP também

Tópico válido somente para as hospedagens Linux antigas

Arquivos criados por scripts em PHP ou enviados através deles em diretórios com permissão 777 ou 0777 terão o owner "webserver" (herdarão a permissão do usuário webserver, o usuário do Apache), e você não conseguirá fazer o download dele por FTP, nem editá-lo e nem apagá-lo. Então você deverá aplicar a permissão 1777.


Por SSH

chmod 1777 teste

ou

chmod 1777 -R teste


Por SFTP ou FTP

No exemplo contido na imagem acima, marque a opção Sticky bit. Também possível dar permissão recursiva com o Sticky bit ativado.


Desta forma, os arquivos enviados estarão sob o owner webserver também, mas seu usuário de FTP terá permissão para manipulá-lo.

Importante: Nas hospedagens Linux mais recentes não existe mais esta situação.

Função chmod() do PHP

Se o diretório foi criado por script, seu owner será webserver (em hospedagens antigas somente). Nas hospedagens novas, o owner será o seu próprio usuário de FTP.

Para dar a permissão de escrita via chmod() do PHP em arquivos e diretórios, deve-se aplicar sempre a permissão 0777 ou 1777.

Documentação oficial da função chmod() do PHP


Veja também