cacls 使用方法

C:\>cacls /?
显示或者修改文件的访问控制表(ACL)

CACLS filename [/T] [/E] [/C] [/G user:perm] [/R user [...]]
               [/P user:perm [...]] [/D user [...]]

   filename      显示 ACL。

(fileame为文件路径+具体文件名;例:cacls c:\test.txt,他就会显示该文件的所有用户权限了。不懂 就看图1)
Highslide JS
另外大家可能看到BUILTIN\Administrator,可能有人会奇怪,这个BUILTIN是什么意思,他的意思就是“表示内建帐户。也即表示Windows的Administrator用户组。”
(图1)


   /T            更改当前目录及其所有子目录中指定文件的 ACL。
(/T就是修改当前以及在其目录下的所有子目录的相应文件权限,比如我建立了
c:\1\1.txt
c:\1\2\1.txt
c:\1\2\2.txt
三个文件,如果我用cacls c:\1\1.txt /t /g:everyone:r,那么他的效果就如图2图3图4,本来我是处理的c:\1\1.txt,但是因为加了/t这个参数,在c:\1\目录下所有子目录下的1.txt权限就都被更改了。
)
Highslide JS
图2 c:\1\1.txt

Highslide JS
图3 c:\1\2\1.txt

Highslide JS
图4 c:\1\2\2.txt


   /E            编辑 ACL 而不替换。
(这个/E对于我来说有点咬文嚼字了,编辑,而不替换,什么意思呢就是说,比如c:\test.txt的权限,如图5)

Highslide JS
图5

大家都看到他的权限了吧,那么/e参数起什么作用呢?我们来修改下Administrator的权限。
命令是cacls c:\test.txt /e /p Administrator:r ,处理过的文件看图6
Highslide JS

图6,和图5比较一下,因为有/e参数,他只是修改了Administrator的权限。


   /C            在出现拒绝访问错误时继续。
(这个就好解释了,就是不管命令是否有错,都继续执行。就不加图做演示了。)

   /G user:perm  赋予指定用户访问权限。
                 Perm 可以是: R  读取
                              W  写入
                              C  更改(写入)
                              F  完全控制
(/G呢就是给指定用户访问权限,而且会删除该文件上其他用户的所有权限,比如我那个更改HOSTS文件
权限的命令吧,就是/g everyone:r 用了这个命令,就会把hosts文件上的所有用户只替换成你指定的用户
权限,并把其他用户全部删除。那么看下演示,还是c:\test.txt,先看下它没经过/g处理的时候,如图7)

Highslide JS
图7 c:\test.txt没经过/G参数处理时候的图。

再看图8,是用/G参数处理过的,处理命令为echo y|cacls c:\test.txt /g Administrator:r

Highslide JS
图8,用echo y|cacls c:\test.txt /g Administrator:r命令处理过的效果。

用图8和图7一对比,知道/g参数的作用了否???


   /R user       撤销指定用户的访问权限(仅在与 /E 一起使用时合法)。
(/R我的理解就是删除文件上指定用户的权限,你写哪个用户,哪个用户的权限就会删除,同时必须有/E参数)
看图说明吧,还是图比较直观,先看c:\test1.txt文件原来有的权限。如图9
Highslide JS
图9

那么我们用命令cacls c:\test1.txt /e /r system命令处理一下,把system用户权限给删除。看图10
Highslide JS
图10,用命令cacls c:\test1.txt /e /r system把SYSTEM用户权限给删掉了。和图9比一下 。也就理解了。那如果我是用命令cacls c:\test1.txt /e /r Administrator呢?界于/R参数的关系 ,那就Administrator的用户权限也没有了呗!


   /P user:perm  替换指定用户的访问权限。
                 Perm 可以是: N  无
                              R  读取
                              W  写入
                              C  更改(写入)
                              F  完全控制
(/P就是把原来的所用用户权限都改为你命令中输入的权限,比如你看图11,一共有3个用户权限)
Highslide JS
图11
主要是看现在Administrator的权限,是所有权限,那么我们用命令
echo y|cacls c:\test1.txt /p Administrator:r,把test1.txt文件改为只有
Administrator有读取权限。看图12
Highslide JS
明白了吧,替换就是把所有的权限都替换成你命令里的权限,如果加了/E参数的话 ,那其他2个用户的权限就不会没有,而Administrator一样会被改为只有读取权限。我就不再做说明了。大家可以测试下。
命令是cacls 文件 /e /p 用户名:r,用这个命令处理过一个文件后,你会发现他原来的用户权限都在。
但是你命令中的用户名权限 就会被改为只有读取权限了。



   /D user       拒绝指定用户的访问。在命令中可以使用通配符指定多个文件。也可以在命令中指定多个用户。

(/D嘛,看CMD的说明就知道了。就是拒绝指定用户的访问了。。再来个图片说明,看图13 c:\test2.txt文件的原有权限。)
Highslide JS
图13。他的Administrator目前是所有权限。
那我们用命令echo y|cacls c:\test2.txt /e /d Administrator处理下。
看图14,然后再和图13比一下 。我们会发现Administrator的权限都变成拒绝了,且文件不可访问。

Highslide JS

图14

大概就是这些意思吧,可能其中的某些参数没有演示到位,或者有些词不搭意,但是我想不懂的人看过之后至少能明白一些,其中的命令配合大家自行研究一下,其实我对批处理也只是一知半解,但是我这个人遇到问题后就喜欢把问题写出来,做个简单的教程来同大家分享,因为我介绍的这些东西并不是什么高深内容,但是讲起来又很麻烦,所以就算是普及一下九年义务教育好了。高手别骂我,如果有什么错误请指正,同时没有诋毁任何人的意思。

缩写:
   CI - 容器继承。
        ACE 会由目录继承。
   OI - 对象继承。
        ACE 会由文件继承。
   IO - 只继承。
        ACE 不适用于当前文件/目录。
posted @ 2009-08-04 14:38  jcss  阅读(845)  评论(0编辑  收藏  举报