您的位置:首页 > 其它

使用批处理实现分组多用户的创建和权限分配

2011-03-08 10:19 447 查看
做WINDOWS服务器的,可能经常要建立多个组如工程部CAD组,每个组由很多前缀相同的用户组成如CAD01,CAD02,建立好多用户后还必须共享为该组如CAD创建共享文件夹,并且为不同的用户分配权限。还有一些特殊情况是。针对这些特性,我写了一个批处理,基本可以解决服务器用户的创建和权限的分配,权限分配中还考虑了特殊情况,如每个用户组可以指定一个特殊用户(一般为部门老大),该用户可编辑删除该组下的所有文件,还可以指定一个特殊用户组(一般是老板和总经理),这个组的人员可以编辑所有共享文档中的文件。。。。
下面是CUSER.BAT的代码内容

[Copy to clipboard] [ - ]
CODE:
@echo off
pushd %~dp0
mode con cols=70 lines=20
COLOR 02
ECHO.
ECHO    ╔──────────────────────────────╗
ECHO    │                                                            │
ECHO    │                 鸿越多账号和创建权限分配                   │
ECHO    │              本程序由鸿越软件小布点编写制作                │
ECHO    │         本程序用于服务器多账号创建和权限自动分配           │
ECHO    │     本程序可以自由复制,使用和发布,版权归作者本人所有       │
ECHO    │  QQ:9399100 QQ群号:29946542 E-MAIL:xiaobudian528@126.com   │
ECHO    │                                                            │
ECHO    ╚──────────────────────────2010─㊣╝
ECHO.
ECHO  请不要来开,精彩马上就来
ping 127.0.0.1 -n 3 >nul
if "%1"=="" goto error
if "%1"=="/?" goto error
:group
cls
:: 如果是创建域组应用net group而不是net localgroup
echo 正在创建用户组%2
net localgroup %2 /add /comment:"%1">nul
:user
cls
echo 正在创建用户并添加到用户组%2中
for /l %%i in (1,1,%3) do (
  if %%i lss 10 (
    cls
    net user %20%%i %20%%i /passwordchg:no /expires:never /comment:"%1用户之%20%%i" /add>NUL
    net localgroup %2 %20%%i /add>NUL
  ) else (
    cls
    net user %2%%i %2%%i /passwordchg:no /expires:never /comment:"%1用户之%2%%i" /add>NUL
    net localgroup %2 %2%%i /add>NUL
  )
)
if "%4"=="" goto:end
:grant
cls
:: 这里仅创建用户组目录,NTFS权限cacls中/G user:perm是分配权限;/P user:perm是更改已有权限,如未指定权限则创建;/R user撤消指定用户权限;/D user拒绝指定用户权限;/E或/X表示编辑权限而不重新设置权限,如果不指定改参数,则会删除其他用户权限,可以用户免疫或者防止GHOST被删除等情况;/Y忽略提示;/C忽略拒绝访问错误;/T替换所有子目录和文件权限,新建目录时间无须指定,因为子目录自动继承
:: /p和/g参数的常规权限有只度R,更改C,完全控制F,特殊权限只对目录有效,主要包括更改权限的权限P,取得所有权O,读取属性和运行权限X,读取扩展属性E,W写权限,D删除权限
:: 还可以使用系统自带的cacls命令如echo y| cacls filename /g username : permission,另外也可以使用xcals.vbs脚本命令,详细参考http://harleypy.spaces.live.com/blog/cns!363F4717E24AA031!153.entry
:: NET SHARE不能同时指定多个用户的权限,所以使用WINNT的mtshare命令替换,也可以使用SHARE.VBS脚本,但注意的是如果已经共享则再使用该命令则无效,所以使用前建议先取消共享(一般新见)
echo 正在建立用户组目录和写入权限(可删除自己建立的文件夹)
set uf=%~4
if "%uf:~-1%"=="/" set uf=%uf:~0,-1%
if not exist %uf%/%2 md %uf%/%2>nul
if not "%tgroup%"=="" (set tcls1="%tgroup%":c) else (set tcls1=)
if not "%tuser%"=="" (set tcls2="%tuser%":c) else (set tcls2=)
if not "%tcls1%"=="" (set tshare1=/grant %tcls1%) else (set tshare1=)
if not "%tcls2%"=="" (set tshare2=/grant %tcls2%) else (set tshare2=)
set tcls=%tcls1% %tcls2%
set tshare=%tshare1% %tshare2%
xcacls "%uf%/%2" /g "%2":rw %tcls% /e /c /y
rmtshare //%COMPUTERNAME%/"%2"="%uf%/%2"  /GRANT "%2":C /GRANT "Administrators":F /GRANT "USERS":R %tshare% /REMARK:"%2 workgroup can change the files,but can't delete the folders">nul
goto end
:error
cls
echo --------------------------------------------------
echo 语法: cuser 用户说明 用户组 用户数量 存放盘符
echo 如果: 要建立工程部CAD组20人,并把目录保存到E:盘的话
echo 那么: cuser 工程部 CAD 50 E:
echo --------------------------------------------------
echo 请不要单独使用本批处理,任意键退出
pause>nul
exit
:end
cls
echo ---------------------------------------------
echo 完成所有用户的创建和权限的分配,请验证是否正确
echo 感谢使用鸿越软件,更多请访问hysoft.vedns.com
echo ---------------------------------------------

下面的批处理SAMPLE.BAT演示如何灵活调用这个批处理实现账号的创建和权限的分配

[Copy to clipboard] [ - ]
CODE:
@echo off
:: 这里可以设置特殊组,特殊组的成员可以删除编辑所有共享文档,但没有完整权限,每个部门可以设置一个特殊用户如部门老大可以对改组具有编辑和删除权限,如果没有特殊要求可以直接不要设置TGROUP和TUSER变量
set tgroup=pgroup
net localgroup %tgroup% /add /comment:"特殊组可删除和编辑所有共享文件"
:: 建立工程部共享目录示范,CAD01为特殊用户可以对CAD共享目录编辑,同时特殊组pgroup也具有同样权限
set tuser=CAD01
net localgroup %tgroup% administrator /add
call cuser 工程部 CAD 5 E:
:: 建立业务部共享目录示范,如果SAL01为老板娘,添加到特殊组,这里没有特殊用户
set tuser=
call cuser 业务部 SAL 3 E:
net localgroup %tgroup% SAL01 /add
:: 建立财务部共享示范,重新初始化权限,无特殊组和特殊用户可以编辑文挡,并且只有财务部人员才能查看编辑文档
set tuser=
set tgroup=
call cuser 财务部 ACC 2 E:
rmtshare //%COMPUTERNAME%/ACC /DELETE>NUL
rmtshare //%COMPUTERNAME%/ACC=E:/ACC /GRANT "ACC":C>NUL
pause

 http://bbs.wuyou.com/viewthread.php?tid=178629
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息