Como configurar permissões / propriedade de arquivos para FTP / Apache / PHP no CentOS

2

Eu tenho uma compreensão básica das permissões de arquivo chmod e CentOS. 777 significa 111111111 e rwx para cada raiz, grupo, usuário, etc. O que eu não consigo entender é configurar o Apache, FTP e PHP para que todos trabalhem juntos corretamente.

Eu tenho um servidor proFTPd e um servidor Apache. Como devo configurar as permissões no servidor proFTPd para que o servidor Apache possa ler e executar os arquivos PHP? Na minha configuração inicial, os arquivos enviados por FTP não podem ser lidos pelo Apache. Devo colocar o usuário de FTP e o servidor apache em um grupo?

Como funciona o sistema de permissões (FTP-Apache-PHP) em sistemas de hospedagem padrão?

    
por Jeff Schaller 19.08.2010 / 09:27

2 respostas

2

Em vez de tentar fazer o ftp funcionar com o apache, faça o contrário, o que é mais seguro.

Usando suPHP e suExec farão com que seu apache use o usuário para fazer o que for necessário e o ftp já use o próprio usuário.

Aqui está como compilar o apache com o suPHP no centOS: link

Se você tiver o repositório correto em sua lista, você pode tentar: yum install mod_suphp

Parece um simples tutorial com o qual duvido que você tenha problemas.

Qualquer dúvida, deixe-me saber e eu vou ajudá-lo com o que puder.

Para mais informações sobre o suPHP

Para mais informações sobre o suExec.

    
por 19.08.2010 / 09:43
2

O Apache é executado como um usuário específico (geralmente httpd), mas dependendo de como ele é configurado, o PHP pode ser executado como o mesmo ou um usuário diferente:

  • Se o PHP for executado como um módulo, ele será o mesmo usuário que o Apache.
  • Se o PHP for executado como um CGI (muito incomum), ele geralmente será executado como o mesmo usuário, a menos que o Apache esteja configurado para usar o suexec (nesse caso, o usuário estará na configuração).
  • Se o PHP for executado como FastCGI, ele será executado como qualquer usuário que tenha sido configurado para ser executado como.

Isso é ainda mais complicado pelo suPHP, que é semelhante à situação com o CGI, exceto que o script é executado com o próprio arquivo de script.

As restrições aqui são:

  1. Os dirs / files graváveis pelo servidor web uid (e o uid do PHP) devem ser muito limitados e onde eles são graváveis, considerações especiais devem ser feitas para evitar ataques de injeção de código.

  2. Normalmente, os usuários normais não podem gravar arquivos como um uid diferente - e presumivelmente os arquivos de código PHP precisam ser mantidos (isto é, graváveis pelos usuários.

Note que se um arquivo PHP é executável pelo servidor da Web, não tem nada a ver com o bit executável em um arquivo (mas tem muito a ver com o bit executável no diretório que o contém).

Should I put the FTP user and the apache server into a group?

Provavelmente não. Eu recomendaria tratar o servidor / PHP como "outro" - para que qualquer conteúdo (incluindo PHP) seja acessível pelo servidor web, as permissões devem ser:

  • usuário: leia, escreva
  • group: depende da sua política
  • outro lido

, ou seja, 0644 (como as permissões executáveis acima não são relevantes) e para diretórios:

  • usuário: leia, escreva, execute
  • group: depende da sua política
  • outro: leia, execute

i.e. 0755

    
por 19.08.2010 / 13:59