Я установил chroot-джейл для пользователя «bob». bob находится в / var / jails / bob
У Боба есть сайт, который находится в /var/jails/bob/bobssite.com/public_html
Кажется, что пока все работает, включая тот факт, что процесс запускается с uid bob (проверяется с помощью php "exec ('whoami')), то есть до тех пор, пока я не установлю chroot в конфигурационном файле php5-fpm для сайта bob ( /etc/php5/fpm/pool.d/bobssite.com.conf):
[bobssite.com]
; Per pool prefix
; It only applies on the following directives:
; - 'slowlog'
; - 'listen' (unixsocket)
; - 'chroot'
; - 'chdir'
; - 'php_values'
; - 'php_admin_values'
; When not set, the global prefix (or /usr) applies instead.
; Note: This directive can also be relative to the global prefix.
; Default Value: none
;prefix = /var/jails/bob/$pool/public_html/
user = bob
group = webjail
listen = /var/run/php5-fpm_bobssite.com.sock
listen.owner = www-data
listen.group = www-data
pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
; Chroot to this directory at the start. This value must be defined as an
; absolute path. When this value is not set, chroot is not used.
; Note: you can prefix with '$prefix' to chroot to the pool prefix or one
; of its subdirectories. If the pool prefix is not set, the global prefix
; will be used instead.
; Note: chrooting is a great security feature and should be used whenever
; possible. However, all PHP paths will be relative to the chroot
; (error_log, sessions.save_path, ...).
; Default Value: not set
chroot = /var/jails/bob/bobssite.com/public_html
chdir = /
Теперь, когда chroot закомментирован, все работает. Если я установил его как / var / jails / bob / notbobssite, php5-fpm не перезапускается / не работает, потому что это недопустимый путь. Если я установил для него значение, установленное в настоящее время, при посещении страницы я получаю сообщение «Файл не найден», и это в моем error.log
[Thu Oct 16 10:46:39 2014] [error] [client myip] FastCGI: server "/usr/lib/cgi-bin/php5-fcgi_bobssite.com" stderr: Primary script unknown
[Thu Oct 16 10:46:39 2014] [debug] mod_deflate.c(700): [client myip] Zlib: Compressed 16 to 24 : URL /php5-fcgi/user.php
Так что здесь происходит? Я предполагаю, что строка отладки содержит ответ, но я не могу его понять?
Вот мой файл конфигурации виртуального хоста Apache:
<VirtualHost *:80>
ServerAdmin webmaster@example.com
ServerName bobssite.com
ServerAlias www.bobssite.com
DocumentRoot /var/jails/bob/bobssite.com/public_html/
ErrorLog /var/jails/bob/bobssite.com/error.log
CustomLog /var/jails/bob/bobssite.com/access.log combined
<IfModule mod_fastcgi.c>
AddType application/x-httpd-fastphp5 .php
Action application/x-httpd-fastphp5 /php5-fcgi
Alias /php5-fcgi /usr/lib/cgi-bin/php5-fcgi_bobssite.com
FastCgiExternalServer /usr/lib/cgi-bin/php5-fcgi_bobssite.com -socket /var/run/php5-fpm_bobssite.com.sock -pass-header Authorization
</IfModule>
</VirtualHost>