黑客风云——风云网络
设为首页 加入收藏 我要投稿 网站地图

您现在的位置: 黑客风云 >> 黑客文章 >> 黑客入门 >> 黑客常识 >> 正文
·没有路由密码权限时的鸽08-23·上网安全 Vista自我防范10-11
·让濒临崩溃的Windows XP10-11·有备无患,快速自制救急10-11
·要你好看!Windows看图工10-11·空间赞助网提供不同类型10-11
·讨论net.exe和net1.exe的10-10·让3389远程桌面传输更通10-10
·巧妙入侵渗透赌博站10-10·Aspx空间扫权限工具10-10
·Windows2003最新提权工具10-10·易淘乐提供100M免费全能10-10
·系统开机密码忘了不着急10-09·中意网络提供免费100M免10-09
·与众不同 Windows XP开始10-08·让桌面图标翻跟斗 在XP上10-08
·上海宽元站长资助计划-提10-08·个性化Windows XP的任务10-07
·趣盘提供3G免费网络硬盘10-07·秀山热线提供200MB免费全10-07
·一次艰辛的提权过程10-06·成功入侵IT大卖场的渗透10-06
·mysqlhack- MYSQL利用工10-06·lanker一句话PHP后门客户10-06
·WIXI提供3G免费多媒体网10-06·新人网络提供100M/ftp免10-06
·如何利用QQ带来高流量10-05·UuShare提供免费网络文件10-05
[推荐]数据库暴库整理篇
      ★★★★

数据库暴库整理篇

文章整理发布:黑客风云 文章来源:www.05112.com 更新时间:2006-4-7 9:07:10

9.利用NTFS分区的文件权限设置(by percyboy) 
我们已经知道,ASP.NET 中使用 ADO.NET 访问数据库,通过 OleDb 的连接可以访问 Access 数据库——我们非常常用的低端数据库之一。本文讨论了 ASP.NET 中可能看到的若干错误提示,从中看到 Access 2000 和 Access XP 创建的数据库文件,在访问出现错误时会出现不太相同的错误提示。希望对大家有所帮助。另一个要点是,希望通过此文,使大家对 ASP.NET 中 Access 数据库文件的 NTFS 权限设置有所新的认识。 

(一)实验过程 

为了叙述方便,举个具体例子做个实验:应用程序为 /test ,数据库存放在 D:\wwwroot\test\data\db1.mdb,我们已经知道在 ASP.NET 中是以一个叫做 ASPNET 虚拟用户的身份访问数据库的,我们需要给这个账户以特定的 NTFS 权限才能使 ASP.NET 程序正常运行。 

为了得到最严格的 NTFS 权限设置,实验开始时我们给程序最低的 NTFS 权限: 

a) D:\wwwroot\test\data\ 文件夹的给用户ASPNET以如下权限: 
允许 拒绝 
完全控制 □ □ 
修改 □ □ 
读取及运行 √ □ 
列出文件夹目录 √ □ 
读取 √ □ 
写入 □ □ 

b) D:\wwwroot\test\data\db1.mdb 文件本身给用户ASPNET以如下权限: 
√ 允许将来自父系的可继承权限传播给该对象 

1.1 对于某个只包含有“SELECT”命令的aspx程序,上述权限设置运行时无障碍,即:上述权限已经满足这类程序的运行了。 

1.2 对于包含有“UPDATE”“INSERT”“UPDATE”等命令的aspx程序, 

(a) 如果 db1.mdb 是 Access 2000 创建的数据库,出现如下错误: 

“/test”应用程序中的服务器错误。 
--------------------------------------- 
Microsoft Jet 数据库引擎打不开文件’D:\wwwroot\test\data\’。 它已经被别的用户以独占方式打开,或没有查看数据的权限。 
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 
异常详细信息: System.Data.OleDb.OleDbException: Microsoft Jet 数据库引擎打不开文件’D:\wwwroot\test\data\’。 它已经被别的用户以独占方式打开,或没有查看数据的权限。 

(b) 如果 db1.mdb 是 Access XP 创建的数据库,出现如下错误: 

“/test”应用程序中的服务器错误。 
---------------------------------------------- 
操作必须使用一个可更新的查询。 
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 
异常详细信息: System.Data.OleDb.OleDbException: 操作必须使用一个可更新的查询。 
(c) 原因初步分析:因为包含有“UPDATE”“INSERT”“UPDATE”等命令,需要对数据库文件本身进行写入操作,所以上述权限不能满足此需求,我们需要进一步放开权限。 

