脚本: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 Adminstrator

是否确定(Y/N)?Y

处理的目录: C:\Temp

文件名、目录名或卷标语法不正确。


C:\Temp>Cacls %cd% /t /c /g Adminstrator:f

是否确定(Y/N)?Y

处理的目录: C:\Temp

处理的文件: C:\Temp\text.txt

处理的目录: C:\Temp\新建文件夹


C:\Temp>


简析:

上述第一行命令将拒绝Adminstrator用户访问c:\temp目录,第二个命令则重新赋予Adminstrator用户完全控制权限。%cd%表示当前路径。其实这里可以用./.代替当前路径,即命令:calcs ./. /t /c /d Adminstrator, 但两者(%cd%与./)又有其不同之处,前者是一个纯粹的路径,因此上面的两个命令可以连续执行,但./.不行。后者在命令执行时将自身定位到c:\temp目录下,但该目录已被拒绝访问,所以会出错,用Cacls ./. /t /c /g Adminstrator:f命令将得到另一种结果(也不妨一试:)),此时应该用.(./)代替当前路径!如下:


C:\Temp>Cacls ./. /t /c /d Adminstrator

是否确定(Y/N)?Y

处理的目录: C:\Temp

文件名、目录名或卷标语法不正确。


C:\Temp>Cacls . /t /c /g Adminstrator:f

是否确定(Y/N)?Y

处理的目录: C:\Temp

处理的文件: C:\Temp\text.txt

处理的目录: C:\Temp\新建文件夹


C:\Temp>



2、在批处理文件中使用(下面为几个bat文件的具体内容)


(1.bat)


@Echo Y|Cacls %* /t /c /d Adminstrator

@Echo off

 


(2.bat)


@Echo Y|Cacls %* /t /c /p Adminstrator:f

@Echo off

 


(3.bat)


@Echo Y|Cacls ./. /t /c /d Adminstrator

@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所在的文件夹)设置为“拒绝访问”。这个命令中,若将路径换成./或者../.,试试会有什么不同?但不要在不明白相对路径含义的情况下可随意更换路径符号,否则很可能出现意外的严重后果!




打赏 支付宝 微信