Board logo

标题: cacls命令带来的麻烦 [打印本页]

作者: lxmxn     时间: 2006-10-21 15:10    标题: cacls命令带来的麻烦

  今天在电脑上试cacls的用法,结果执行了下面这个命令之后,就把e盘给“锁”定了:
cacls e: /p well:n
我想禁止well用户访问的,没想到却把自己给关门外了。而当我再想用cacls命令解开锁定时,提示“拒绝访问”或者“ ACCESS_DENIED: E:\”,请问怎么解除这个锁定啊?

作者: redtek     时间: 2006-10-21 21:15
用一个超级管理员帐号登录,在图形界下给E盘重新设置权限:)

cacls e: /p well:F
作者: electronixtar     时间: 2006-10-21 21:30
同意。用
at xx:xx /interactive cmd
可以打开一个SYSTEM权限的窗口
作者: vkill     时间: 2006-10-21 22:39
redtek兄,这个时候administrator 也被锁在了门外,我以前也这个受害过,没有办法,复制全部文件到移动硬盘,format
作者: vkill     时间: 2006-10-21 22:40
est 的方法还没有用过,可以一试
作者: redtek     时间: 2006-10-21 22:56
权限设置应该都在这里面,用NT什么的万能什么的引导盘引导,
然后直接删掉 SAM 文件,
然后再启动系统时什么帐号都没了,administrator帐号密码会自动变成空。系统会让重建帐号就行了:)

C:\WINDOWS\system32\config 的目录

2006-10-22  07:50           262,144 SAM
2006-10-22  07:49            65,536 SecEvent.Evt
2006-10-22  07:50           262,144 SECURITY
2006-10-22  07:50        17,301,504 software
2005-05-26  21:51           688,128 software.sav
2006-10-22  07:49           393,216 SysEvent.Evt
2006-10-22  08:06         3,670,016 system
2005-05-26  21:51           462,848 system.sav
2005-05-26  14:23    <DIR>          systemprofile
               8 个文件     23,105,536 字节
作者: redtek     时间: 2006-10-21 22:58


  Quote:
Originally posted by he200377 at 2006-10-21 22:39:
redtek兄,这个时候administrator 也被锁在了门外,我以前也这个受害过,没有办法,复制全部文件到移动硬盘,format

多谢~:)
这命令俺可不能随便用,太可怕了~:)
作者: 0401     时间: 2006-10-21 23:14
我试了,但是可以啊..
cacls d: /p 0401:n

cacls d: /p 0401:f
都是成功的.
而且就算你无法使用cacls修改权限,只要你的帐户是ADMINS组成员,就可以在图形界面下通过'安全'选项卡取得所有权的.再修改权限就行了.
作者: vkill     时间: 2006-10-21 23:20


  Quote:
Originally posted by 0401 at 2006-10-21 23:14:
我试了,但是可以啊..
cacls d: /p 0401:n

cacls d: /p 0401:f
都是成功的.
而且就算你无法使用cacls修改权限,只要你的帐户是ADMINS组成呠...

你admin 组的可以?汗~我怎么就不行,冲器看看 ?
作者: 0401     时间: 2006-10-21 23:43
而且CACLS修改的目录权限是不继承的,比如我D盘有目录"PROGRAM FILES",使用cacls d: /p 0401:n后仍可以用explorer d:\program files访问这个目录
作者: lxmxn     时间: 2006-10-22 01:12

  多谢以上朋友的指点。

  但是以上方法我都试了,只有he200377兄在F4和0401兄在F10中说得是对的,其它的方法我都试过,都是提示“拒绝访问”。大家还有没有别的方法啊?

  Re:redtek
    你这个方法可以试试,但是这对于系统的帐号有没有直接的影响?就是说用户配置文件的属性是不是也跟着“还原”了?

作者: redtek     时间: 2006-10-22 01:17
“ 但是这对于系统的帐号有没有直接的影响?就是说用户配置文件的属性是不是也跟着“还原”了? ”

是全丢了,帐号的属性(里面设置的目录等属性全没了)
也就是最初始的(刚安装完的那种 administrator 没加密码的帐号状态)

