即配置目錄的ACL,至於該如何配置權限,才能讓你的服務器是安全的,那得根據你自己的客觀實際了,而且,這也是商業秘
密。我這裡只是說明用腳本實現的方法。
有兩種方法可以完成這個任務(也許還有其他的方法),一種是采用第三方組件(我經常使用的是NTAccess.Permission,這
是個要MONEY的東東,但是我把系統時間改成1997年4月25日,這樣,它就不認為我過期了,等執行完腳本,我再改回1999年4月25
日,呵呵。另外一個是SA的FILEMANAGER,功能強大,但體積也大);另一種是在WSH裡調用NT的命令行cacls.exe,它的用法為
(摘自NT的幫助文件):
Cacls
顯示或修改文件訪問控制表(ACL)。
cacls filename [/t] [/e] [/c] [/g user:perm] [/r user [...]] [
/p user:perm [...]] [/d user [...]]
參數
filename
顯示文件或指定文件的訪問控制表 ACL 。
/t
在當前目錄及所有子目錄下改變指定文件的 ACL 。
/e
編輯 ACL,但不替換。
/c
繼續更改 ACL,並忽略錯誤。
/g user:perm
將訪問權授予指定用戶。Perm 可以是:
r 讀取
c 更改(寫)
f 完全控制
/r user
撤消指定用戶的訪問權。
/p user:perm
還原指定用戶的訪問權。Perm 可以是:
n 無
r 讀取
c 更改(寫)
f 完全控制
/d user
拒絕指定用戶的訪問。
可以在一個命令中指定多個文件或用戶。
使用NTAccess.Permission的一個例子如下:
Rem ----------------------------
Rem 定義常量
Rem ----------------------------
const ntpNoAccess = 1
const ntPRead = 2
const ntpWrite = 4
const ntpExecute = 8
const ntpDelete = 16
const ntpPermissions= 32
const ntpOwnership = 64
const ntpFileRights = 1
const ntpDirRights = 2
ntpChange = ntpRead + ntpWrite + ntpExecute + ntpDelete
ntpFull = ntpChange + ntpPermissions + ntpOwnership
Rem -----------------------------------------------
Rem 開始設置
Rem -----------------------------------------------
WScript.Echo "開始設置."
Set ntp = CreateObject("NTAccess.Permissions")
set acl = ntp.File("d:\test", true )
' add No Access entrIEs first
acl.Add "Users" , ntpNoAccess, ntpFileRights
acl.Add "Users" , ntpNoAccess, ntpDirRights
' now delete any ACE's we want to remove
acl.Delete "Everyone", ntpFileRights
acl.Delete "Everyone", ntpDirRights
' now add any other new ACE's
acl.Add "Administrators", ntpFull, ntpFileRights
acl.Add "Administrators", ntpFull, ntpDirRights
acl.Add "white", ntpChange, ntpFileRights
acl.Add "white", ntpChange, ntpDirRights
' finally remember to call save
acl.save
WScript.Echo "已經完成設置!"
使用cacls的一個例子如下:
Set WshShell = Wscript.CreateObject("Wscript.Shell")
userdir = "d:\userdate"
username = "white"
argu = userdir & " /t /e /p " & username & ":f"
WshShell.Run ("c:\winnt\system32\cacls " & argu)