Board logo

标题: 【已结】怎么设置可创建可删除不可修改的目录权限 [打印本页]

作者: plp626     时间: 2009-9-12 08:46    标题: 【已结】怎么设置可创建可删除不可修改的目录权限



  Quote:
最近研究防毒,最后想到这个简便的方法
-----------------------------------------------------------------
现在我想给ntfs盘里某个目录设置如下的权限:

1.可以在该目录内创建文件或子目录,子目录的权限自动继承该目录的权限,子目录可以重命名,可以删除
(命名与删除我这里实验总是一对孪生兄弟)
2.复制到(或剪切到,或新建到)该目录内的文件变为不可以编辑内容,不可以更改属性,但可以删除,

3.该目录属性不可更改,不可删除,不可重命名(这个容易办到,给父目录设置R权限)

PS: 如果123条要求难以同时实现可以舍弃第1,3条要求重点是第二条!
------------------------------------------------------------------

提前谢谢各位!

题外话:
前不久,我在D盘fat32分区下见到一金山专杀工具,具体名字忘了,只是它有着特殊的写保护功能,不能改名不能删除可以运行起来删毒,而且不能复制!用unlocker查看,里面没挂载任何进程,真佩服作者是怎么实现的?总之这些技巧对于我们使用计算机定能增添许多方便与实惠。

本帖以结,请参照此贴5楼根据实际做相应修改,
http://www.cn-dos.net/forum/viewthread.php?tid=48807

[ Last edited by plp626 on 2009-9-14 at 01:23 ]
作者: plp626     时间: 2009-9-12 08:52
我现在看到xcacls.vbs有这个参数:(可是那个试了试不行!不知错哪里了)
Perm: Is for "Files Only" and can be:
      Permissions...
             F  Full control
             M  Modify
             X  read & eXecute
             R  Read
             W  Write
      Advanced...
             E Synchronize
             D Take Ownership
             C Change Permissions
             B Read Permissions
             A Delete
             9 Write Attributes
             8 Read Attributes
             7 Delete Subfolders and Files
             6 Traverse Folder / Execute File
             5 Write Extended Attributes
             4 Read Extended Attributes
             3 Create Folders / Append Data
             2 Create Files / Write Data
             1 List Folder / Read Data
-------------------------------------------------
xcacls.vbs官方介绍:
http://support.microsoft.com/kb/825751
下载地址:
http://download.microsoft.com/do ... Cacls_Installer.exe
作者: 523066680     时间: 2009-9-12 10:54
大哥,虽然讨论了以下。我还是决定重新看你的原则:

  Quote:
1.可以再该目录内创建文件,并且可以重命名,可以删除,
2.不可以编辑目录内任何文件的内容,不可以更改目录内任何文件的属性
3.该目录属性不可更改,不可删除,不可重命名

我觉得这个要求其实是可以这样实现的:
cacls 遍历该目录  属性为R
也就是该目录树是只读的。

然后你可以在改目录树下建立新的文件,对这个新的文件可以做任何修改。

当然我上面理解的应该不对。
对目录全部系 地只读,又要能建立,删除,重命名文件。
我想现在的cacls是不能做到的。

[ Last edited by 523066680 on 2009-9-12 at 10:55 ]
作者: 523066680     时间: 2009-9-12 10:58
不知道注册表能否做到?
曾经用cacls给 autorun.inf 加权限,结果病毒好像用了某种方法
强制给我的autorun.inf 重命名,然后它再建立它自己的autorun.inf。
也许注册表能实现更细节的限制?
作者: HAT     时间: 2009-9-12 11:47
参考:http://www.cn-dos.net/forum/viewthread.php?tid=35672#pid242113
作者: plp626     时间: 2009-9-13 03:17


  Quote:
Originally posted by HAT at 2009-9-12 11:47 AM:
参考:http://www.cn-dos.net/forum/viewthread.php?tid=35672#pid242113

cacls貌似无法实现目录内可删不可改的权限

版主提供的那个帖子,如何实现文件可读不可删? 只要父目录不具有delete权限即可(对于cacls命令只要设置父目录为C权限即可),我知道的。
---------------------------------------------------------------------------------------------
大家思考一下怎么防治文件被病毒感染的方法,当然压缩包,镜像,(这些方法也不保险,现在也有少部分病毒开始感染压缩包勒)等等也可以,但都不如我说的这个来的简便。