只要系统都进不去了(密码不对等或权限设置错了),
只要用工具可以进入NTFS分区并可以删文件操作,
就进那个目录删掉SAM文件就行了:)

(但是理论上是)
(如果你的某个目录加密码了,那么还最好是先GHOST一下系统再试验安全)

[ Last edited by redtek on 2006-10-22 at 01:19 ]
作者: lxmxn     时间: 2006-10-22 01:48

Re:he200377
  此时e盘的任何权限都没有,系统让你copyE盘里面的文件和目录么?我怕连format的权限也没了。

Re:redtek
  谢谢你提供方法。但这不是我所要的。我是想怎么样解除访问E盘的限制,而不是建立在“破坏”系统文件的情况下来达到我们的目的。我是这样想的:既然能用cacls命令把E盘给锁定了,不让人访问,那一定有某种可行的方法可以解除限制。

作者: 0401     时间: 2006-10-22 02:40
Re:lxmxn

我在F8中的测试也是成功的,不知为何你会失败.但是正如你说的,可以锁当然也要能解,既然你CACLS不行,可以试试这样操作.(你的帐户必须是处于ADMINS组)
打开D盘的属性,切换到"安全"选项卡\"高级"\"所有者",在"将所有者更改为"中选择你的帐号,点"应用".再切换回"权限"选项卡中添加你的帐号.

权限跟加密是不一样的,只要是ADMINS组成员都可以取得对文件或目录的所有权,然后赋予自己访问的权限.
作者: vkill     时间: 2006-10-22 02:42
re:lxmxn

复制、格式化是可以的,实在不行删除分区,呵呵~
作者: lxmxn     时间: 2006-10-22 03:17

Re:0401
  我的D盘属性里面没有“安全”选项卡啊,而且在NTFS格式的C盘属性中也没有“安全”选项卡。

Re:he200377
  复制不行,但是格式化也不是我想要的,格式化会丢失里面的文件,不可取。

作者: 0401     时间: 2006-10-22 03:25
启用"安全"选项卡的步骤:

文件夹选项\查看\去掉"使用简单文件共享"上的钩.\应用
然后重新打开D盘属性
作者: vkill     时间: 2006-10-22 03:47
复制不行??? 不知道什么原因
作者: electronixtar     时间: 2006-10-22 03:58
权限这个东西很好破的,实在不行用 Ghost 然后读取 gho 文件即可。
作者: lxmxn     时间: 2006-10-22 05:42

Re:0401
  谢谢你,我的问题已经解决了。是释放所有权限得到的。

  但是又发现一个奇怪的问题:你可以用命令限制某个用户对文件夹的访问,但是很难用命令恢复这个用户对文件夹的访问,我试了多遍,可以用cacls命令将某个文件夹的访问权限限制,但是不好用cacls命令恢复权限。有点不解。

Re:he200377
  在我恢复访问权限以前,是没法复制的,因为什么权限都没有。但是可以对其子目录下的文件进行访问。就是不能对根目录访问。

作者: electronixtar     时间: 2006-10-22 06:30


  Quote:
你可以用命令限制某个用户对文件夹的访问,但是很难用命令恢复这个用户对文件夹的访问

因为 cacls 是以当前用户的权限运行的。
作者: dato     时间: 2006-10-22 07:06
先用runas以administrator用户组登录,然后使用
takeown接管文件的所有者,再cacls

runas /user:dato\fdiy "%windir%\system32\cmd.exe"





net stop apache2
set aa=e:\w3\apache2
takeown /f %aa% /R /D Y
rem Xcacls.exe %aa% /t /e /r www
rem Xcacls.exe %aa% /t /e /r fdiy
Xcacls.exe %aa% /t /c /g fdiy:r /Y
Xcacls.exe %aa% /t /e /c /g www:r /Y
Xcacls.exe %aa% /t /e /c /g dato:r /Y
Xcacls.exe %aa%\logs /t /c /p fdiy:c /Y
Xcacls.exe %aa%\logs /t /e /c /p www:c /Y
Xcacls.exe %aa%\logs /t /e /c /p dato:r /Y
Xcacls.exe %aa%\conf /t /c /p fdiy:c /Y
Xcacls.exe %aa%\conf /t /e /c /p www:r /Y
Xcacls.exe %aa%\conf /t /e /c /p dato:c /Y

