文書の過去の版を表示しています。
アクセス制御リスト (ACL: Access Control List) の技術概要 †
http://msdn.microsoft.com/ja-jp/library/ms229936(VS.80).aspx
NTFS のセキュリティ機能と落とし穴 http://www.ipa.go.jp/security/awareness/vendor/programming/b08_03_main.html
WSH ウォークスルー (DACLを操作する) http://msdn.microsoft.com/ja-jp/library/cc364508.aspx
ユーザーをASPで作成
http://winofsql.jp/VA003334/smalltech040218163326.htm ↑ ファイルのアクセス許可設定のサンプル
c:\scripts\test.txt のアクセス許可を変更します
Option Explicit Dim instance Dim strMoniker Dim objDescriptor Dim retval Dim DACL Dim controlFlags Dim accessmask Dim Group Dim Owner Dim SACL Dim number_of_trustees Dim trustee_Domain Dim trustee_Name Dim trustee_Sidstring Dim i Dim strACL
アクセス権のマスク
Const FULLACCESS = 2032127
フルアクセス(All)
Const READ = 1179817 読み取り(RX)
Const UPDATE = 1245631
変更(RWXD)
Const R = 1179785 特殊なアクセス権(R)
Const W = 1179926
特殊なアクセス権(W)
Const X = 1179808 特殊なアクセス権(X)
Const D = 65536
特殊なアクセス権(D)
Const P = 262144 特殊なアクセス権(P)
Const O = 524288
特殊なアクセス権(O)
Const ImpLevel = “{impersonationLevel=impersonate}” Const namespace = “!root\cimv2:” Const objectpath = _
"Win32_LogicalFileSecuritySetting=""c:\\scripts\\test.txt""" strMoniker = "winmgmts:" & ImpLevel & namespace & objectpath
Set instance = GetObject(strMoniker) If instance Is Nothing Then
MsgBox ("インスタンスを取得出来ません。") WSCript.Quit
End If
retval = instance.getsecuritydescriptor(objDescriptor)
Set DACL = objDescriptor.Properties_.Item(“dacl”) ' get dacl controlFlags = objDescriptor.Properties_.Item(“controlflags”) Set Group = objDescriptor.Properties_.Item(“Group”) Set Owner = objDescriptor.Properties_.Item(“Owner”) Set SACL = objDescriptor.Properties_.Item(“Sacl”)
number_of_trustees = UBound(DACL.Value) WScript.Echo “ドメイン名\ユーザ名:SID\アクセス権\アクセスマスク” For i = 0 To number_of_trustees
Set trustee_Domain = DACL.Value(i).Properties_.Item _ ("trustee").Value.Properties_.Item("Domain") Set trustee_Name = DACL.Value(i).Properties_.Item _ ("trustee").Value.Properties_.Item("Name") Set trustee_Sidstring = DACL.Value(i).Properties_.Item _ ("trustee").Value.Properties_.Item("Sidstring")
accessmask = DACL.Value(i).Properties_.Item _
("AccessMask").Value ' Save the accessmask
Select Case accessmask
Case FULLACCESS strACL = "フルコントロール(All)" Case READ strACL = "読み取り(RX)" Case UPDATE strACL = "変更(RWXD)" Case Else strACL = accessmask End Select
WScript.Echo trustee_domain & “\” & trustee_name & “:” & trustee_Sidstring & “:” & strACL & “:” & accessmask
If trustee_name = “Administrators” Then
'アクセス許可の設定 'Administratorsを「読み取り」にする objDescriptor.Properties_.Item("dacl").Value(i).Properties_.Item _ ("AccessMask").Value = R End If
Next
retval = instance.setsecuritydescriptor(objDescriptor) If retval = 0 Then
MsgBox "成功しました。"
Else
MsgBox "セキュリティ設定を変更できませんでした。"
End If Set instance = Nothing WSCript.Quit