Почему Apache нужны o+x полномочия для Виртуального Хоста, работающего под suEXEC?

Рабочий Apache 2.4.10 на дуге Linux.

Я пытаюсь ограничить пользователя SFTP, чтобы только смочь получить доступ к его корневому каталогу, a public папка в соответствии с vhost каталогом, не имея возможности получить доступ к этому vhost каталог. Прямо сейчас, когда я вхожу в систему как пользователь, я могу все еще пересечь дерево каталогов и ввести по абсолютному адресу вокруг всей файловой системы. Вот текущие полномочия:

drwxr-xr--  6 vhostname vhostname 4096 Apr 23 19:17 .
drwxrwxr-x 25 root      root      4096 Apr 23 18:43 ..
-rw-r--r--  1 vhostname vhostname   21 Apr 23 18:43 .bash_logout
-rw-r--r--  1 vhostname vhostname   57 Apr 23 18:43 .bash_profile
-rw-r--r--  1 vhostname vhostname  141 Apr 23 18:43 .bashrc
drwx--x--x  2 vhostname vhostname 4096 Apr 23 18:43 fcgi-bin
drwx--x--x  3 vhostname vhostname 4096 Apr 23 18:43 logs
drwx--x--x  2 vhostname vhostname 4096 Apr 23 18:43 private
drwx--x--x  7 user      user      4096 Apr 23 19:25 public

Если я chmod o-x ., затем я получаю 403. Это походит на потребности Apache выполнить разрешение для обслуживания сайта. И все же suEXEC выполняет сайт как vhostname:vhostname, итак, почему должен недостающее разрешение для внешнего вопроса пользователей/групп?

Конфигурация Vhost:

<VirtualHost *:80>
  ServerAdmin admin@example.com
  DocumentRoot "/srv/www/vhostname/public/"
  ServerName vhostname.com
  ServerAlias *.vhostname.com
  SuexecUserGroup vhostname vhostname
  ErrorLog "/srv/www/vhostname/logs/error.log"
  LogLevel debug
  CustomLog "/srv/www/vhostname/logs/access.log" combined

  <Directory /srv/www/vhostname/public>
    AllowOverride All
    Options Indexes FollowSymLinks MultiViews
    Require all granted
  </Directory>

  # http://www.linode.com/forums/viewtopic.php?t=2982
  <IfModule !mod_php5.c>
  <IfModule !mod_php5_filter.c>
  <IfModule !mod_php5_hooks.c>
  <IfModule mod_actions.c>
  <IfModule mod_alias.c>
  <IfModule mod_mime.c>
  <IfModule mod_fcgid.c>
    AddHandler php-fcgi .php
    Action php-fcgi /fcgi-bin/php-fcgid-wrapper
    Alias /fcgi-bin/ /srv/www/vhostname/fcgi-bin/ 

    <Location /fcgi-bin/>
      SetHandler fcgid-script
      Options +ExecCGI
      Require all granted
    </Location>

    ReWriteEngine On
    ReWriteRule ^/fcgi-bin/[^/]*$ / [L,PT]
  </IfModule>
  </IfModule>
  </IfModule>
  </IfModule>
  </IfModule>
  </IfModule>
  </IfModule>
</VirtualHost>
0
задан 24 April 2015 в 03:46
1 ответ

Сценарий выполняется от имени пользователя, но как если бы сценарий был установлен с идентификатором с пользователем suexec. Пользователь apache по-прежнему должен иметь доступ к сценарию, что означает разрешения на выполнение для всех ведущих к нему каталогов.

1
ответ дан 4 December 2019 в 16:58

Теги

Похожие вопросы