set bb=e:\w3\ext
Xcacls.exe %bb% /t /c /g fdiy:c /Y
Xcacls.exe %bb% /t /e /c /g www:r /Y
Xcacls.exe %bb% /t /e /c /g mysql:r /Y
Xcacls.exe %bb%\passwords /c /p www:c /Y
Xcacls.exe %bb%\passwords1 /c /p www:c /Y

set cc=e:\w3\php
takeown /f %cc% /R /D Y
Xcacls.exe %cc% /t /c /g fdiy:r /Y
Xcacls.exe %cc% /t /e /c /g www:r /Y
net start apache2

net stop mysql
set dd=e:\w3\mysql
takeown /f %dd% /R /D Y
Xcacls.exe %dd% /t /c /g fdiy:r /Y
Xcacls.exe %dd% /t /e /c /g mysql:r /Y
Xcacls.exe %dd%\data /t /c /p fdiy:f /Y
Xcacls.exe %dd%\data /t /e /c /p mysql:c /Y
net start mysql



rem set dd=e:\w3\www
rem takeown /f %dd% /R /D Y
rem Xcacls.exe %dd% /t /c /g fdiy:r
rem Xcacls.exe %dd% /t /e /c /g www:c
rem Xcacls.exe %dd% /t /e /c /g dato:c
pause
作者: lxmxn     时间: 2006-10-22 07:14

  即使我用不同的用户也难以更改权限。同样都是administrators组的成员。

作者: dato     时间: 2006-10-22 07:18
其实使用这个命令的时候最怕的就是复杂又叠加的权限的设定。

Xcacls.exe %aa% /t /c /g fdiy:r /Y 所以一般都要先进行重新设定权限/T,这个东东反正自己熟悉该给谁谁权限就可以了,不然叠加在一起的话就会非常混乱
作者: lxmxn     时间: 2006-10-22 07:19

  
  不懂22楼的兄弟发的是什么东东,什么作用可以给我们讲讲么?

作者: lxmxn     时间: 2006-10-22 07:22


  Quote:
Xcacls.exe %aa% /t /c /g fdiy:r /Y

  这个Xcacls.exe是第三方的工具么?

作者: dato     时间: 2006-10-22 07:37
应该一样的吧,xcacls似乎是安装光盘SUPPORT\TOOLS\SUPPORT.CAB

好似多了几个开关,方便点吧
作者: lxmxn     时间: 2006-10-22 08:05

  但是我没有这个额外的工具啊``

作者: 0401     时间: 2006-10-23 04:51
TO:lxmxn

一直不解你为何CACLS会失败,刚才稍微做了下测试,我想大概是这个原因吧.
你登陆的帐户为well,但却不是D盘的所有者,因此当你对D盘进行权限替换之后并不能把权限再修改回来,唯一的办法是你必须取得该目录的所有权.但CACLS好象并不能完成这个任务.
你可以试试用well用户创建一个目录C:\WELL,然后替换权限"ECHO Y|CACLS C:\WELL /P WELL:N"这时你权限已替换了,但是你仍可以"ECHO Y|CACLS C:\WELL /P WELL:F"修改回权限,因为C:\WELL目录是WELL创建的,你就是该目录的所有者,所以你可以修改权限.

附上Xcacls一份.使用时先 cscript /h:cscript

[ Last edited by 0401 on 2006-10-23 at 04:55 ]
附件 1: XCACLS.rar (2006-10-23 04:51, 22.22 K, 下载附件所需积分 1点 ,下载次数: 36)

作者: electronixtar     时间: 2006-10-23 06:46
Vista里有个 icacls.exe。不知道干什么的。好像是关于安全策略的
作者: lxmxn     时间: 2006-10-23 07:43

Re:0401

  首先谢谢你提供的工具。

  我按照你说的方法做了一下,过程如下:

  Quote:
