在Arch Linux上运行Apache 2.4.10。
我试图限制一个SFTP用户只能访问他的主目录,在虚拟主机目录下的一个公用文件夹,而不能访问该虚拟主机目录。 现在,当我以用户身份login时,我仍然可以遍历目录树,并且浏览整个文件系统。 以下是当前权限:
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 ox . ,那么我得到一个403.看来Apache需要执行许可才能为该网站服务。 然而suEXEC以vhostname:vhostname身份运行这个站点,那么为什么外部用户/组织缺less权限呢?
Vhostconfiguration:
<VirtualHost *:80> ServerAdmin [email protected] 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用户仍然需要能够访问脚本,这意味着对所有通向它的目录执行权限。