孤独的猫

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

脚本: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详细地写在这里,一来作备忘笔记,二来也可以给有需要的朋友一点参考。

posted on 2010-07-15 21:24  孤独的猫  阅读(5089)  评论(0编辑  收藏  举报