我首先用administrator的用户的命令提示符环境新建了一个well用户:
net user well 123 /add
此时的well用户应该属于users组的成员,我没有动。
然后我在命令提示符里面键入如下的命令,以用well用户运行cmd.exe:
runas /u:well cmd.exe
输入密码后,弹出了一个"cmd.exe (作为 Mis-sqm\wel 运行)l"的CMD窗口。
此时,以下的操作应该就是在well用户下的操作了。
我首先在c盘下面新建一个well目录:
md c:\well
然后用cacls命令指定权限:
cacls c:\well /p well:n
显示"处理的目录 c:\well",这时命令应该执行成功了,此时我用:
start c:\well
提示"拒绝访问",然后我用如下命令恢复well用户对c:\well目录的权限:
cacls c:well /p well:f
显示"处理的目录 c:\well",这时也可以"认为"命令执行成功了,但当我用:
start c:\well
访问c:\well目录时,却提示"拒绝访问",进入资源管理器也同样是"拒绝访问"

  不知道我这个测试过程有没有什么出错的地方,非常不解……

作者: 0401     时间: 2006-10-23 11:05
因为你刚创建的用户well是users组,当你cacls c:\well /p well:n时你已经对该目录无任何权限了,也就是说你连取得该目录的所有权这点都没有,因为要取得对文件或目录的所有权前提该用户必须是ADMINISTRATORS组成员,所以你测试是必须先net localgroup administrators well /add把自己增加到管理组.
c:\>net user well /add
...
本地组成员             *Users
...
c:\>net localgroup administrators well /add
命令成功完成。


c:\>runas /u:well cmd
输入 well 的密码:
试图将 cmd 作为用户 "WINGZERO-05DD08\well" 启动...

c:\>runas /u:well cmd

[注:接下来是CMD作为WELL用户的运行内容]
C:\>md well

C:\>cacls well
C:\well BUILTIN\Administrators:(OI)(CI)F
        WINGZERO-05DD08\well:F
        CREATOR OWNER:(OI)(CI)(IO)F
        NT AUTHORITY\SYSTEM:(OI)(CI)F
        BUILTIN\Users:(OI)(CI)R
        BUILTIN\Users:(CI)(特殊访问:)
                          SYNCHRONIZE
                          FILE_APPEND_DATA

        BUILTIN\Users:(CI)(特殊访问:)
                          SYNCHRONIZE
                          FILE_WRITE_DATA



C:\>echo y|cacls well /p well:n
是否确定(Y/N)?处理的目录: C:\well

C:\>cacls well
C:\well WINGZERO-05DD08\well:(OI)(CI)N


C:\>cd well
拒绝访问。

C:\>echo y|cacls well /p well:f
是否确定(Y/N)?处理的目录: C:\well

C:\>cd well

C:\well>cacls ..\well
C:\well WINGZERO-05DD08\well:(OI)(CI)F


C:\well>

作者: 0401     时间: 2006-10-23 11:10
再者你用资源管理器浏览时是以当前用户的身份浏览的,但这时well目录的权限已经是C:\well WINGZERO-05DD08\well:(OI)(CI)N这样了.
作者: lxmxn     时间: 2006-10-23 12:40

Re:0401
  谢谢。问题解决了。但是又有一个疑问:

  为什么我用自己的administrators组的用户给e盘限制权限,而不能用cacls e:\ /p administrator:f解除限制的权限呢?

作者: 0401     时间: 2006-10-23 13:57
是不是你操作存在什么问题,我每次测试都是成功的,而你又没有提供更多的相关信息,我实在没办法去猜你到底为什么不行:)
你对权限了解得比较少,可以在M$中多搜索下相关的文章.
作者: redtek     时间: 2006-10-23 20:11
0401真是热心,lxmxn的问题终于被解决了,哈哈……
作者: hymm2008     时间: 2006-10-23 23:45
頂一下
作者: lxmxn     时间: 2006-10-23 23:57

  Re:ALL
    感谢大家的热心帮忙。

  Re:0401
    也感谢你。。。

  Quote:
你对权限了解得比较少,可以在M$中多搜索下相关的文章.

    你说的M$是指的微软官方网站还是什么?我见识太少,不知道。又要麻烦兄弟了。

