?? access.pdf
字號(hào):
1.3 放開權(quán)限后繼續(xù)實(shí)驗(yàn),
(a) 如果 db1.mdb 是 Access 2000 創(chuàng) 建的數(shù)據(jù)庫,出現(xiàn)如下錯(cuò)誤:
"/test"應(yīng)用程序中的服務(wù)器錯(cuò)誤。
------------------------------------------
不能鎖定文件。
說明: 執(zhí)行當(dāng)前 Web 請(qǐng)求期間,出現(xiàn)未處理的異常。請(qǐng)檢查堆棧跟蹤信息,以了解有關(guān)該錯(cuò)誤 以及代碼中導(dǎo)致錯(cuò)誤的出處的詳細(xì)信息。
異常詳細(xì)信息: System.Data.OleDb.OleDbException: 不能鎖定文件。& nbsp;
(b) 如果 db1.mdb 是 Access XP 創(chuàng)建的 數(shù)據(jù)庫,沒有出現(xiàn)錯(cuò)誤。
(c) 原因初步分析:我們發(fā)現(xiàn)在打開 Access 數(shù)據(jù)庫時(shí),同時(shí)會(huì)在所在目錄生成一個(gè)同名 的 *.ldb 文件,這是一個(gè) Access 的鎖定標(biāo)記。鑒于此,我們猜測,用戶 ASPNET 訪問 Access 數(shù)據(jù)庫時(shí),也需要生成一個(gè)鎖定標(biāo)記,而該目錄沒 有允許其寫入,因此出錯(cuò)。至于 Access XP 創(chuàng)建的數(shù)據(jù)庫為什么沒有這個(gè)錯(cuò)誤,原因還不 得而知。
我們進(jìn)一步放開權(quán)限,
a) D:\wwwroot\test\data\ 文件夾給用戶ASPNET以 如下權(quán)限:
允許 拒絕
完全控制 &n bsp; □ & nbsp;□
修改 &nbs p; &nbs p;□ □
讀取及運(yùn)行 & nbsp; √ □ ;
列出文件夾目錄 ; √ □
讀取 &nbs p; &nbs p;√ □
寫入 &nbs p; &nbs p;√ □
b) D:\wwwroot\test\data\db1.mdb 文件本身給用戶ASPNET以如下權(quán)限:
√ 允許將來自父系的可繼承權(quán)限傳播給該 對(duì)象
1.4 繼續(xù)實(shí)驗(yàn),發(fā)現(xiàn)錯(cuò)誤已解決,那么上面這個(gè)權(quán)限就是我們需要放開的"最低權(quán)限"。
(a) 如果 db1.mdb 是 Access 2000 創(chuàng) 建的數(shù)據(jù)庫,我們會(huì)發(fā)現(xiàn)一個(gè)小問題:生成的 *.ldb 文件不會(huì)自己刪除,訪問后該文件依然存在,但這個(gè) 問題不會(huì)影響 ASP.NET 的正常運(yùn)行。
(b) 如果 db1.mdb 是 Access XP 創(chuàng)建的 數(shù)據(jù)庫,沒有出現(xiàn)上面類似問題。
(c) 原因初步分析:我們僅僅是給了 ASPNET 以寫入文件夾的權(quán)限,沒有給它修改的權(quán)限 ,所以文件一旦寫入,便無法修改其內(nèi)容,*.ldb 也就刪除不掉了。
如果非要解決這個(gè)問題,進(jìn)一步放開權(quán)限為:
a) D:\wwwroot\test\data\ 文件夾給用戶ASPNET以 如下權(quán)限:
允許 拒絕
完全控制 &n bsp; □ & nbsp;□
修改 &nbs p; &nbs p;√ □
讀取及運(yùn)行 & nbsp; √ □ ;
列出文件夾目錄 ; √ □
讀取 &nbs p; &nbs p;√ □
寫入 &nbs p; &nbs p;√ □
b) D:\wwwroot\test\data\db1.mdb 文件本身給用戶ASPNET以如下權(quán)限:
√ 允許將來自父系的可繼承權(quán)限傳播給該 對(duì)象
1.5 附帶著,實(shí)驗(yàn)另一種情形:我們把 db1.mdb 在 Acce ss 打開編輯,同時(shí)訪問 ASP.NET。
(a) 如果 db1.mdb 是 Access 2000 創(chuàng) 建的數(shù)據(jù)庫,我們發(fā)現(xiàn)并沒有出現(xiàn)什么問題。
(b) 如果 db1.mdb 是 Access XP 創(chuàng)建的 數(shù)據(jù)庫,出現(xiàn)如下錯(cuò)誤:
"/zhao"應(yīng)用程序中的服務(wù)器錯(cuò)誤。
------------------------------------------------
不能使用 '';文件已在使用中。
說明: 執(zhí)行當(dāng)前 Web 請(qǐng)求期間,出現(xiàn)未處理的異常。請(qǐng)檢查堆棧跟蹤信息,以了解有關(guān)該錯(cuò)誤 以及代碼中導(dǎo)致錯(cuò)誤的出處的詳細(xì)信息。
異常詳細(xì)信息: System.Data.OleDb.OleDbException: 不能使用&nbs p;'';文件已在使用中。
(c) 原因初步分析:Access 數(shù)據(jù)庫是單用戶單線程的數(shù)據(jù)庫,我們?cè)?Access&n bsp;里面打開編輯數(shù)據(jù)庫文件時(shí)其實(shí)是以當(dāng)前 Windows 用戶(比如Administrator) 身份打開數(shù)據(jù)庫,而 ASP.NET 默認(rèn)使用的是 ASPNET 虛擬用戶(隸屬于 Users 組),級(jí)別低于 Administrator,無法和 Adminis trator "搶奪"權(quán)限,所以出現(xiàn)沖突錯(cuò)誤。至于 Access 2000 忽略 這個(gè)問題的情形我們也不必做討論了,可能是 Access 2000 沒有考慮那么多因素吧。& nbsp;
1.6 再附帶一種情形:將 db1.mdb 的屬性改為"只讀",無論是&nbs p;Access 2000 還是 Access XP 都將分別出現(xiàn)與& nbsp;1.2 中各自的錯(cuò)誤相同的錯(cuò)誤提示。
(二)實(shí)驗(yàn)結(jié)論
(1) 我們首先再次總結(jié)一下 Access 數(shù)據(jù)庫文件的 NTFS 權(quán) 限設(shè)置的緣起:
在 ASP.NET 中默認(rèn)是以一個(gè)叫做 ASPNET& nbsp;的虛擬用戶的身份來訪問、操作數(shù)據(jù)庫的,你可以在"控制面板"-"管理工具"-"計(jì)算機(jī)管理"-"本地用戶和組"-" 用戶"中看到這個(gè)用戶,默認(rèn)情況下是:
全名:ASP.NET 計(jì)算機(jī)帳戶&nb sp;
描述為:用于運(yùn)行 ASP.NET&nb sp;輔助進(jìn)程(aspnet_wp.exe)的帳戶。
隸屬于:Users組。
使用這么一個(gè)隸屬于 Users 組的用戶來進(jìn)行文件操作、數(shù)據(jù)庫操 作的風(fēng)險(xiǎn)是要比用一個(gè) Administrators 組的用戶的風(fēng)險(xiǎn)要小得多,這也是 ASP .NET 在安全方面的一個(gè)考慮吧。
既然是這么一個(gè)用戶需要訪問、操作數(shù)據(jù)庫文件本身,那么我們就需要給它一定的 NTFS 權(quán)限以允許它的訪問。顯然沒有 NTFS 的權(quán)限許可,ASPNET 就無 法訪問、操作數(shù)據(jù)庫,就會(huì)出現(xiàn)上面實(shí)驗(yàn)中所看到的那些錯(cuò)誤了。
(2) 經(jīng)過上面的實(shí)驗(yàn),我們已經(jīng)知道如下的 NTFS 權(quán)限設(shè)置是可以滿足一般需求的:&nb sp;
a) D:\wwwroot\test\data\ 文件夾給用戶ASPNET以 如下權(quán)限:
允許 拒絕
完全控制 &n bsp; □ & nbsp;□
修改 &nbs p; &nbs p;□ □
讀取及運(yùn)行 & nbsp; √ □ ;
列出文件夾目錄 ; √ □
讀取 &nbs p; &nbs p;√ □
寫入 &nbs p; &nbs p;√ □
b) D:\wwwroot\test\data\db1.mdb 文件本身給用戶ASPNET以如下權(quán)限:
√ 允許將來自父系的可繼承權(quán)限傳播給該 對(duì)象
同時(shí)我們也注意到 db1.mdb 是否為"只讀"文件對(duì) ASPNET 的訪問也會(huì) 有一定影響。
(3) 上述權(quán)限設(shè)置可以直接設(shè)置給 ASPNET 用戶自己,也可以設(shè)置給 Use rs 組,或者直接給 Everyone 組上述權(quán)限都是可以的。因?yàn)?ASPNET 隸屬于 Users 組,可以通過 用戶組 給 ASPNET 設(shè)置權(quán)限。
(4) NTFS 權(quán)限在文件或文件夾右擊后得到的"屬性"對(duì)話框-"安全"選項(xiàng)卡中設(shè)置,一般情況下,可 以考慮給 Adminitrators 組以"完全控制"的權(quán)限,同時(shí)不要輕易在"拒絕"中打勾,有關(guān)&n bsp;NTFS 權(quán)限設(shè)置的技巧,可以咨詢網(wǎng)絡(luò)管理員、網(wǎng)絡(luò)安全專家的建議。
注:FAT, FAT32 格式的分區(qū)中不支持 NTFS 權(quán)限。 &nb sp;
(5) Windows 2000 系列,Windows Server 2003 系列的"安全"選項(xiàng)卡默認(rèn)是很容易找到的,但 Windows XP Pr ofessional 中的"安全"選項(xiàng)卡默認(rèn)是關(guān)閉的,可以將"控制面板"-"文件夾選項(xiàng)"-"查看"選項(xiàng)卡中的" 高級(jí)設(shè)置"中"使用簡單共享(推薦)"一項(xiàng)的"√"去除,"確定"之后,再次按照上面的方法即可看到"安全"選項(xiàng)卡了。&nbs p;
===========
綜上所述,2、3、4法一起使用,是防止數(shù)據(jù)庫被下載最基本,最行之有效的方 法,既適用于對(duì)服務(wù)器有管轄權(quán)的網(wǎng)管,又適用于虛擬主機(jī)的用戶,推薦每一個(gè)制作者同時(shí)必用這三種方法
若你對(duì)服務(wù)器擁有管轄權(quán),推薦再加上方法9,你的ACCESS數(shù)據(jù)庫的安全性 就可以大大提高了。
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -