脚本:Cacls命令及其应用实例
Cacls,很强大的一个命令。其主要用途在于可以对各文件夹目录的用户权限进行快速设置。不论多少的文件夹,也不论多复杂的文件目录,一个命令即可搞定。
在往下看之前,请牢记:以下命令切不可对C盘及系统文件夹使用!!特此警告。除非你自以为是NB人士!
顺便加一句,如果发现重启后屏幕提示:autochk program not found, skipping autocheck。并马上进入蓝屏,提示:stop:c 000021a unknown hard error。恭喜,练功的绝好时机到了!不要到网上乱搜,没用的。也不必重装系统。解决办法见下一篇文章!
Cacls命令的使用格式如下:
显示或者修改文件的访问控制表(ACL)
Cacls filename [/T] [/E] [/C] [/G user:perm] [/R user [...]]
[/P user:perm [...]] [/D user [...]]
filename 显示 ACL。
/T 更改当前目录及其所有子目录中
指定文件的 ACL。
/E 编辑 ACL 而不替换。
/C 在出现拒绝访问错误时继续。
/G user:perm 赋予指定用户访问权限。
Perm 可以是: R 读取
W 写入
C 更改(写入)
F 完全控制
/R user 撤销指定用户的访问权限(仅在与 /E 一起使用时合法)。
/P user:perm 替换指定用户的访问权限。
Perm 可以是: N 无
R 读取
W 写入
C 更改(写入)
F 完全控制
/D user 拒绝指定用户的访问。
在命令中可以使用通配符指定多个文件。
也可以在命令中指定多个用户。
缩写:
CI - 容器继承。
ACE 会由目录继承。
OI - 对象继承。
ACE 会由文件继承。
IO - 只继承。
ACE 不适用于当前文件/目录。
下面举几个例子来看看Cacls命令如何使用。
1、在命令编辑器中使用
C:\Temp>Cacls %cd% /t /c /d samaria
是否确定(Y/N)?Y
处理的目录: C:\Temp
文件名、目录名或卷标语法不正确。
C:\Temp>Cacls %cd% /t /c /g samaria:f
是否确定(Y/N)?Y
处理的目录: C:\Temp
处理的文件: C:\Temp\text.txt
处理的目录: C:\Temp\新建文件夹
C:\Temp>
简析:
上述第一行命令将拒绝samaria用户访问c:\temp目录,第二个命令则重新赋予samaria用户完全控制权限。%cd%表示当前路径。其实这里可以用./.代替当前路径,即命令:calcs ./. /t /c /d samaria, 但两者(%cd%与./)又有其不同之处,前者是一个纯粹的路径,因此上面的两个命令可以连续执行,但./.不行。后者在命令执行时将自身定位到c:\temp目录下,但该目录已被拒绝访问,所以会出错,用Cacls ./. /t /c /g samaria:f命令将得到另一种结果(也不妨一试:)),此时应该用.(./)代替当前路径!如下:
C:\Temp>Cacls ./. /t /c /d samaria
是否确定(Y/N)?Y
处理的目录: C:\Temp
文件名、目录名或卷标语法不正确。
C:\Temp>Cacls . /t /c /g samaria:f
是否确定(Y/N)?Y
处理的目录: C:\Temp
处理的文件: C:\Temp\text.txt
处理的目录: C:\Temp\新建文件夹
C:\Temp>
2、在批处理文件中使用(下面为几个bat文件的具体内容)
(1.bat)
@Echo Y|Cacls %* /t /c /d samaria
@Echo off
(2.bat)
@Echo Y|Cacls %* /t /c /p samaria:f
@Echo off
(3.bat)
@Echo Y|Cacls ./. /t /c /d samaria
@Echo off
简析:
使用时将需要的文件拖动到1.bat或2.bat上,则该文件就会被拒绝访问(1.bat)或者给予控制权限(2.bat)。其中,Y|Cacls表示执行并将Y值赋予Cacls命令,%*是for命令的参数,在这里使用拖动方式即调用了for命令,*是通配符,拖动使用时,%*与%1等价,若改为%0会有什么结果?更多扩展参数可参考for命令的说明。
3.bat文件中采用了相对路径,因此使用它时不需要拖动文件,直接双击3.bat,即可将当前目录(即3.bat所在的文件夹)设置为“拒绝访问”。这个命令中,若将路径换成./或者../.,试试会有什么不同?但不要在不明白相对路径含义的情况下可随意更换路径符号,否则很可能出现意外的严重后果!
好了,上面基本上将Cacls命令的用法写完了,更复杂的就不会。这些天没事就学习和捣鼓了几个dos命令,将Cacls详细地写在这里,一来作备忘笔记,二来也可以给有需要的朋友一点参考。