在AD环境下利用插件“WINDOWS SERVER 2003 ACCESS-BASED ENUMERATION”与映射网络磁盘来实现使用不同的身份权限使用不同的共享文件夹(注意:本文中的身份权限是根据AD账号来区分的)。
1.下载好插件后。。安装一下
这个插件是利用NTFS分区的特性,把用户没有权限使用的文件夹都收起来,用户是没有方法看到自己没有权限使用的文件夹的。
2.安装完插件后。。新建一个文件夹(test),并将其共享。共享权限,安全根据实际需要进行设置

3.共享后,可以看到文件夹有个选项卡。。并将下面的
Enable access-based enumeration on this shared folder 打上勾

4.下面我们建立2个用户(wang // zhang),用于测试。

5.接着在共享文件夹里建立文件夹。。并设置好权限。。我设置的权限如下



其中:wang、zhang是私人文件夹,自己才能访问使用。public是公共文件夹,任何人都可以使用
最后实现:用wang登陆,看不到zhang的文件夹,只看得到wang和public这2文件夹,用zhang登陆,看不到wang的文件夹,只看得到zhang和public这2文件夹
{[csc:pagelist]}
6.接下来就是部署VBS登录脚本了,给AD用户映射网络磁盘,这个脚本是会判断是否存在相同的网络磁盘,不会重复生成网络磁盘的。
代码如下:
On error resume next
strRemotePath = \\192.168.1.1\test
strNewName = "for test"
strRemotePath = \\192.168.1.1\test
strNewName = "for test"
Set objNetwork = CreateObject("Wscript.Network")
Set colDrives = objNetwork.EnumNetworkDrives
For i = 0 to colDrives.Count-1 Step 2
Set objShell = CreateObject("Shell.Application")
strDriveLetter = colDrives.Item(i)
strName = objShell.NameSpace(strDriveLetter).Self.Name
strName = Left(strName,Len(strName)-5)
If strName = strNewName Then WScript.Quit
strDriveLetter = Chr(Asc(Left(colDrives.Item(i),1))-1) & ":"
Next
Set colDrives = objNetwork.EnumNetworkDrives
For i = 0 to colDrives.Count-1 Step 2
Set objShell = CreateObject("Shell.Application")
strDriveLetter = colDrives.Item(i)
strName = objShell.NameSpace(strDriveLetter).Self.Name
strName = Left(strName,Len(strName)-5)
If strName = strNewName Then WScript.Quit
strDriveLetter = Chr(Asc(Left(colDrives.Item(i),1))-1) & ":"
Next
If strDriveLetter= "" Then strDriveLetter="Z:"
‘ Section to map the network drive
Set objNetwork = CreateObject("WScript.Network")
objNetwork.MapNetworkDrive strDriveLetter, strRemotePath
Set objNetwork = CreateObject("WScript.Network")
objNetwork.MapNetworkDrive strDriveLetter, strRemotePath
‘ Section which actually (re)names the Mapped Drive
Set objShell = CreateObject("Shell.Application")
objShell.NameSpace(strDriveLetter).Self.Name = strNewName
Set objShell = CreateObject("Shell.Application")
objShell.NameSpace(strDriveLetter).Self.Name = strNewName
脚本用法:新建一个文本文档,复制代码,粘贴一下,其中strRemotePath = \\192.168.1.1\test 是服务器IP地址和共享文件夹名,strNewName = "for test" ,是映射磁盘后的名字,根据实际情况更改,然后保存为.vbs格式就OK了,我这里保存为test.vbs

然后用组策略设置用户登陆脚本,具体步骤如下
首先打开ADUC,找到用户所在组织单位,右击---属性

打开属性后,选择组策略选项卡-------新建

新建之后,在点编辑,就可以打开组策略编辑器了

然后在找到如图所示的登陆脚本,打开属性,单击【显示文件】

然后会弹出这个路径。。在把脚本文件复制到Logon文件夹内

接下来,我们在回到登陆属性,点击添加按钮,添加刚才复制到\\admin.com\SysVol\admin.com\Policies\{6CC847A2-8373-43AE-A784-45DA302BED92}\User\Scripts\Logon下的脚步文件test.vbs

点击【浏览】


接下来我们只要在服务器端刷新一下策略就OK了(如果不行,在客户端也刷新一下),
命令:gpupdate /force

{[csc:pagelist]}
下面我们测试一下,首先用wang登陆 (我是在XP下登陆的,XP已经加入域了)

看到有个叫for test的网络盘了吧。。打开看看

只看得到自己的私人文件夹和public文件夹


接下来用zhang登陆测试



我们只要把文件的权限设置好,就简单地映射出一个共享文件,就能使全公司的用户根据不同的需要使用不同的文件夹。