作者: 0401     时间: 2006-10-24 02:49
不麻烦...
恩,我是指微软官方网站,我想没人比微软更了解自己的产品了吧
你可以使用"文件及文件夹权限"为关键字搜索,然后顺藤摸瓜,应该可以找到很多对你有帮助的
作者: lxmxn     时间: 2006-10-24 12:02    标题: 问题又出现了!


  还要麻烦一下0401兄了。

  请看我的操作过程:
C:\>net user %username%
用户名                 Mis-sqm
全名                   Mis-sqm
注释                   lxmxn520@Gmail.com

    ……………………

本地组成员             *Administrators
全局组成员             *None
命令成功完成。


C:\>md new

C:\>cacls new
C:\new BUILTIN\Administrators:(OI)(CI)F
       NT AUTHORITY\SYSTEM:(OI)(CI)F
       MIS-SQM\Mis-sqm:F
       CREATOR OWNER:(OI)(CI)(IO)F
       BUILTIN\Users:(OI)(CI)R
       BUILTIN\Users:(CI)(特殊访问:)
                         FILE_APPEND_DATA

       BUILTIN\Users:(CI)(特殊访问:)
                         FILE_WRITE_DATA



C:\>echo y|cacls new /p mis-sqm:n
是否确定(Y/N)?处理的目录: C:\new

C:\>cacls new
C:\new MIS-SQM\:(OI)(CI)N


C:\>cd new
拒绝访问。

C:\>echo y|cacls new /p mis-sqm:f
是否确定(Y/N)?处理的目录: C:\new

C:\>cd new
拒绝访问。

C:\>cd new
拒绝访问。
  请问这是什么原因?

作者: 0401     时间: 2006-10-26 01:06
这我就不清楚了,我试很多种都没重现过你的问题,就连属于users组的都可以修改自己创建的目录的权限(N->F).8好意思帮不了你了
作者: lxmxn     时间: 2006-10-26 01:29

  呵呵,没关系的,我自己会摸索一下的。

  在这里还是要感谢你热心的帮忙,帮我解决了一个比较棘手的问题。

作者: yunlin     时间: 2006-11-25 15:32
老公 也有笨的时候 ~~
顶你一帖 ~~
作者: ccwan     时间: 2006-11-25 23:17
可惜我不敢去试一下,不太了解。
作者: lxmxn     时间: 2006-12-18 04:49


  Quote:
Originally posted by ccwan at 2006-11-25 10:17:
可惜我不敢去试一下,不太了解。


  呵呵,只要你有系统管理员的权限,修改这应该没有问题的。而且对你更好的理解系统的权限设置有帮助。

  建议你先把cacls命令的帮助看一下,然后在一个NTFS分区新建一个文件夹,用cacls命令对这个文件夹进行权限的设置,应该不会有什么问题的。呵呵~

作者: bosskof     时间: 2006-12-22 01:51
L兄可以用高权用户看看gpedit.msc里面windows设置>本地策略>拥护权利指派
里面有取得所有权的设置,你把所在拥护加进去应该就可以的拉
作者: lxmxn     时间: 2006-12-22 04:26


  Quote:
Originally posted by bosskof at 2006-12-21 12:51:
L兄可以用高权用户看看gpedit.msc里面windows设置>本地策略>拥护权利指派
里面有取得所有权的设置,你把所在拥护加进去应该就可以的拉


  谢谢,问题已经解决了。只要有高权限就应该可以的。

作者: payxl     时间: 2007-7-9 00:12
好,谢谢各位,又学到东西了
作者: joyoustar     时间: 2007-12-3 21:58
其实很简单,盘属性-安全-高级-所有者,点击一下administrator,然后点确定,这样就将所有者交给管理员组了,重新点击盘属性,你看到了吗?你已经有权限设置所有用户的权限了!哪用得着用工具,ghost之类的?
作者: 523066680     时间: 2008-8-10 07:32


  Quote:
Originally posted by yunlin at 2006-11-25 03:32 PM:
老公 也有笨的时候 ~~
顶你一帖 ~~

汗……
是lxmxn的……么……好幸福啊……
作者: sofuhai     时间: 2008-10-16 20:40
还有这个命令呀
作者: willing     时间: 2008-10-18 22:10
没见过这条命令,长见识了,感谢!另外问一下,锁定以后有什么效果啊?自己不敢试......