Diretório chroot e chdir do PHP-FPM

10

Estou configurando o php-fpm com o chrooting ativado. Agora vejo que há duas opções e quero saber qual é a diferença exata.

A configuração tem:

chroot = /var/www/domains/domain.tld/
; Chdir to this directory at the start. This value must be an absolute path.
; Default Value: current directory or / when chroot
chdir = /docroot/

Por que existem dois locais diferentes aqui e qual caminho é permitido para o php acessar? O site php pode acessar /var/www/domains/domain.tld/ , ou pode apenas acessar arquivos dentro do diretório docroot .

===

Talvez haja algum conselho concreto para mim. Eu quero ter uma configuração como esta:

localização da webroot: /var/www/

domain.com/
 |---conf/
 |    |--nginx.conf
 |    |--php-fpm.conf
 |
 |---ssl/
 |---logs/
 |---session/
 |---domains/
       |---www/
       |---app/
       |---dev/

Agora aqui as configurações do php-fpm seriam:

chroot = /var/www/domain.com/
chdir  = /domains/www

Agora, a principal questão aqui é: o aplicativo localizado no subdomínio www poderá acessar os arquivos em dev ou app . Ou até mesmo os arquivos localizados na sessão, que é o caminho de salvamento da sessão, ou as outras pastas, como ssl e logs.

    
por Saif Bechan 28.12.2011 / 00:55

1 resposta

11
  • O Chroot define o diretório 'root' - você não pode navegar acima do diretório raiz.
  • O Chdir simplesmente altera o diretório inicial - ainda é possível navegar para outros diretórios (incluindo os acima disso).
    • Se você não especificar um caminho chroot, a raiz 'real' será aplicada - e você especificará um chdir absoluto.
    • Se você especificar um caminho chroot, especifique um caminho relativo ao caminho do chroot (que redefine o diretório raiz).

As configurações que você propôs parecem muito boas.

  • O caminho inicial seria o caminho chroot + o caminho chdir
  • O aplicativo poderá acessar todos os arquivos sob o caminho chroot (a menos que haja outras restrições, por exemplo, php_openbasedir, permissões etc.) em vigor.

Como uma nota lateral - seu aplicativo php também terá acesso ao seu nginx.conf e php-fpm.conf baseado na estrutura do documento que você mostrou - o que parece ser algo que você pode querer mudar (pelo menos fazendo o arquivos somente leitura para esse usuário).

    
por 28.12.2011 / 01:40