至于ifexist说的方法,我现在就这样用着(给右键添加一个命令---"给该文件设置everyone只读权限",但是还不是非常方便),
就是因为不方便才想到这种目录里文件自动赋予可读不可改的方法
---------------------------------------------------------------------------------------------
昨晚试验勒N次均告失败,再次看了这个xcacls.vbs的帮助,想和大家讨论下
            3 Create Folders / Append Data
                  2 Create Files / Write Data   //能创建文件则意味着可以写数据?! 那么则意味着可修改勒?!               
                 1 List Folder / Read Data

难道我的要求是矛盾的?!
作者: everest79     时间: 2009-9-13 07:52
1.可以再该目录内创建文件,并且可以重命名,可以删除(试验了下,可删除与可重命名好像是"共生的")
2.复制到(或剪切到)该目录内的文件变为不可以编辑内容,不可以更改属性
//复制进去的会继承目标文件夹的设置,剪贴进去的,会使用原来目录的权限设置

3.该目录属性不可更改,不可删除,不可重命名(这个容易办到,给父目录设置R权限)

ACL里只需要禁止创建文件夹就可以禁止修改文件
作者: plp626     时间: 2009-9-13 08:02


  Quote:
Originally posted by everest79 at 2009-9-13 07:52 AM:
1.可以再该目录内创建文件,并且可以重命名,可以删除(试验了下,可删除与可重命名好像是"共生的")
2.复制到(或剪切到)该目录内的文件变为 ...

不知道单独的禁止创建文件夹的参数怎么组合

  Quote:
             3 Create Folders / Append Data
             2 Create Files / Write Data

从这里看创建文件与创建目录是分开来的,

我说的编辑数据可能很不专业,看里面参数的解释,append应该是追加数据,write应该是创建新文件,不知道cacls对编辑数据是怎么定义的?

[ Last edited by plp626 on 2009-9-13 at 08:03 ]
作者: everest79     时间: 2009-9-13 08:05
3 Create Folders / Append Data  创建文件夹/追加数据 这个禁止掉就不可以修改文件了,但也建立不了文件夹
             2 Create Files / Write Data  创建文件/写入数据
作者: plp626     时间: 2009-9-13 09:07


  Quote:
Originally posted by everest79 at 2009-9-13 08:05 AM:
3 Create Folders / Append Data  创建文件夹/追加数据 这个禁止掉就不可以修改文件了,但也建立不了文件夹
             2 Create Files / Write Data  创建文件/写入数据

问题是在那些参数只对文件有效,

  Quote:
Perm: Is for "Files Only" and can be:
       Permissions...
              F  Full control
              M  Modify
              X  read & eXecute
              R  Read
              W  Write
       Advanced...
              E Synchronize
              D Take Ownership
              C Change Permissions
              B Read Permissions
              A Delete

我之前试了试 cscript xcacls.vbs test /g adm:F everyone:b148 鼠标连test目录都打不开(命令行下也不行,最后用/t 参数查看为test\*.* ACCESS_DENIED:)
查看了test目录acl信息为:
(OI)(IO)(特殊访问:)
  READ_CONTROL  --- b
  SYNCHRONIZE   --- e (这个不太懂)
  FILE_GENERIC_READ  ---?
  FILE_READ_DATA  ---1
  FILE_READ_EA  ---- 4
  FILE_READ_ATTRIBUTES ----8

而 xcacls.vbs的R权限为
(OI)(CI):
READ_CONTROL ----B
SYNCHRONIZE  ----E
FILE_GENERIC_READ ---我还不知道和那个参数有关
FILE_READ_DATA ---1
FILE_READ_EA ---4
FILE_READ_ATTRIBUTES---8

区别在b148是oi+io(只继承+对象继承)而R为oi+ci(只继承+容器继承),就是说前者只有文件获得了b148权限,而文件的所在目录还是不能访问,
现在问题在这里,我还没搞清,只是把我的疑问写出来,

如果要想实现可(创建文件)+(可访问+不可改)+(可删)需要
Create Files ---- 2

