[FreeBSD 9.1] Apache 2.4 + suEXEC + PHP 5.3

Простые/общие вопросы по UNIX системам. Спросите здесь, если вы новичок

Модераторы: vadim64, terminus

Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
dml
рядовой
Сообщения: 38
Зарегистрирован: 2013-08-03 23:19:57

[FreeBSD 9.1] Apache 2.4 + suEXEC + PHP 5.3

Непрочитанное сообщение dml » 2013-08-04 0:19:38

[FreeBSD 9.1] Apache 2.4 + suEXEC + PHP 5.3
Типо настроено, а работает не так как надо...

Код: Выделить всё

root@host: # uname -a
FreeBSD host 9.1-RELEASE FreeBSD 9.1-RELEASE #3: Sat Aug  3 00:38:54 EEST 2013     root@host:/usr/obj/usr/src/sys/HOST  amd64

Код: Выделить всё

root@host:/usr/local/etc/apache24 # cat /etc/make.conf
PERL_VERSION=5.14.4
#BATCH=YES
DEFAULT_MYSQL_VER=56
PORTSDIR?=      /usr/ports
.if ${.CURDIR} == ${PORTSDIR}/databases/mysql56-server
WITH_CHARSET=cp1251
WITH_XCHARSET=all
WITH_COLLATION=cp1251_bin
WITH_OPENSSL=yes
#WITH_LINUXTHREADS=yes
WITH_PROC_SCOPE_PTH=yes
BUILD_OPTIMIZED=yes
#BUILD_STATIC=yes
WITHOUT_INNODB=yes
#WITH_ARCHIVE=yes
#WITH_FEDERATED=yes
#WITH_NDB=yes
.endif

.if ${.CURDIR} == ${PORTSDIR}/databases/mysql56-client
WITH_CHARSET=cp1251
WITH_COLLATION=cp1251_bin
BUILD_OPTIMIZED=yes
.endif

#LOADER_TFTP_SUPPORT=YES
#.if ${.CURDIR} == ${PORTSDIR}/mail/exim
#WITH_MYSQL=             yes
#WITH_FILE_PATH?=        syslog
#WITH_CONTENT_SCAN=      yes
#WITH_DEFAULT_CHARSET?=  koi8-r
#WITHOUT_IPV6=           yes
#.endif

APACHE_VERSION=24
DEFAULT_APACHE_VERSION=24
APACHE_PORT=www/apache24

.if ${.CURDIR} == ${PORTSDIR}/www/apache24
WITH_SUEXEC=yes
SUEXEC_DOCROOT="/home"
SUEXEC_USERDIR="www"
.endif

Код: Выделить всё

# httpd -V
Server version: Apache/2.4.6 (FreeBSD)
Server built:   Aug  3 2013 15:53:36
Server's Module Magic Number: 20120211:23
Server loaded:  APR 1.4.8, APR-UTIL 1.5.2
Compiled using: APR 1.4.8, APR-UTIL 1.5.2
Architecture:   64-bit
Server MPM:     prefork
  threaded:     no
    forked:     yes (variable process count)
Server compiled with....
 -D APR_HAS_SENDFILE
 -D APR_HAS_MMAP
 -D APR_HAVE_IPV6 (IPv4-mapped addresses disabled)
 -D APR_USE_FLOCK_SERIALIZE
 -D APR_USE_PTHREAD_SERIALIZE
 -D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
 -D APR_HAS_OTHER_CHILD
 -D AP_HAVE_RELIABLE_PIPED_LOGS
 -D DYNAMIC_MODULE_LIMIT=256
 -D HTTPD_ROOT="/usr/local"
 -D SUEXEC_BIN="/usr/local/sbin/suexec"
 -D DEFAULT_PIDLOG="/var/run/httpd.pid"
 -D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
 -D DEFAULT_ERRORLOG="logs/error_log"
 -D AP_TYPES_CONFIG_FILE="etc/apache24/mime.types"
 -D SERVER_CONFIG_FILE="etc/apache24/httpd.conf"

Код: Выделить всё

 # php -v
PHP 5.3.27 with Suhosin-Patch (cli) (built: Aug  2 2013 19:44:51)
Copyright (c) 1997-2013 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2013 Zend Technologies

Код: Выделить всё

