前言(感觉要说的东西很多,就来个前言吧)
作为域管理员,不能给普通用户太大的权限,一般把域帐号加入本地的“Power users”组就可以了。但是要注意一些问题。有时候用管理员安装的软件,域帐号却无法运行,这可能是域帐号对软件的安装目录缺少完全控制权限。(这一般是因为安装软件的打包设计比较烂,根本没有安装成所有用户可用的功能)。这时通常的做法是切换至管理员帐号(本地管理员或域管理员),选择“软件安装目录”,右键“共享和安全”,在“安全”选项卡,点“添加”,选择“域帐号”,授予域帐号完全控制权限。然后再切换回域帐号,看一下软件能否正常运行。这个过程非常繁琐,等待的时间很长,效率很低,那么有什么简单的方法来实现呢?如果你对此感兴趣,就继续看吧!
一、 一、先说一下如何在普通用户权限下运行程序。
方法有几种,第一种利用Windows自带的Runas命令。第二种利用第三软件来实现,例如:CPAU等。
1、Runas命令,在使用该命令时,会弹出对话框,输入密码后,即可执行命令。
Runas命令用法:
RUNAS [ [/noprofile | /profile] [/env] [/netonly] ]
/user:<UserName> program
RUNAS [ [/noprofile | /profile] [/env] [/netonly] ]
/smartcard [/user:<UserName>] program
/noprofile 指定不应该加载用户的配置文件。
这会加速应用程序加载,但
可能会造成一些应用程序运行不正常。
/profile 指定应该加载用户的配置文件。
这是默认值。
/env 要使用当前环境,而不是用户的环境。
/netonly 只在指定的凭据限于远程访问的情况下才使用。
/savecred 用用户以前保存的凭据。
Windows XP Home Edition 上没有这个选项。
该选项会被忽略。
/smartcard 如果凭据是智能卡提供的,则使用这个选项。
/user <UserName> 应使用 USER@DOMAIN 或 DOMAIN\USER 形式
program EXE. 的命令行。请参阅下面的例子
例如:
> runas /profile /env /user:mydomain\admin "mmc %windir%\system32\dsa.msc"
> runas /env /user:[email protected] "notepad \"my file.txt\""
>Runas /netonly /user:domain\zhangsan cmd
解释一下上面的命令。以域名“domain”域管理员帐号“zhangsan”运行“CMD”命令。这样就可以在这个CMD命令窗口中输入要运行的程序,例如:输入Compmgmt.msc,就以域管理员身份打开了计算机管理。/netonly 参数是指不在本地生成“zhangsan”的本地配置文件。
2、 2、CPAU是具有Runas功能的一个第三方程序,可以在该程序命令中指定域管理员的帐号和密码,这样可以避免CMD中输入命令,并且CPAU还支持把命令写入一个加密的文本文件中,再通过执行该文件文件来执行命令,保密程序更高了。
CPAU 用法:
CPAU -u 用户 [-p 密码] -ex "程序或命令" [参数]
用户 用于登录的用户名(一般指管理员)例:Domain\Domainadm
密码 用户的密码[密码]
程序或命令 要执行的程序或命令
参数:
-profile 使用本地登录配置文件代替网络登录
-localwithprofile –profile的别名
-lwp -profile的别名
-localwithoutprofile 使用本地登录但不加载配置文件
-lwop -localwithoutprofile的别名
-k 使用命令cmd /k 关闭打开的窗口
-c 程序执行完成后使用命令cmd /c 关闭打开的窗口
-pipepwd 指定传入密码的方法
-enc 为最终用户加密任务
-dec 解密任务
-file 指定创建或执行的文本文件
-wait 等待进程完成
-outprocexit 同-wait一起使用,使用 errorlevel参数来代替CPAU的错误提示
-cwd x 指定工作目录
-hide 新进程隐藏运行
-title x 指定命令窗口的标题
-crc file[,file,file] 这个参数允许在加密文件文件中加入CRC错误校验信息。当
CRC校验出错时,提醒所执行的文件不是要运行的文件,重新选择文件。
-nowarn 网络登录时不输出警告信息
示例1:
cpau -u joehome\joe -p logon -ex "perl cleanup.pl" -lwp
以joehome\joe用户运行脚本perl cleanup.pl。
示例2:
cpau -u joehome\joe -p logon -ex "perl cleanup.pl" -enc -file cleanup.job
把以joehome\joe用户运行脚本perl cleanup.pl 的命令写入cleanup.job中
示例3:
cpau -dec -file cleanup.job -lwp
执行命令文件nup.job
示例4:
cpau -u joehome\joe -p logon -ex "perl cleanup.pl" -wait -lwp
以joehome\joe用户运行脚本perl cleanup.pl并等待进程完成
示例5:
cpau -u joe -p logon -ex notepad.exe -lwp
以joee用户运行notepad.exe
示例6:
cpau -u joehome\joe -p logon -ex logonscript.cmd -lwp
在当前目录以joehome\joe 运行logonscript.cmd 。
示例7:
cpau -u joehome\joe -p logon -ex logonscript.cmd -lwp -cwd c:\temp
在目录c:\temp中以joehome\joe 运行logonscript.cmd 。
示例8:
cpau -u administrator -p password -ex notepad -file start_notepad.txt -enc
cpau -file start_notepad.txt –dec
说明一下:第一行命令把“cpau -u administrator -p password -ex notepad”加密写入文件
start_notepad.txt,第二行命令通过执行start_notepad.txt,来执行命令“cpau -u administrator
-p password -ex notepad”。
二、 二、介绍一下Xcacls.vbs脚本的功能及用法
要设置和使用 Xcacls.vbs,请按照下列步骤操作:
1. 1、从以下 Microsoft 网站获得 Xcacls.vbs 的最新版本:
http://download.microsoft.com/download/f/7/8/f786aaf3-a37b-45ab-b0a2-8c8c18b... (http://download.microsoft.com/download/f/7/8/f786aaf3-a37b-45ab-b0a2-8c8c18b...)
2. 2、双击“Xcacls_Installer.exe”。当提示您提供放置提取文件的位置时,请指定一个位于计算机的搜索路径设置中的文件夹(如 C:\Windows)。
3. 3、将默认脚本引擎从 Wscript 更改为 Cscript。(Xcacls.vbs 脚本最适合在 Cscript 下运行。)为此,请在命令提示符下键入以下内容,然后按 Enter:
cscript.exe /h:cscript
注意:将默认脚本引擎更改为 Cscript 只影响脚本向屏幕写入的方式。Wscript 根据“确定”对话框分别写入每一行。Cscript 将每一行写入命令窗口。如果您不想更改默认脚本引擎,则必须使用以下命令运行脚本
cscript.exe xcacls.vbs
但是,如果将默认脚本更改为 Cscript,则可以使用以下命令运行该脚本:
xcacls.vbs
4. Xcacls.vbs 命令的语法
Xcacls.vbs 目录或文件 /g 域名\域用户:权限;高级权限 参数 /e /t /c /R 用户 /D 用户: 权限;高级权限……
目录或文件名 [必须]单独使用该参数,列出目录或文件的权限
/f 改变所有文件的权限,不包括子目录,除非指定了/t,不能应用于目录;
/s 改变所有子目录的权限,不包括下面的文件,除非指定了/t,不能应用于目录;
/t 操作对指定文件夹下所有文件及文件夹有效。该参数不能应用于文件;
/e 编辑权限列表,增加权限,而不是用批定的权限代替权限列表;
/g 用户:权限;高级权限 指定要授予的用户,并授予指定的权限
权限:
F 完全控制
M 修改
X 读取执行
L 列出文件夹内容
R 只读
W 写入
特定权限(只用于文件)
F 完全控制
M 修改
X 读取执行
R 只读
W 写入
高级权限
D 取得所有权
C 更改权限
B 读取权限
A 删除
9 写入属性
8 读取属性
7 删除子文件夹文件
6 遍历文件夹/运行文件
5 写入扩展属性
4 读取扩展属性
3 创建文件夹/附加数据
2 创建文件/写入数据
1 列出文件夹/读取数据
/R 用户 把指定的用户从权限列表中移除
/D 用户:权限;高级权限 拒绝指定用户的权限(具体权限同/g 参数)
/O 用户 授予指定用户或组取得所有权
/I 参数 继承标志。缺省是不会继承权限的。
参数:
Enable 打开继承标志。
Copy 关闭继承标志,并复制权限。
Remove 关闭继承标志,不复制权限。
/L 文件名 指定记录命令执行情况的文本文件。指定的文件如果不在当前目录,
需包括路径,如果文件不存在,则创建该文件。文件存在,则把记录追加至
该文本文件。文件扩展名一般为“log”。
/Q 打开静默模式,该模式不会显示输出至屏幕。缺省是显示输出。
/Debug 打开调试模式,缺省关闭。将输出更多的信息。
/Server 计算机名 输入远程计算机名
/User 远程连接的用户名
/Pass 远程连接用户的密码
可以使用通配符:* ?
5. 下列 Xcacls.vbs 命令提供 Xcacls.vbs 用法的一些示例:
>xcacls.vbs c:\test\ /g domain\testuser1:f /f /t /e
该命令可编辑现有权限。它授予 Domain\TestUser1 完全控制 C:\Test 下所有文件的权限,遍历 C:\Test 下的子文件夹,然后更改找到的所有文件。该命令不触及目录。
xcacls.vbs c:\test\ /g domain\testuser1:f /s /l "c:\xcacls.log"
该命令可替换现有权限。它授予 Domain\TestUser1 完全控制 C:\Test 下所有子文件夹的权限,而且记录到 C:\Xcacls.log。该命令不触及文件,并且不遍历目录。
xcacls.vbs c:\test\readme.txt /o "machinea\group1"
该命令将自述文件的所有者更改为组 MachineA\Group1。
xcacls.vbs c:\test\badcode.exe /r "machinea\group1" /r"domain\testuser1"
该命令撤消 MachineA\Group1 和 Domain\TestUser1 的 C:\Test\Badcode.exe 权限。
xcacls.vbs c:\test\subdir1 /i enable /q
该命令将打开文件夹 C:\Test\Subdir1 上的继承。该命令将取消任何屏幕输出。
xcacls.vbs serverashareztestpage.htm /p "domain\group2":14
此命令通过使用 Windows Management Instrumentation (WMI) 远程连接到 ServerAShareZ。然后获取用于该共享的本地路径,在该路径下,它更改 Testpage.htm 上的权限。它原封保留 Domain\Group2 的现有权限,但是添加权限 1(读取数据)和权限 4(读取扩展属性)。该命令放弃此文件上的其他权限,原因是未使用 /e 开关。
xcacls.vbs d:\default.htm /g "domain\group2":f /server servera /user
Servera\admin /pass password /e
该命令使用 WMI 作为 ServerA\Admin 远程连接到 ServerA,然后将Default.htm 上的完全权限授予 Domain\Group2。Domain\Group2 的现有权限丢失,但保留文件上的其他权限。
三、下面进入主题:在域普通用户环境下执行脚本Xcacls.vbs更改目录权限。
1、准备工作:准备一台加入域环境的计算机,创建一个域帐号Test。创建一个具有域管理员权限的用户Domainadm,其密码为123。在客户机上创建一个目录在d:\1,并创建几个文件,域名为Domain、把目录d:\1授予域用户Test完全控制权。
命令(以后的命令都是在CMD中输入):
Runas /netonly /user:Domain\Domainadm "Cscript.exe //nologo \".\xcacls.vbs\" d:\1 /g Domain\test:f /e /t"
说明:Runas命令运行的程序如果用参数应该用""括起来。注意引号里面的用法,\".\xcacls.vbs\"这样使用的目录是把xcacls.vbs文件定位到当前目录,所以在打开CMD窗口后,要把路径切换至xcacls.vbs文件所在的目录,不能会出现找不到文件的错误。另外如果有的目录或用户名中间有空格,应用\" \"这样一对符号括起来,不然命令会执行失败。
3、把目录d:\1授予本地“Power users”组完全控制权。
Runas /netonly /user:Domain\Domainadm "Cscript.exe //nologo \".\xcacls.vbs\" d:\1 /g \"BUILTIN\Power Users\":f /e /t"
注意:Power Users组中间有空格,需用符号\" \"括起来,本地组应该使用BUILTIN ,就是这样的形式:\"BUILTIN\Power Users\"。
4、我把域用户Test用户加入本地“Power users”组,再把D盘授予本地“Power users”组完全控制权限,这样域用户Test就拥有了对本地D盘的完全控制权限。
把域用户Test加入本地“Power users”组的脚本:
把下面的代码写入一个文本文件中,并更名为“将域帐号加入本地Power组.VBS”
Dim NPCName,DUser
Set objnet = CreateObject ("WScript.Network")
NPCName = InputBox ("当前的计算机名是:" & objnet.ComputerName,"输入目标计算机名")
DUser = InputBox ("","输入域用户帐号名")
strComputer = NPCName
Set objGroup = GetObject("WinNT://" & strComputer & "/Power Users")
Set objUser = GetObject("WinNT://rybb/" & DUser)
objGroup.Add(objUser.ADsPath)
四、使用CPAU在域普通用户环境下执行脚本Xcacls.vbs更改目录权限。
示例1:把目录d:\1域授予用户Test完全控制权。
CPAU -u Domain\Domainadm –p 123 –ex "Cscript.exe //nologo \".\xcacls.vbs\" d:\1 /g Domain\test:f /e /t /q" –lwop –wati –nowarn –enc –file ChangePower.job
CPAU –file ChangePower.job –dec
示例2:把目录d:\1授予本地“Power users”组完全控制权。
CPAU -u Domain\Domainadm –p 123 –ex "Cscript.exe //nologo \".\xcacls.vbs\" d:\1 /g \"BUILTIN\Power Users\":f /e /t /q" –lwop –wati –nowarn –enc –file ChangePower.job
CPAU –file ChangePower.job –dec
五、最后使用批处理和脚本做一个通用的批处理
批处理要求:把指定的域用户授予本地指定目录的完全控制权(指定权限感觉没有太大意义,不过要做还是还简单的,有兴趣的自己做下看)。
1、下面是我的批处理内容:(使用Runas实现)
“授予普通用户对目录的完全控制权限.cmd”的内容如下:
@echo off
Rem 输入域帐号名并赋值给变量Duser
set Duser=
set /p Duser=请输入域帐号名(例:Domain\Domainadm):
Rem 输入目录路径并赋值给变量DPath
set DPath=
set /p DPath=请输入目录名称或直接把目录拖放至CMD窗口:
@echo off
Rem 获取当前路径并赋值给变量Upath
for /f "delims=" %%i in ('cd') do set Upath=%%i
Rem 使用用户Domain\Domainadm运行,授予用户Duser目录DPath的完全控制权。
Rem 采用静默方式运行,并把运行情况写入当前目录文件ChangePower.log中。
start /w runas /user:Domain\Domainadm "Cscript.exe //nologo \".\xcacls.vbs\" %DPath% /g %DUser%:f /e /t /q /l %Upath%\ChangePower.log"
Rem 用记事本打开文件ChangePower.log
notepad.exe %Upath%\ChangePower.log
exit
2、使用CPAU实现该功能的批处理:
“授予普通用户对目录的完全控制权限.cmd”的内容如下:
@echo off
Rem 输入域帐号名并赋值给变量Duser
set Duser=
set /p Duser=请输入域帐号名(例:Domain\Domainadm):
Rem 输入目录路径并赋值给变量DPath
set DPath=
set /p DPath=请输入目录名称或直接把目录拖放至CMD窗口:
@echo off
Rem 获取当前路径并赋值给变量Upath
for /f "delims=" %%i in ('cd') do set Upath=%%i
Rem 使用用户Domain\Domainadm运行,授予用户Duser目录DPath的完全控制权。Rem 采用静默方式运行,并把运行情况写入当前目录文件ChangePower.log中。
%Upath%\cpau -u rybb\tangzhigang -p heroes33 -ex "Cscript.exe //nologo \".\xcacls.vbs\" %DPath% /g %DUser%:f /e /t /q /l %UPath%\ChangePower.log" -lwop -nowarn
Rem 用记事本打开文件ChangePower.log
notepad.exe %Upath%\ChangePower.log
exit
注意:使用上面的脚本时,如果是整个盘,如D盘,在输入路径时,要输入“D:”,而不能输入“D:\”。
本文为原创,转载请标明出处。——Longxiao