Read Data(但这意味着write date,还是那个疑问矛盾吗?)----1
Read Extended Attributes ---4
Read Attributes  ---8
Read Permissions ---b

Delete ---- a
--------------------------------------------- 可这也还是仅仅对文件有效,要让文件自动继承目录的这种权限怎么弄?
作者: everest79     时间: 2009-9-13 09:22
你直接新建个文件夹,进安全,把继承去掉,然后取消创建文件夹/追加数据就可以了
作者: plp626     时间: 2009-9-13 09:31
你说的这种"取消"好像没有指定参数,我只能用“不赋予相应权限”来间接实现,可是帮助信息里目录赋予这类权限真让我费脑子。
---------------------------------------------------------------------
/I 参数将可以关闭继承权限,还在试验中。。。。

  Quote:
/F                  [Used with Directory or Wildcard] This will change all
                     files under the inputed directory but will NOT
                     traverse sub directories unless /T is also present.
                     If filename is a directory, and /F is not used, no
                     files will be touched.

/S                  [Used with Directory or Wildcard] This will change all
                     sub folders under the inputed directory but will NOT
                     traverse sub directories unless /T is also present.
                     If filename is a directory, and /S is not used, no
                     sub directories will be touched.

/T                  [Used only with a Directory] Traverses each
                     subdirectory and makes the same changes.
                     This switch will traverse directories only if the
                     filename is a directory or is using wildcards.

这些参数表达的含义让人那以理解,/t 参数是针对目录的,可这又什么用处。。

关于xcacls.vbs的使用示例实在太少,网上搜索的也仅仅是官方的帮助。。。

[ Last edited by plp626 on 2009-9-13 at 09:48 ]
作者: everest79     时间: 2009-9-13 09:48
我就没说用脚本,直接手工改
作者: plp626     时间: 2009-9-13 09:49


  Quote:
Originally posted by everest79 at 2009-9-13 09:48 AM:
我就没说用脚本,直接手工改

不会,
作者: everest79     时间: 2009-9-13 09:55
你在桌面上新建个文件夹,然后右键选属性,再选安全页面,再点高级,然后先把坐父项继承的钩去掉,应用,然后选你当前用户名,点编辑,进去把创建文件夹/追加数据的那个钩去掉再应用确定即可
作者: plp626     时间: 2009-9-13 12:43
我的系统没有你说的那种格式
截图一张:


顺便问下你说的那中ntfs格式,我也在论坛见过
但不知这种"外观"是怎么设置的

[ Last edited by plp626 on 2009-9-13 at 12:45 ]
作者: yishanju     时间: 2009-9-13 14:19
XP 系统默认不显示安全选项,取消简单共享就有了。
作者: everest79     时间: 2009-9-14 01:38
按住shift右键
作者: slore     时间: 2009-9-14 02:52
打开任意文件夹,工具,文件夹选项
使用简单共享去掉。
作者: wxcute     时间: 2009-9-18 07:51


  Quote:
Originally posted by plp626 at 2009-9-13 03:17:
难道我的要求是矛盾的?!

应该不矛盾,把目录与文件分开设置权限就行了。

xcacls我是不会用啦,我用setAcl

缺点是第2点"剪切到"无法实现。
说明:其中D:\test是要得到目录的父目录,target就是要得到的目录。
相关帖子:http://bbs.bathome.cn/thread-3670-1-1.html
set "sup_dir=D:\test"
set "tar_dir=%sup_dir%\target"
md "%tar_dir%"
SetACL.exe -on "%sup_dir%" -ot file^
-actn clear -clr "dacl,sacl"^
-actn ace -ace "n:everyone;p:list_dir;i:sc;m:set"^
-actn setprot -op "dacl:p_nc;sacl:p_nc"

SetACL.exe -on "%tar_dir%" -ot file^
-actn clear -clr "dacl,sacl"^
-actn ace -ace "n:everyone;p:list_dir,del_child,read_ea;i:sc,so;m:set"^
-ace "n:everyone;p:add_file,add_subdir;i:sc;m:grant"
原来[已结]了,不过还是留着罢,就不删了。

[ Last edited by wxcute on 2009-9-18 at 07:54 ]