# suexec -V
 -D AP_DOC_ROOT="/home"
 -D AP_GID_MIN=1000
 -D AP_HTTPD_USER="www"
 -D AP_LOG_EXEC="/var/log/httpd-suexec.log"
 -D AP_SAFE_PATH="/usr/local/bin:/usr/bin:/bin"
 -D AP_UID_MIN=1000
 -D AP_USERDIR_SUFFIX="www"

Код: Выделить всё

#cat /usr/local/etc/rc.d/apache24/httpd.conf
ServerRoot "/usr/local"

Listen 80

LoadModule authn_file_module libexec/apache24/mod_authn_file.so
#LoadModule authn_dbm_module libexec/apache24/mod_authn_dbm.so
#LoadModule authn_anon_module libexec/apache24/mod_authn_anon.so
#LoadModule authn_dbd_module libexec/apache24/mod_authn_dbd.so
#LoadModule authn_socache_module libexec/apache24/mod_authn_socache.so
LoadModule authn_core_module libexec/apache24/mod_authn_core.so
LoadModule authz_host_module libexec/apache24/mod_authz_host.so
LoadModule authz_groupfile_module libexec/apache24/mod_authz_groupfile.so
LoadModule authz_user_module libexec/apache24/mod_authz_user.so
#LoadModule authz_dbm_module libexec/apache24/mod_authz_dbm.so
#LoadModule authz_owner_module libexec/apache24/mod_authz_owner.so
#LoadModule authz_dbd_module libexec/apache24/mod_authz_dbd.so
LoadModule authz_core_module libexec/apache24/mod_authz_core.so
LoadModule access_compat_module libexec/apache24/mod_access_compat.so
LoadModule auth_basic_module libexec/apache24/mod_auth_basic.so
#LoadModule auth_form_module libexec/apache24/mod_auth_form.so
#LoadModule auth_digest_module libexec/apache24/mod_auth_digest.so
#LoadModule allowmethods_module libexec/apache24/mod_allowmethods.so
#LoadModule file_cache_module libexec/apache24/mod_file_cache.so
#LoadModule cache_module libexec/apache24/mod_cache.so
#LoadModule cache_disk_module libexec/apache24/mod_cache_disk.so
#LoadModule cache_socache_module libexec/apache24/mod_cache_socache.so
#LoadModule socache_shmcb_module libexec/apache24/mod_socache_shmcb.so
#LoadModule socache_dbm_module libexec/apache24/mod_socache_dbm.so
#LoadModule socache_memcache_module libexec/apache24/mod_socache_memcache.so
#LoadModule macro_module libexec/apache24/mod_macro.so
#LoadModule dbd_module libexec/apache24/mod_dbd.so
#LoadModule dumpio_module libexec/apache24/mod_dumpio.so
#LoadModule buffer_module libexec/apache24/mod_buffer.so
#LoadModule ratelimit_module libexec/apache24/mod_ratelimit.so
LoadModule reqtimeout_module libexec/apache24/mod_reqtimeout.so
#LoadModule ext_filter_module libexec/apache24/mod_ext_filter.so
#LoadModule request_module libexec/apache24/mod_request.so
#LoadModule include_module libexec/apache24/mod_include.so
LoadModule filter_module libexec/apache24/mod_filter.so
#LoadModule substitute_module libexec/apache24/mod_substitute.so
#LoadModule sed_module libexec/apache24/mod_sed.so
#LoadModule deflate_module libexec/apache24/mod_deflate.so
LoadModule mime_module libexec/apache24/mod_mime.so
LoadModule log_config_module libexec/apache24/mod_log_config.so
#LoadModule log_debug_module libexec/apache24/mod_log_debug.so
#LoadModule logio_module libexec/apache24/mod_logio.so
LoadModule env_module libexec/apache24/mod_env.so
#LoadModule mime_magic_module libexec/apache24/mod_mime_magic.so
#LoadModule cern_meta_module libexec/apache24/mod_cern_meta.so
#LoadModule expires_module libexec/apache24/mod_expires.so
LoadModule headers_module libexec/apache24/mod_headers.so
#LoadModule unique_id_module libexec/apache24/mod_unique_id.so
LoadModule setenvif_module libexec/apache24/mod_setenvif.so
LoadModule version_module libexec/apache24/mod_version.so
#LoadModule remoteip_module libexec/apache24/mod_remoteip.so
#LoadModule proxy_module libexec/apache24/mod_proxy.so
#LoadModule proxy_connect_module libexec/apache24/mod_proxy_connect.so
#LoadModule proxy_ftp_module libexec/apache24/mod_proxy_ftp.so
#LoadModule proxy_http_module libexec/apache24/mod_proxy_http.so
#LoadModule proxy_fcgi_module libexec/apache24/mod_proxy_fcgi.so
#LoadModule proxy_scgi_module libexec/apache24/mod_proxy_scgi.so
#LoadModule proxy_wstunnel_module libexec/apache24/mod_proxy_wstunnel.so
#LoadModule proxy_ajp_module libexec/apache24/mod_proxy_ajp.so
#LoadModule proxy_balancer_module libexec/apache24/mod_proxy_balancer.so
#LoadModule proxy_express_module libexec/apache24/mod_proxy_express.so
LoadModule session_module libexec/apache24/mod_session.so
LoadModule session_cookie_module libexec/apache24/mod_session_cookie.so
LoadModule session_crypto_module libexec/apache24/mod_session_crypto.so
#LoadModule ssl_module libexec/apache24/mod_ssl.so
#LoadModule lbmethod_byrequests_module libexec/apache24/mod_lbmethod_byrequests.so
#LoadModule lbmethod_bytraffic_module libexec/apache24/mod_lbmethod_bytraffic.so
#LoadModule lbmethod_bybusyness_module libexec/apache24/mod_lbmethod_bybusyness.so
LoadModule unixd_module libexec/apache24/mod_unixd.so
#LoadModule dav_module libexec/apache24/mod_dav.so
LoadModule status_module libexec/apache24/mod_status.so
LoadModule autoindex_module libexec/apache24/mod_autoindex.so
#LoadModule asis_module libexec/apache24/mod_asis.so
#LoadModule info_module libexec/apache24/mod_info.so
LoadModule suexec_module libexec/apache24/mod_suexec.so
LoadModule cgi_module libexec/apache24/mod_cgi.so
#LoadModule cgid_module libexec/apache24/mod_cgid.so
#LoadModule dav_fs_module libexec/apache24/mod_dav_fs.so
#LoadModule vhost_alias_module libexec/apache24/mod_vhost_alias.so
#LoadModule negotiation_module libexec/apache24/mod_negotiation.so
LoadModule dir_module libexec/apache24/mod_dir.so
#LoadModule imagemap_module libexec/apache24/mod_imagemap.so
LoadModule actions_module libexec/apache24/mod_actions.so
#LoadModule speling_module libexec/apache24/mod_speling.so
#LoadModule userdir_module libexec/apache24/mod_userdir.so
LoadModule alias_module libexec/apache24/mod_alias.so
#LoadModule rewrite_module libexec/apache24/mod_rewrite.so

