本文是为虚拟机用户使用服务器共享目录而作,其他情况下也可使用。主要目的就是在服务器上批量设置多个用户的共享目录并设置好权限。
在一机两网的使用过程中,如果虚拟机系统崩溃,往往造成虚拟机中文件丢失的情况,而且删除虚拟机的文件后,虚拟机所占用的空间并不能减少,长此以往虚拟机文件体积越来越大,出现问题的几率也大大增加。为了方便一机两网用户的使用,可以考虑在文件服务器上设置共享文件夹,虚拟机用户将共享文件夹映射为网络驱动器,将文件保存在服务器上。为实现这个目的并保证安全性,需要达到以下要求:
1、 在服务器上为每个虚拟机用户建立相应的文件夹,以用户的域账号为文件夹名称,每个用户只能对自己的文件夹拥有完全控制的权限,不能读写其他用户的文件夹。
2、 控制每个虚拟机用户的文件夹容量及文件类型,避免保存文件过多造成空间不够的情况,禁止保存exe等包含风险的文件。
虽然在服务器上可以用图形化的属性窗口建立共享文件夹,但在用户比较多的情况下,手动为每个用户建立文件夹并且设置权限就比较繁琐,可以利用命令行的形式批量设置文件夹及其权限。本实例文件服务器使用Windows 2008 Storage Server系统,在win2003系统中也可实现大部分功能(“基于访问权限的枚举”功能默认不可用,必须安装插件才可实现)。步骤如下:
一、 建立一机两网用户组
1、 在文件服务器上建立一个名为YJLWUser的用户组
打开服务器管理器,左侧菜单选择“配置“-”本地用户和组“-”组“,右键单击选择”新建组“
2、 向此组中添加一机两网用户,添加的时候需要输入有权限的域用户名及密码。
3、 添加用户的时候,可以以分号分隔多个用户。
4、 点击“检查名称”,如果搜索到多个符合条件的用户,则需要选择是哪个用户。
5、 检查名称后,点击确定。
6、 注意,直到下一次用户登录时对用户的组成员关系的更改才会生效。
7、 在用户名已经确定的情况下,可以直接使用以下命令来添加用户:
net localgroup yjlwuser qdc/zhang_san /add
删除用户时,使用以下命令:
net localgroup yjlwuser qdc/zhang_san /delete
二、 建立共享文件夹并设置权限
1、 在文件服务器的本地硬盘新建一个名为YJLWShare的文件夹,右键单击,选择共享,添加YJLWUser用户组的共享权限,权限级别设置为“共有者”,Win2008的共享权限为,所有者是这个文件夹的主人一般是系统管理员,共有者次之,可修改文件和编辑和创建等,参与者再次之,仅仅读写修改,读者最次,仅仅读取。
2、 设置安全属性
系统的权限分为共享权限和NTFS权限,NTFS的权限级别比共享权限的级别高。因此重点在设置NTFS权限。
单击高级
单击编辑
取消包括从该对象的父项继承的权限。因为后面要对其中的子目录分别设置权限,因此要取消继承的权限。
会要求将当前权限复制到目前的文件夹上,单击复制即可
确定
这样的情况下,YJLWUser组用户对YJLWShare目录有完全控制权限,用户可以在YJLWShare目录下新建文件夹或文件,这是不符合要求的,因此还需要修改YJLWUser用户组的权限。
这样修改后,用户只可以列出YJLWShare目录下的文件夹,但不能在YJLWShare目录下新建文件夹或文件了。
修改后,如图所示:
3、 获取YJLWUser组的所有用户名。
在YJLWShare目录下,新建一个记事本文件GetAllUser.txt,输入以下命令:
net localgroup YJLWUser>user1.txt
find /v "命令成功完成" user1.txt>user2.txt
for /f "skip=8 tokens=*" %%i in (user2.txt) do @echo %%i>>user.txt
del user1.txt
del user2.txt
将记事本后缀名改为bat运行。
生成的user.txt文件里包含了YJLWUser组中的所有用户。
4、 利用dos命令建立目录及设置权限
新建一个Excel文件,复制user.txt里面的内容,粘贴到一列中,再复制相同的一列,因为是域用户,用户名前都有QDC/前缀,利用替换功能,把第二列的QDC/删除。
复制所有内容,另存为alluser.txt。
Dos窗口中,输入以下命令:
F:/YJLWShare>for /f "tokens=1,2" %i in (alluser.txt) do md %j
即可按照用户名生成对应的目录
再输入以下命令:
F:/YJLWShare>for /f "tokens=1,2" %i in (alluser.txt) do echo y|cacls %j /g %i:f
即可设置好相应目录的权限,每个用户只能对自己的文件夹拥有完全控制权,而不能读写其他用户的文件夹。
在使用cacls命令时,/g参数表示编辑并替换以前的ACL,如果要编辑而不替换,应加/e参数。加y参数是因为在设置权限的时候需要用户确认,加y参数后可自动确认。f表示拥有所有权限。
这样设置后,服务器管理员账户也不能访问这些共享文件夹。如果需要管理员拥有对共享文件夹的访问权限,则需编辑ACL而不是替换,应使用以下命令:
F:/YJLWShare>for /f "tokens=1,2" %i in (alluser.txt) do cacls %j /e /g %i:f
F:/YJLWShare>for /f "tokens=1,2" %i in (alluser.txt) do cacls %j /e /r user
添加指定用户的权限,然后将user用户组的权限移除。/r表示移除user组的权限,必须加/e参数才能起作用。
或者使用以下命令,将管理员的权限添加上:
F:/YJLWShare>for /f "tokens=1,2" %i in (alluser.txt) do echo y|cacls %j /g %i:f
F:/YJLWShare>for /f "tokens=1,2" %i in (alluser.txt) do echo cacls %j /e /g administrator:f
设置只有指定用户和管理员账户拥有对共享文件夹的权限。
5、 可以使用icacls命令对ACL进行保存或还原。
icacls命令与cacls命令的用法基本类似,功能上进行了一些增强。使用icacls命令保存ACL如下:
icacls f:/YJLWShare /save AclFile /t
- 将 F:/YJLWShare及其子目录下所有文件的ACL 保存到 AclFile。/t参数指示在以该名称指定的目录下的所有匹配文件/目录上执行此操作。
还原ACL如下:
icacls f:/YJLWShare /restore AclFile
- 将还原 F:/YJLWShare 及其子目录下存在的 AclFile 内所有文件的 ACL