Apache kann suPHP-generierte Dateien nicht lesen

Dieses Thema im Forum "Installation und Konfiguration" wurde erstellt von berny, 23. Apr. 2008.

  1. berny

    berny New Member

    Hallo,

    ich habe suPHP unter ISPConfig installiert. PHP-Dateien werden jetzt auch mit der DIG und UID des Admin-Users des jeweiligen Virtuellen Hostes ausgeführt. Die PHP-Skripte können auch Dateien lesen und schreiben. Es ist keine Problem, wenn die Rechte der Datei 0400 oder 0600 sind.

    Apache allerdings scheint weiterhin mit der UID und GID www-data:www-data zu kommen und kann daher diese Dateien nicht lesen und auch nicht ausliefern. Das einzige was zu helfen scheint, ist, ein chmod auf die Dateien zu machen, so dass diese für "other" lesbar sind (also z.B. 0444). Oder ich muss www-data als user zur entsprechenden group hinzufügen und die Datei auf z.B: 0640 setzen.

    Gibt es eine Möglichkeit, dass Apache für jeden Virtual Host mit der entsprechenden UDI und GID kommt?

    Ich will ja eventuell Passwortgeschützte Bereiche anlegen. Da sollten die Dateien natürlich nicht für andere User des Systems lesbar sein. Oder das Backend eines CMS schreibt z.B. Dateien die andere User nicht sehen sollen.

    Ich habe bei meiner Recherche nichts zu diesem Problem gefunden. Aber vielleicht habe ich was übersehen. Ich bin also auch für ein rtfm dankbar, aber ein genauer Verweis, wo ich das nachlesen kann wäre schön.

    Gruß,
    Berny
     
  2. berny

    berny New Member

    Ziel ist es, dass user per ftp oder login nicht die Dateien anderer Domains lesen können. Gleichzeitig soll apache natürlich in der Lage sein, alles auszuliefern.
    Dazu stelle ich mir vor, dass idealerweise auch Dateien, für die nur der User selbst Leserechte hat, ausgeliefert werden können. Zur Not eben Dateien, für die nur User und Gruppe Leserechte haben. Allerdings scheint, wie oben beschrieben, Apache das nicht zu können.

    Versuche ich vielleicht das Ziel auf falschem Wege zu erreichen? Gibt es einen besseren Weg?


    Hier nochmal meine Konfigurationsdaten.


    apache2
    Code:
    zwei:~# apache2 -V
    Server version: Apache/2.2.3
    Server built:   Jan 27 2008 18:13:21
    Server's Module Magic Number: 20051115:3
    Server loaded:  APR 1.2.7, APR-Util 1.2.7
    Compiled using: APR 1.2.7, APR-Util 1.2.7
    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=""
     -D SUEXEC_BIN="/usr/lib/apache2/suexec"
     -D DEFAULT_PIDLOG="/var/run/apache2.pid"
     -D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
     -D DEFAULT_LOCKFILE="/var/run/apache2/accept.lock"
     -D DEFAULT_ERRORLOG="logs/error_log"
     -D AP_TYPES_CONFIG_FILE="/etc/apache2/mime.types"
     -D SERVER_CONFIG_FILE="/etc/apache2/apache2.conf"
    Code:
    zwei:~# cat /etc/apache2/httpd.conf 
    LoadModule suphp_module       /usr/lib/apache2/modules/mod_suphp.so
    suPHP

    Code:
    zwei:~# suphp -V
    suPHP version 0.6.2
    Code:
    zwei:~# cat /etc/suphp.conf 
    [global]
    ;Path to logfile
    logfile=/var/log/suphp.log
    
    ;Loglevel
    loglevel=info
    
    ;User Apache is running as
    webserver_user=www-data
    
    ;Path all scripts have to be in
    docroot=/
    
    ;Path to chroot() to before executing script
    ;chroot=/mychroot
    
    ; Security options
    allow_file_group_writeable=true
    allow_file_others_writeable=false
    allow_directory_group_writeable=true
    allow_directory_others_writeable=false
    
    ;Check wheter script is within DOCUMENT_ROOT
    check_vhost_docroot=true
    
    ;Send minor error messages to browser
    errors_to_browser=false
    
    ;PATH environment variable
    env_path=/bin:/usr/bin
    
    ;Umask to set, specify in octal notation
    umask=0077
    
    ; Minimum UID
    min_uid=100
    
    ; Minimum GID
    min_gid=100
    
    [handlers]
    ;Handler for php-scripts
    x-httpd-php=php:/home/admispconfig/ispconfig/tools/suphp/usr/bin/php-wrapper
    
    ;Handler for CGI-scripts
    x-suphp-cgi=execute:!self
    Vhosts_ispconfig.conf

    zwei:~# cat /etc/apache2/vhosts/Vhosts_ispconfig.conf
    Code:
    [...]
    
    #
    #
    ######################################
    # Vhost: www.domain.de:80
    ######################################
    #
    #
    <VirtualHost 213.133.108.249:80>
    SuexecUserGroup ardan web55
    ServerName www.domain.de:80
    ServerAdmin webmaster@domain.de
    DocumentRoot /var/www/web55/web
    ServerAlias ardan-heerkens.de
    DirectoryIndex index.html index.htm index.php index.php5 index.php4 index.php3 index.shtml index.cgi index.pl index.jsp Default.htm default.htm
    Alias  /cgi-bin/ /var/www/web55/cgi-bin/
    AddHandler cgi-script .cgi
    AddHandler cgi-script .pl
    ErrorLog /var/www/web55/log/error.log
    AddType application/x-httpd-php .php .php3 .php4 .php5
    <Directory /var/www/web55/web>
      suPHP_Engine on
      suPHP_UserGroup ardan web55
      AddHandler x-httpd-php .php .php3 .php4 .php5
      suPHP_AddHandler x-httpd-php
      SetEnv php_safe_mode On
    </Directory>
    Alias /error/ "/var/www/web55/web/error/"
    ErrorDocument 400 /error/invalidSyntax.html
    ErrorDocument 401 /error/authorizationRequired.html
    ErrorDocument 403 /error/forbidden.html
    ErrorDocument 404 /error/fileNotFound.html
    ErrorDocument 405 /error/methodNotAllowed.html
    ErrorDocument 500 /error/internalServerError.html
    ErrorDocument 503 /error/overloaded.html
    AliasMatch ^/~([^/]+)(/(.*))? /var/www/web55/user/$1/web/$3
    AliasMatch ^/users/([^/]+)(/(.*))? /var/www/web55/user/$1/web/$3
    </VirtualHost>
    
    
     
  3. Till

    Till Administrator

    Du musste nteweder die Dateein mit globalen Leserechten ausstatten, was an sich kein Problem ist da es keine Dateein mit klartext Passworten oder ähnlichem betrifft oder aber Du musst den apache User zur Gruppe des Webs hinzufügen.
     

Diese Seite empfehlen