#LoadModule fcgid_module libexec/apache24/mod_fcgid.so

LoadModule php5_module        libexec/apache24/libphp5.so

<IfModule mod_fcgid.c>
    AddHandler fcgid-script .fcgi
    FCGIWrapper /usr/local/bin/php-cgi .php
</IfModule>

<IfModule unixd_module>

User www
Group www

</IfModule>

ServerAdmin admin@admin.net

<IfModule log_config_module>

    LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
    LogFormat "%h %l %u %t \"%r\" %>s %b" common

    <IfModule logio_module>
      # You need to enable mod_logio.c to use %I and %O
      LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio
    </IfModule>

    CustomLog "/var/log/httpd-access.log" common

</IfModule>

<IfModule mime_module>
    TypesConfig etc/apache24/mime.types

    AddType application/x-compress .Z
    AddType application/x-gzip .gz .tgz
    
#    AddType application/x-httpd-php .php
#    AddType application/x-httpd-php-source .phps
    


    #AddHandler cgi-script .cgi

    # For type maps (negotiated resources):
    #AddHandler type-map var


    #AddType text/html .shtml
    #AddOutputFilter INCLUDES .shtml
</IfModule>



<Directory />
    Options Indexes FollowSymLinks Includes
    AllowOverride All
    Order allow,deny
#    SetHandler fcgid-script
#    FCGIWrapper /usr/local/bin/php-cgi .php
#    Options ExecCGI
    Allow from all
#    AllowOverride none
#    Require all denied
    
</Directory>

DocumentRoot "/usr/local/www/apache24/data"
<Directory "/usr/local/www/apache24/data">

    Options Indexes FollowSymLinks


    AllowOverride None

    #
    # Controls who can get stuff from this server.
    #
