Linux
為什麼 Apache 在 suEXEC 下執行的虛擬主機需要 o+x 權限?
在 Arch Linux 上執行 Apache 2.4.10。
我試圖限制 SFTP 使用者只能訪問他的主目錄,
public
即虛擬主機目錄下的文件夾,而無法訪問該虛擬主機目錄。現在,當我以使用者身份登錄時,我仍然可以遍歷目錄樹,並瀏覽整個文件系統。以下是目前權限: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
如果 I
chmod o-x .
,那麼我得到一個 403。似乎 Apache 需要執行權限才能為該站點提供服務。然而 suEXEC 將站點執行為vhostname:vhostname
,那麼為什麼缺少外部使用者/組的權限很重要?虛擬主機配置:
<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 使用者仍然需要能夠訪問腳本,這意味著對通向它的所有目錄的執行權限。