请教:Win环境下Apache目录文件访问安全问题

请教:Win环境下Apache目录文件访问安全问题

我的安装环境 winxpsp2 + apache2.2 + php5.2.2

问题:我在主机上面创建了一个虚拟主机test.com(物理地址d:/web/site/test.com),然后在这个虚拟主机下面创建了一个test.php,test.php的作用在于直接在系统的另外的文件夹(物理地址e:/try)下面创建或者修改指定文件。按照安全的角度,应该不允许这样做的,但是实际上程序可以运行。那么应该如何在Apache下将虚拟主机的用户只有读写本目录的所有文件的权限。
类似在IIS里面,可以通过站点安全性设置,配合目录里面设置用户读写权限来控制,Win环境下的Apache里面如何设置呢?

========以下是问题的详细描述==============


我在apache的httpd.conf中设置的相关目录权限如下

<Directory />
    Options FollowSymLinks
    AllowOverride None
    Order deny,allow
    Deny from all
    Satisfy all
</Directory>

然后创建了一个虚拟主机

<Directory "d:/web/site/test.com">
    AllowOverride FileInfo AuthConfig Limit Indexes
    Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
    <Limit GET POST OPTIONS>
        Order allow,deny
        Allow from all
    </Limit>
    <LimitExcept GET POST OPTIONS>
        Order deny,allow
        Deny from all
    </LimitExcept>
</Directory>
<VirtualHost *:80>
    ServerAdmin john
    DocumentRoot "d:/web/site/test.com"
    ServerName www.test.com
</VirtualHost>


理论上来讲,用户的访问权限应该集中在指定目录 d:/web/site/test.com 中,但是我发现放在该虚拟主机test.com网站下面用如下程序却可以在系统的任何地方创建或者修改文件,如下这个文件 www.test.com/test.php

$fn = "e:/try/test.sql";
$fp = @fopen($fn, "w")
    or die("file not exist");
if (!fwrite($fp, "this is test file")) {
  echo "failed";
} else {
  echo "successed";
}
@fclose($fp);
php_admin_value open_basedir d:/web/site/test.com


QUOTE:
原帖由 flyarrow 于 2007-9-29 11:05 发表
我的安装环境 winxpsp2 + apache2.2 + php5.2.2

沒記錯的話 windows xp 上 apache 一般是以 "system" 這個身份運作執行,剛好所有的檔案目錄都繼承複製該使用者可以完整存取的權限。

若你要限制,也許移除 system 該身份可以完整讀寫該目錄的權限即可.

windows xp 一般可以先到控制台 --> 系統管理工具 --> 本機安全性 --> 本機原則 --> 安全性選項,將裡面的 "網路存取公用模式於本機帳戶" 該項目內,把 guest 驗證改成以目前帳戶驗證即可。後續在資料夾點選後按下右鍵選擇內容會出現權限設定,裡面就可以調整權限配置項目。

--