#    Require all granted
##    Options Indexes FollowSymLinks Includes
##    AllowOverride None
##    Order deny,allow
##    SetHandler fcgid-script
##    FCGIWrapper /usr/local/bin/php-cgi .php
##    Options ExecCGI
##    Allow from all

</Directory>


<IfModule dir_module>
    DirectoryIndex index.php index.phps index.html index.htm
</IfModule>


<Files ".ht*">
    Require all denied
</Files>

ErrorLog "/var/log/httpd-error.log"
LogLevel warn


<IfModule alias_module>
     ScriptAlias /cgi-bin/ "/usr/local/www/apache24/cgi-bin/"
</IfModule>

<IfModule cgid_module>
    #
    # ScriptSock: On threaded servers, designate the path to the UNIX
    # socket used to communicate with the CGI daemon of mod_cgid.
    #
    #Scriptsock cgisock
</IfModule>

#
# "/usr/local/www/apache24/cgi-bin" should be changed to whatever your ScriptAliased
# CGI directory exists, if you have that configured.
#
<Directory "/usr/local/www/apache24/cgi-bin">
    AllowOverride None
    Options None
    Require all granted
</Directory>


# MaxRanges: Maximum number of Ranges in a request before
# returning the entire resource, or one of the special
# values 'default', 'none' or 'unlimited'.
# Default setting is to accept 200 Ranges.
#MaxRanges unlimited

# Configure mod_proxy_html to understand HTML4/XHTML1
<IfModule proxy_html_module>
Include etc/apache24/extra/proxy-html.conf
</IfModule>

<IfModule ssl_module>
SSLRandomSeed startup builtin
SSLRandomSeed connect builtin
</IfModule>

