發表文章

目前顯示的是 6月, 2007的文章

在WSS Event中提昇權限

圖片
我有一個清單, 其中一個欄位希望其值能唯一(其實就是資料庫的鍵值), 但在WSS中找不到欄位可以設定成唯一值的方式, 只好在清單的新增事件中自己寫Event Receiver來檢查是否已有相同的值, 若有相同值則不允許存入! 結果因為使用者反應不希望其他人可以看到他輸入的資料, 所以我將該清單的版本控制中的需要核准內容打開, 並設成只有可以核准的人及作者本人可以看到項目: 沒錯! 如此一來只有作者本人及管理人可以看到項目; 但如此一來, A使用者輸入鍵值001, B使用者也看不到, 而且Event Receiver也會以B使用者的權限執行, 同樣查不到, 結果就讓B使用者也可以輸入鍵值001! 這樣的結果不是我們要的! 找了一下資料, 發現使用提昇權限的方式可以讓Event Receiver利用系統的權限執行, 所以可以查到所有人的資料, 如此雖然B使用者看不到001這個項目, 但在按下新增時, Event Receiver會查到已有001這個項次存在: // 查詢並取得清單中code欄位等於新值的項目 SPSecurity.RunWithElevatedPrivileges(delegate() { SPQuery query = new SPQuery(); query.Query = " " + code + " "; SPSite site = new SPSite(properties.WebUrl); SPWeb web = site.OpenWeb(); SPList list = web.Lists[properties.ListId]; // "Test" SPListItemCollection items = list.GetItems(query); if (items.Count > 0) { properties.ErrorMessage = "已存在相同code:" + code + "! Ya!2 "; properties.Cancel = true; } });

使用Script來管理AD

圖片
我們現在使用PIX防火牆, 配合IAS來管制上外網的權限, 也就是在AD的使用者帳戶資料中, 利用撥入頁面的允許存取或拒絕存取來管制使用者可以上外網與否! 現在要改變管制上外網的方式, 要先將所有使用者的允許存取改成拒絕存取, 如果要一個一個的按, 那實在很不人道, 所以研究一下, 找到一個VBScript可以一次將所有的使用者的撥入權限全都改成拒絕存取, 如下: Const ADS_PROPERTY_UPDATE = 2 ' multiple users Set objOU = GetObject(" ldap://cn=Users,dc=princo,dc=com,dc=tw/ ") ' Filter on user objects.'objOU.Filter = Array("user") ' Enumerate user objects. For Each objUser In objOU 'msgbox("name:"+objUser.name) On Error Resume Next ' Allow dialin. objUser.Put "msNPAllowDialin", False ' Save changes. objUser.SetInfo Next msgbox("Finished!")

使用PIX設定sqlnet的注意事項

我有一台主機放在DMZ區, 可是它要存取放在INSIDE的Oracle資料庫主機, 由於DMZ的安全層級比INSIDE小, 當然必須要明確的使用Access list來設定其權限。 1. 先使用static指令設定static nat static (inside,dmz) 10.2.10.222 10.10.10.14 netmask 255.255.255.255 2. 再設定其access list access-list acl_dmz extended permit tcp host 10.2.10.3 host 10.2.10.222 eq sqlnet 這樣我的主機(10.2.10.3)應該就可以存取資料庫主機(10.10.10.14)! 可是在測試連線資料庫主機時, 卻一直無法成功! 於是再設了一個Access list: access-list acl_dmz extended permit icmp any any 然後ping資料庫主機, 卻可以正常的ping到! (ping 10.2.10.222) 再多設一個Access list: access-list acl_dmz extended permit tcp host 10.2.10.3 host 10.2.10.222 然後由主機(10.2.10.3)連線到資料庫主機的資源分享, 也可以成功的存取檔案! 但是資料庫連線就是無法成功! 很奇怪! 於是我使用netstat -an指令, 查看資料庫連線時的情形, 發現: TCP 10.2.10.3:1146 10.2.10.222:1521 TIME_WAIT TCP 10.2.10.3:1147 10.10.10.14:2326 SYN_SENT 確實看到無法建立sqlnet(1521)的連線。原因看來就是在建立TCP連線時, 就有問題了(三方交握的第一個封包就過不去, 而且資料庫主機的位址變成真正的位址, 而不是轉址後的位址!) 這時候想到之前有看到Application Inspection的文件, 於是作了以下設定: (PIX 7.0) policy-map global_policy class inspection_default inspect sq

IIS 除錯工具

之前錯過的研討會主題! 除錯工具網址: http://www.microsoft.com/windowsserver2003/iis/diagnostictools/default.mspx IIS WebCast: http://www.iiswebcastseries.com/ DebugDiag: http://www.iis.net/downloads/default.aspx?tabid=34&g=6&i=1286