Apache2, virtualhost, userdir, suexec - jak to skonfigurować?
: 20 sierpnia 2010, 10:26
Witam.
Czy jest możliwość skonfigurowania serwera apache 2.2 w taki sposób aby tylko jeden wirtualny host serwował katalogi użytkowników (mod_userdir) i uruchamiał skrypty na uprawnieniach tychże właśnie użytkowników (suexec)? W dokumentacji apache nie znalazłem informacji, żeby nie było takiej możliwości (nie znalazłem też, że się da) dlatego postanowiłem założyć temat. Oto mój obecny konfig (częściowo bazujący na domyślnym pliku konfiguracyjnym - trochę okrojony):
"Niestety tak nie działa". Suexec działa, ponieważ skrypty dla vhost1 uruchamiane są z uprawnieniami vhost1. mod_userdir też działa, ponieważ vhost2 serwuje katalogi użytkowników, niestety robi to już na uprawnieniach serwera zamiast właściwego usera. W logu suexec nie pojawiają się żadne informacje, wygląda na to iż mod_userdir w ogóle nie próbuje używać suexec. Kilka dodatkowych informacji:
Czy jest możliwość skonfigurowania serwera apache 2.2 w taki sposób aby tylko jeden wirtualny host serwował katalogi użytkowników (mod_userdir) i uruchamiał skrypty na uprawnieniach tychże właśnie użytkowników (suexec)? W dokumentacji apache nie znalazłem informacji, żeby nie było takiej możliwości (nie znalazłem też, że się da) dlatego postanowiłem założyć temat. Oto mój obecny konfig (częściowo bazujący na domyślnym pliku konfiguracyjnym - trochę okrojony):
Kod: Zaznacz cały
$ cat httpd.conf
ServerRoot "/usr/local/apache2"
Listen 80
User www-data
Group www-data
ServerAdmin ktos@example.com
<Directory />
Options FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
</Directory>
<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>
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio
</IfModule>
CustomLog "logs/access_log" common
</IfModule>
<Directory "/usr/local/apache2/cgi-bin">
AllowOverride None
Options None
Order allow,deny
Allow from all
</Directory>
DefaultType text/plain
LoadModule fastcgi_module modules/mod_fastcgi.so
NameVirtualHost *:80
<VirtualHost *:80>
ServerAdmin default@test.com
ServerName default.test.com
ServerAlias www.default.test.com
DocumentRoot "/usr/local/apache2/vhostdocs/default"
ErrorLog "logs/default.test.com-error_log"
CustomLog "logs/default.test.com-access_log" common
<Directory "/usr/local/apache2/vhostdocs/default">
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
<VirtualHost *:80>
ServerAdmin vhost1@test.com
ServerName vhost1.test.com
ServerAlias www.vhost1.test.com
DocumentRoot "/usr/local/apache2/vhostdocs/vhost1"
ErrorLog "logs/vhost1.test.com-error_log"
CustomLog "logs/vhost1.test.com-access_log" common
<Directory "/usr/local/apache2/vhostdocs/vhost1">
Order allow,deny
Allow from all
</Directory>
AddHandler application/x-httpd-php5 .php
Action application/x-httpd-php5 /php-cgi
ScriptAlias /php-cgi "/usr/local/apache2/vhostdocs/vhost1/php-fcgi"
SuexecUserGroup vhost1 vhost1
</VirtualHost>
<VirtualHost *:80>
ServerAdmin vhost2@test.com
ServerName vhost2.test.com
ServerAlias www.vhost2.test.com
DocumentRoot "/usr/local/apache2/vhostdocs/vhost2"
ErrorLog "logs/vhost2.test.com-error_log"
CustomLog "logs/vhost2.test.com-access_log" common
<Directory "/usr/local/apache2/vhostdocs/vhost2">
Order allow,deny
Allow from all
</Directory>
AddHandler application/x-httpd-php5 .php
Action application/x-httpd-php5 /php-cgi
ScriptAlias /php-cgi "/usr/local/apache2/vhostdocs/vhost2/php-cgi"
UserDir public_html
<Directory "/home/*/public_html">
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
Kod: Zaznacz cały
# apachectl -V
Server version: Apache/2.2.15 (Unix)
Server built: Aug 23 2010 10:27:18
Server's Module Magic Number: 20051115:24
Server loaded: APR 1.4.2, APR-Util 1.3.9
Compiled using: APR 1.4.2, APR-Util 1.3.9
Architecture: 32-bit
Server MPM: Prefork
threaded: no
forked: yes (variable process count)
Server compiled with....
-D APACHE_MPM_DIR="server/mpm/prefork"
-D APR_HAS_SENDFILE
-D APR_HAS_MMAP
-D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
-D APR_USE_SYSVSEM_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=128
-D HTTPD_ROOT="/usr/local/apache2"
-D SUEXEC_BIN="/usr/local/apache2/bin/suexec"
-D DEFAULT_PIDLOG="logs/httpd.pid"
-D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
-D DEFAULT_LOCKFILE="logs/accept.lock"
-D DEFAULT_ERRORLOG="logs/error_log"
-D AP_TYPES_CONFIG_FILE="conf/mime.types"
-D SERVER_CONFIG_FILE="conf/httpd.conf"
# apachectl -D DUMP_MODULES
Loaded Modules:
core_module (static)
authn_file_module (static)
authn_default_module (static)
authz_host_module (static)
authz_groupfile_module (static)
authz_user_module (static)
authz_default_module (static)
auth_basic_module (static)
include_module (static)
filter_module (static)
log_config_module (static)
env_module (static)
setenvif_module (static)
version_module (static)
mpm_prefork_module (static)
http_module (static)
mime_module (static)
status_module (static)
autoindex_module (static)
asis_module (static)
suexec_module (static)
cgi_module (static)
negotiation_module (static)
dir_module (static)
actions_module (static)
userdir_module (static)
alias_module (static)
so_module (static)
fastcgi_module (shared)
Syntax OK
# suexec -V
-D AP_DOC_ROOT="/usr/local/apache2/vhostdocs"
-D AP_GID_MIN=100
-D AP_HTTPD_USER="www-data"
-D AP_LOG_EXEC="/usr/local/apache2/logs/suexec.log"
-D AP_SAFE_PATH="/usr/local/bin:/usr/bin:/bin"
-D AP_UID_MIN=100
-D AP_USERDIR_SUFFIX="public_html"