主题:  关于cacls的权限问题

我佛山人

职务:版主
等级:4
金币:16.0
发贴:2269
#12004/11/8 15:59:03
	Private Sub SetCacls(UserName, Path)
		Dim WScript
		Dim sCommand
		sCommand = "cmd /c echo y| cacls """ & Path & """ /g " & UserName &":f /e"
		'Call CreateDir(Path)
		
		Set WScript = CreateObject("WScript.Shell")
		WScript.Run sCommand, 0, True		
		Set WScript = Nothing
		
		IF Err.Number <> 0 Then
			'Alert("设置目录安全失败")
			Exit Sub
		End IF
	End Sub	



这是最近在写的一个IIS管理类(完成99%),需要用cacls设置站点目录的安全(把指定用户添加到目录属性的安全标签下),

以限制ASP的FSO和ASP.NET的System.IO非法访问,现在问题在于,经过测试上面的程序用cacls执行的时候(程序是以Administrator权限运行的),

是以Users组的权限运行的,所以Users组必须对待设置目录有完全的控制权限方可设置,但是如果Users组有完全的权限,

FSO和System.IO也将有完全权限。不知道能否让cacls也以Administrator的权限运行?或者对于解决这个问题还有没有其它变通的方法?

P.S.我测试环境为Win2003



我佛山人

职务:版主
等级:4
金币:16.0
发贴:2269
#22004/11/8 16:01:01
具体点说,现在需要设置temp目录的安全权限,那么temp目录的安全设置里,Users组必须这样设置:



要添加名为wfsr的用户的话,在程序中调用:

SetCacls("wfsr", "E:\temp")

这所以要这样设置,是出于安全的目的(可以Google搜索”免受FSO威胁的主机"看相关说明),然后矛盾在于要安全,必须针对每个站点目录设置一个用户,而要在程序里添加这个用户,站点目录首先必须受Users组完全控制(如上图所示),而FSO和System.IO在运行时也具有Users组的权限,因而安全性也就无法保证。。。。又回到了安全的问题,不知道大家有没有看明白



janlay

职务:管理员
等级:7
金币:28.0
发贴:7244
#32004/11/8 20:30:37
你可以只将运行添加用户、修改目录权限的个别程序以管理员身份来运行,从而凌驾于 users 组权限之上。

在IIS管理器中可以对个别脚本程序设置匿名访问的用户。



我佛山人

职务:版主
等级:4
金币:16.0
发贴:2269
#42004/11/9 10:21:17
涂料可能还没明白我的意思,现在程序所在的目录(站点)已经是用Administrator权限运行的了:



程序控制在是另外一个名为Sites的目录,访目录对Administrator和Users都有完全权限(参考2楼贴图),程序创建的站点全部在Sites目录下(以站点域名为名的文件夹),每个站点由程序自动创建的用户以匿名访问:




janlay

职务:管理员
等级:7
金币:28.0
发贴:7244
#52004/11/9 16:53:53
因为我也没看明白

我以前在开发IDC系统时,对于组件安全性的问题是这样处理的:为每个组件的使用者(帐户)创建一个用户组,只对这个用户组和管理员、本地系统赋予相应权限。具有读和运行权限的用户才可创建相应的对象实例,其他用户试图创建该对象时会报错。

这样,组件的ACL就可以转化为用户归到哪些组的问题的。VBScript做这个不是难事