Include etc/apache24/Includes/*.conf

Include etc/apache24/vhosts/*.conf

Код: Выделить всё

#ls -la /usr/local/etc/apache24/vhosts/
total 12
drwxr-xr-x  2 root  wheel   512 Aug  3 22:20 .
drwxr-xr-x  7 root  wheel   512 Aug  3 22:30 ..
-rwxr-x---  1 root  wheel  1372 Aug  3 22:20 domain1.conf

Код: Выделить всё

root@host:/usr/local/etc/apache24/vhosts # cat domain1.conf
# VHOSTS FOR domain1 #
<VirtualHost *:80>
    UseCanonicalName Off
    SuexecUserGroup domain1 domain1
    php_admin_value open_basedir /home/domain1/domain1/www
    php_admin_value upload_tmp_dir "/home/domain1/domain1/tmp"
    php_admin_value session.save_path "/home/domain1/domain1/tmp"
    ServerAdmin admin@admin.net
    DocumentRoot /home/domain1/domain1/www
    ServerName domain1
    ServerAlias www.domain1
    DirectoryIndex index.php index.html index.htm

    AddHandler application/x-httpd-php .php
    ScriptAlias /php-bin/ /home/domain1/domain1/cgi-bin/
    Action application/x-httpd-php /php-bin/php.sh

    <Directory *>
        Options FollowSymLinks MultiViews
        AllowOverride All
        Order allow,deny
        Allow from all
    </Directory>
<Directory "/home/domain1/domain1/php-bin">
    Options None
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>

</VirtualHost>

Код: Выделить всё

root@host:/home/domain1/domain1/cgi-bin # ls -loa
total 12
drwxr-x---  2 domain1  domain1  -           512 Aug  3 16:27 .
drwxr-x---  6 domain1  domain1  -           512 Aug  3 17:18 ..
-rwxr-x---  1 root  domain1  schg,sunlnk  49 Aug  3 16:21 php.sh

Код: Выделить всё

root@host:/home/domain1/domain1/cgi-bin # cat php.sh
#!/bin/sh
exec nice -n 20 /usr/local/bin/php-cgi

Код: Выделить всё

#pw groupmod "domain1" -m "www"
#pw groupmod "domain2" -m "www"

#chmod -R 750 /home/domain1 
#chown-R domain1:domain1 /home/domain1

#chmod -R 750 /home/domain2
#chown-R domain2:domain2 /home/domain2
Вопросы:
1) При такой настройке пользователь domain1 может шарить по файлам domain2 и смотреть содержимое без проблем.
Вопрос: что я сделал не так? т.е. как запретить просматривать чужие папки?

2) Проблема загрузки файлов.
Если поставить на загружаемую директорию права 777 видно, что файл загружается с правами "www:domain1" и в tmp директорию навернаяка так же загружается.
Вопрос как решить данную проблему?

3)

Код: Выделить всё

root@host:/home/domain1/domain1/www # cat test.php
<pre>
<?php
    echo "WHOAMI: ".`whoami`;
    echo "<hr>";

    echo `ls -la /home/domain2/`;
    echo "<hr>";

    echo `cat /home/domain2/.cshrc`;
    echo "<hr>";

    echo `ls -la /home/`;
    echo "<hr>";

    echo `ls -la `;
    echo "<hr>";

?>
</pre>
Вывод команды в браузере (domain1):

Код: Выделить всё

WHOAMI: www
--------------------------------------------------------------------------------
total 44
drwxr-x---  3 domain2  domain2   512 Aug  3 12:25 .
drwxr-xr-x  5 root    wheel    512 Aug  2 21:21 ..
-rwxr-x---  1 domain2  domain2  1016 Aug  2 21:21 .cshrc
-rwxr-x---  1 domain2  domain2   254 Aug  2 21:21 .login
-rwxr-x---  1 domain2  domain2   165 Aug  2 21:21 .login_conf
-rwxr-x---  1 domain2  domain2   381 Aug  2 21:21 .mail_aliases
-rwxr-x---  1 domain2  domain2   338 Aug  2 21:21 .mailrc
-rwxr-x---  1 domain2  domain2   750 Aug  2 21:21 .profile
-rwxr-x---  1 domain2  domain2   283 Aug  2 21:21 .rhosts
-rwxr-x---  1 domain2  domain2   980 Aug  2 21:21 .shrc
drwxr-xr-x  5 root    domain2   512 Aug  3 12:24 domain2
--------------------------------------------------------------------------------
# $FreeBSD: release/9.1.0/share/skel/dot.cshrc 242850 2012-11-10 06:05:04Z eadler $
#
# .cshrc - csh resource script, read at beginning of execution by each shell
#
# see also csh(1), environ(7).
# more examples available at /usr/share/examples/csh/
#

alias h		history 25
alias j		jobs -l
alias la	ls -aF
alias lf	ls -FA
alias ll	ls -lAF

# A righteous umask
umask 22

set path = (/sbin /bin /usr/sbin /usr/bin /usr/games /usr/local/sbin /usr/local/bin $HOME/bin)

setenv	EDITOR	vi
setenv	PAGER	more
setenv	BLOCKSIZE	K

if ($?prompt) then
	# An interactive shell -- set some stuff up
	if ($uid == 0) then
		set user = root
	endif
	set prompt = "%n@%m:%/ %# "
	set promptchars = "%#"

	set filec
	set history = 1000
	set savehist = (1000 merge)
	set autolist = ambiguous
	# Use history to aid expansion
	set autoexpand
	set autorehash
	set mail = (/var/mail/$USER)
	if ( $?tcsh ) then
		bindkey "^W" backward-delete-word
		bindkey -k up history-search-backward
		bindkey -k down history-search-forward
	endif

endif
--------------------------------------------------------------------------------
total 48
drwxr-xr-x   5 root    wheel    512 Aug  2 21:21 .
drwxr-xr-x  13 root    wheel   1024 Aug  3 10:22 ..
drwxr-x---   3 domain2  domain2   512 Aug  3 12:25 domain2
drwxr-x---   4 domain1    domain1     512 Aug  3 00:11 domain1
--------------------------------------------------------------------------------
total 19972
drwxr-x---  30 domain1  domain1      1536 Aug  3 22:12 .
drwxr-x---   6 domain1  domain1       512 Aug  3 17:18 ..
-rwxr-x---   1 domain1  domain1       260 Aug  3 22:12 test.php

--------------------------------------------------------------------------------

Почему работает от www???


Зарание благодарен!
Спасибо!
Последний раз редактировалось f_andrey 2013-08-04 1:35:50, всего редактировалось 1 раз.
Причина: Автору. пожалуйста, выбирайте соответствующий раздел форума

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Nardamon
рядовой
Сообщения: 26
Зарегистрирован: 2012-11-28 22:02:10

Re: [FreeBSD 9.1] Apache 2.4 + suEXEC + PHP 5.3

Непрочитанное сообщение Nardamon » 2013-09-19 23:42:20

chmod -R 700 /home
И настроить suEXEC