我们放开一些权限, 
a) D:\wwwroot\test\data\ 文件夹不变: 

b) D:\wwwroot\test\data\db1.mdb 文件本身给用户ASPNET以如下权限: 
允许 拒绝 
完全控制 □ □ 
修改 □ □ 
读取及运行 √ □ 
列出文件夹目录 √ □ 
读取 √ □ 
写入 √ □ 

1.3 放开权限后继续实验, 

(a) 如果 db1.mdb 是 Access 2000 创建的数据库,出现如下错误: 

“/test”应用程序中的服务器错误。 
------------------------------------------ 
不能锁定文件。 
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 
异常详细信息: System.Data.OleDb.OleDbException: 不能锁定文件。 

(b) 如果 db1.mdb 是 Access XP 创建的数据库,没有出现错误。 

(c) 原因初步分析:我们发现在打开 Access 数据库时,同时会在所在目录生成一个同名的 *.ldb 文件,这是一个 Access 的锁定标记。鉴于此,我们猜测,用户 ASPNET 访问 Access 数据库时,也需要生成一个锁定标记,而该目录没有允许其写入,因此出错。至于 Access XP 创建的数据库为什么没有这个错误,原因还不得而知。 

我们进一步放开权限, 
a) D:\wwwroot\test\data\ 文件夹给用户ASPNET以如下权限: 
允许 拒绝 
完全控制 □ □ 
修改 □ □ 
读取及运行 √ □ 
列出文件夹目录 √ □ 
读取 √ □ 
写入 √ □ 

b) D:\wwwroot\test\data\db1.mdb 文件本身给用户ASPNET以如下权限: 
√ 允许将来自父系的可继承权限传播给该对象 

1.4 继续实验,发现错误已解决,那么上面这个权限就是我们需要放开的“最低权限”。 

(a) 如果 db1.mdb 是 Access 2000 创建的数据库,我们会发现一个小问题:生成的 *.ldb 文件不会自己删除,访问后该文件依然存在,但这个问题不会影响 ASP.NET 的正常运行。 

(b) 如果 db1.mdb 是 Access XP 创建的数据库,没有出现上面类似问题。 

(c) 原因初步分析:我们仅仅是给了 ASPNET 以写入文件夹的权限,没有给它修改的权限,所以文件一旦写入,便无法修改其内容,*.ldb 也就删除不掉了。 

如果非要解决这个问题,进一步放开权限为: 
a) D:\wwwroot\test\data\ 文件夹给用户ASPNET以如下权限: 
允许 拒绝 
完全控制 □ □ 
修改 √ □ 
读取及运行 √ □ 
列出文件夹目录 √ □ 
读取 √ □ 
写入 √ □ 

b) D:\wwwroot\test\data\db1.mdb 文件本身给用户ASPNET以如下权限: 
√ 允许将来自父系的可继承权限传播给该对象 

1.5 附带着,实验另一种情形:我们把 db1.mdb 在 Access 打开编辑,同时访问 ASP.NET。 

(a) 如果 db1.mdb 是 Access 2000 创建的数据库,我们发现并没有出现什么问题。 

(b) 如果 db1.mdb 是 Access XP 创建的数据库,出现如下错误: 

“/zhao”应用程序中的服务器错误。 
------------------------------------------------ 
不能使用 ’’;文件已在使用中。 
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 
异常详细信息: System.Data.OleDb.OleDbException: 不能使用 ’’;文件已在使用中。 

(c) 原因初步分析:Access 数据库是单用户单线程的数据库,我们在 Access 里面打开编辑数据库文件时其实是以当前 Windows 用户(比如Administrator)身份打开数据库,而 ASP.NET 默认使用的是 ASPNET 虚拟用户(隶属于 Users 组),级别低于 Administrator,无法和 Administrator “抢夺”权限,所以出现冲突错误。至于 Access 2000 忽略这个问题的情形我们也不必做讨论了,可能是 Access 2000 没有考虑那么多因素吧。 

1.6 再附带一种情形:将 db1.mdb 的属性改为“只读”,无论是 Access 2000 还是 Access XP 都将分别出现与 1.2 中各自的错误相同的错误提示。 

上一页  [1] [2] [3] [4] 下一页

文章录入:cainiaowang    责任编辑:cainiaowang 
【字体:
Copyright @2006 黑客风云 ●业务联系:QQ 联系怪人 联系奇人 Email:给怪人发邮件 给奇人发邮件
ICP备案:冀06009886