Запуск Apache 2.4.10 в Arch Linux.
Я пытаюсь ограничить пользователя SFTP, чтобы он мог получить доступ только к его домашнему каталогу, 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>
Сценарий выполняется от имени пользователя, но так, как если бы сценарий был установлен с пользователем suexec. Пользователь apache по-прежнему должен иметь доступ к сценарию, что означает разрешение на выполнение для всех ведущих к нему каталогов.