ISAPI 在 IIS5 上運作, 針對 NTFS partition 該怎麼設權限能讓 IUSER 去讀取C:\windows 或其它目錄的檔案呢? |
答題得分者是:careychen
|
Arnor
一般會員 發表:28 回覆:29 積分:16 註冊:2006-10-28 發送簡訊給我 |
小弟撰寫 ISAPI 總為了 IIS 的安全設定一直傷腦筋,
因為 ISAPI 需要去讀某些設定檔, 但在 NTFS 環境中都常常有權限的問題, 導致 ISAPI 無法執行 (HTTP 500 或 DLLHOST.exe hang 住吃 CPU 9x%) 或者出現 I/O Error 103 也就是同一隻程式可能在同XP IIS5 的環境都有可能出現可運行和不可運行的情況, 在 IIS 6.0 上就更是對安全霧沙沙, 能設定成功真的是要經過一大堆"開放權限"的設定動作 想請問先進, IIS 上的 CGI/ISAPI 等程式若有讀/寫檔案的需求, 該怎麼設定 NTFS 目錄的安全性或者 IIS 的目錄安全設定呢? |
Arnor
一般會員 發表:28 回覆:29 積分:16 註冊:2006-10-28 發送簡訊給我 |
補充資料
同樣的一個log 動作, 在 initialization 裡就能運作, 但在 Default action 的 webmoduleaction 竟不能運作, 出現 I/O 103 截取程式片段如下, 請先進指導一下. (程式均在 XP IIS5 的環境下, 在 FAT32 的電腦就沒問題, 在NTFS 就有這問題, 由於並無太多系統做對照組測試, 無法確定是不是檔案系統的關係) unit Unit1; interface uses SysUtils, Classes, HTTPApp; type TWebModule1 = class(TWebModule) procedure WebModule1WebActionItem1Action(Sender: TObject; Request: TWebRequest; Response: TWebResponse; var Handled: Boolean); private { Private declarations } public { Public declarations } end; var WebModule1: TWebModule1; implementation {$R *.DFM} procedure LogFile(instr : string); var myfile : TEXTFILE; begin try if FileExists('c:\isapi_test.log') then begin AssignFile(myfile, 'c:\isapi_test.log'); append(myfile); end else begin AssignFile(myfile, 'c:\isapi_test.log'); rewrite(myfile); end; writeln(myfile, '[' datetimetostr(now) '] ' instr); finally Closefile(myfile); end; end; procedure TWebModule1.WebModule1WebActionItem1Action(Sender: TObject; Request: TWebRequest; Response: TWebResponse; var Handled: Boolean); begin LogFile('Hello world'); end; initialization LogFile('world begin'); end; |
careychen
尊榮會員 發表:41 回覆:580 積分:959 註冊:2004-03-03 發送簡訊給我 |
其實這只是安全性的問題,不要存在 C: 的根目錄底下,自建一個目錄放在裡面就 ok 了
===================引 用 Arnor 文 章=================== procedure LogFile(instr : string); var myfile : TEXTFILE; begin try if FileExists('C:\Test\isapi_test.log') then AssignFile(myfile, 'c:\test\isapi_test.log'); append(myfile); end else begin ForceDirectories('C:\Test'); // 加一行這個 AssignFile(myfile, 'c:\test\isapi_test.log'); end; writeln(myfile, '[' datetimetostr(now) '] ' instr); finally Closefile(myfile); end; end; procedure TWebModule1.WebModule1WebActionItem1Action(Sender: TObject; Request: TWebRequest; Response: TWebResponse; var Handled: Boolean); begin LogFile('Hello world'); end; end;
------
價值的展現,來自於你用哪一個角度來看待它!! |
Arnor
一般會員 發表:28 回覆:29 積分:16 註冊:2006-10-28 發送簡訊給我 |
|
careychen
尊榮會員 發表:41 回覆:580 積分:959 註冊:2004-03-03 發送簡訊給我 |
我找到了這兩篇,他說 ISAPIThreadPool 和 ISAPIApp 的順序要變一下,這是個 bug ,換一下順序就行了
ISAPIApp必須在ISAPIThreadPool之前 http://topic.csdn.net/t/20040402/16/2918424.html ==> 5 樓的位置 http://www.delphifans.com/infoView/Article_3632.html ==> 第 5 點 但目前沒看到有人寫 【繼承應用程式執行角色權限的問題】是因為 ISAPIThreadPool 造成的,我再看看有沒有類似的文章
------
價值的展現,來自於你用哪一個角度來看待它!! |
Arnor
一般會員 發表:28 回覆:29 積分:16 註冊:2006-10-28 發送簡訊給我 |
謝謝回覆
是的. 我知道是這問題後有針對這關鍵字查了一下搜尋引擎, 也有看到這說法, 也有測了一下, 不過很可惜並不成功, 所以, 該文章所指得這bug 應該是指在效能上的bug fix. 沒見到如我一樣的是I/O 問題. 經我這兩天的嘗試, 似乎對以前遇到 IIS6 因為安全性關係 (windows 2003 NTFS IIS6 整個安全性真的是一整個不知該高興還是頭暈), 有了點新突破, 至少確認了就是安全性才會影響 ISAPI 在諸多環境上能否運作的重要問題點. (倘若ISAPI程序沒牽扯到I/O 當然就不會有這問題). 或許也只是因為我用得還是D6, 在這方面不一定在新版D2007之類的就已改善了也說不定, 我這方面沒有環境測. ===================引 用 careychen 文 章=================== 我找到了這兩篇,他說 ISAPIThreadPool 和 ISAPIApp 的順序要變一下,這是個 bug ,換一下順序就行了 ISAPIApp必須在ISAPIThreadPool之前 http://topic.csdn.net/t/20040402/16/2918424.html ==> 5 樓的位置 http://www.delphifans.com/infoView/Article_3632.html ==> 第 5 點 但目前沒看到有人寫 【繼承應用程式執行角色權限的問題】是因為 ISAPIThreadPool 造成的,我再看看有沒有類似的文章 |
careychen
尊榮會員 發表:41 回覆:580 積分:959 註冊:2004-03-03 發送簡訊給我 |
|
Arnor
一般會員 發表:28 回覆:29 積分:16 註冊:2006-10-28 發送簡訊給我 |
就如我所說的,
我也不清楚為何有些電腦就是不行跑. 我上述那段程式碼就是我的測試碼, 因為不想把專案整個拿來測試改來改去, 會太亂, 就只針對部份動作測. ===================引 用 careychen 文 章=================== 我今天的測試是用 D7 Update2 版 開發 XP 的 IIS5 和 2003 上的 iis6 都跑過,沒什麼問題 不過我是用你上面寫的那一段加上我修改過後的,跑很多次沒看到什麼問題,不曉得您一直說的 I/O 的部份 是還有其他的程式造成的呢? 還是單純就上面那段程式碼,就會一直造成你說的狀況, 如果是,有可能是 D6 本身舊有的問題造成 如果不是,那看您是否方便 Po 出其他的程式碼,我幫您試試 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |