中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 【已结】怎么设置可创建可删除不可修改的目录权限
« [1] [2] »
作者:
标题: 【已结】怎么设置可创建可删除不可修改的目录权限 上一主题 | 下一主题
plp626
银牌会员

钻石会员


积分 2278
发帖 1020
注册 2007-11-19
状态 离线
『楼 主』:  【已结】怎么设置可创建可删除不可修改的目录权限



  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 ]



山外有山,人外有人;低调做人,努力做事。

进入网盘(各种工具)~~ 空间~~cmd学习
2009-9-12 08:46
查看资料  发短消息 网志   编辑帖子  回复  引用回复
plp626
银牌会员

钻石会员


积分 2278
发帖 1020
注册 2007-11-19
状态 离线
『第 2 楼』:  

我现在看到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



山外有山,人外有人;低调做人,努力做事。

进入网盘(各种工具)~~ 空间~~cmd学习
2009-9-12 08:52
查看资料  发短消息 网志   编辑帖子  回复  引用回复
523066680
银牌会员

SuperCleaner


积分 2362
发帖 1133
注册 2008-2-2
状态 离线
『第 3 楼』:  

大哥,虽然讨论了以下。我还是决定重新看你的原则:

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

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

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

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

[ Last edited by 523066680 on 2009-9-12 at 10:55 ]



综合型编程论坛

我的作品索引
  
2009-9-12 10:54
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (523066680)  编辑帖子  回复  引用回复
523066680
银牌会员

SuperCleaner


积分 2362
发帖 1133
注册 2008-2-2
状态 离线
『第 4 楼』:  

不知道注册表能否做到?
曾经用cacls给 autorun.inf 加权限,结果病毒好像用了某种方法
强制给我的autorun.inf 重命名,然后它再建立它自己的autorun.inf。
也许注册表能实现更细节的限制?



综合型编程论坛

我的作品索引
  
2009-9-12 10:58
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (523066680)  编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 5 楼』:  

参考:http://www.cn-dos.net/forum/viewthread.php?tid=35672#pid242113



2009-9-12 11:47
查看资料  发短消息 网志   编辑帖子  回复  引用回复
plp626
银牌会员

钻石会员


积分 2278
发帖 1020
注册 2007-11-19
状态 离线
『第 6 楼』:  



  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

难道我的要求是矛盾的?!



山外有山,人外有人;低调做人,努力做事。

进入网盘(各种工具)~~ 空间~~cmd学习
2009-9-13 03:17
查看资料  发短消息 网志   编辑帖子  回复  引用回复
everest79
金牌会员

一叶枝头,万树皆春



积分 2564
发帖 1127
注册 2006-12-25
状态 离线
『第 7 楼』:  

1.可以再该目录内创建文件,并且可以重命名,可以删除(试验了下,可删除与可重命名好像是"共生的")
2.复制到(或剪切到)该目录内的文件变为不可以编辑内容,不可以更改属性
//复制进去的会继承目标文件夹的设置,剪贴进去的,会使用原来目录的权限设置

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

ACL里只需要禁止创建文件夹就可以禁止修改文件



49206C6F766520796F752067757973 54656C3A3133383238343036373837
2009-9-13 07:52
查看资料  发短消息 网志   编辑帖子  回复  引用回复
plp626
银牌会员

钻石会员


积分 2278
发帖 1020
注册 2007-11-19
状态 离线
『第 8 楼』:  



  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 ]



山外有山,人外有人;低调做人,努力做事。

进入网盘(各种工具)~~ 空间~~cmd学习
2009-9-13 08:02
查看资料  发短消息 网志   编辑帖子  回复  引用回复
everest79
金牌会员

一叶枝头,万树皆春



积分 2564
发帖 1127
注册 2006-12-25
状态 离线
『第 9 楼』:  

3 Create Folders / Append Data  创建文件夹/追加数据 这个禁止掉就不可以修改文件了,但也建立不了文件夹
             2 Create Files / Write Data  创建文件/写入数据



49206C6F766520796F752067757973 54656C3A3133383238343036373837
2009-9-13 08:05
查看资料  发短消息 网志   编辑帖子  回复  引用回复
plp626
银牌会员

钻石会员


积分 2278
发帖 1020
注册 2007-11-19
状态 离线
『第 10 楼』:  



  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
--------------------------------------------- 可这也还是仅仅对文件有效,要让文件自动继承目录的这种权限怎么弄?



山外有山,人外有人;低调做人,努力做事。

进入网盘(各种工具)~~ 空间~~cmd学习
2009-9-13 09:07
查看资料  发短消息 网志   编辑帖子  回复  引用回复
everest79
金牌会员

一叶枝头,万树皆春



积分 2564
发帖 1127
注册 2006-12-25
状态 离线
『第 11 楼』:  

你直接新建个文件夹,进安全,把继承去掉,然后取消创建文件夹/追加数据就可以了



49206C6F766520796F752067757973 54656C3A3133383238343036373837
2009-9-13 09:22
查看资料  发短消息 网志   编辑帖子  回复  引用回复
plp626
银牌会员

钻石会员


积分 2278
发帖 1020
注册 2007-11-19
状态 离线
『第 12 楼』:  

你说的这种"取消"好像没有指定参数,我只能用“不赋予相应权限”来间接实现,可是帮助信息里目录赋予这类权限真让我费脑子。
---------------------------------------------------------------------
/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 ]



山外有山,人外有人;低调做人,努力做事。

进入网盘(各种工具)~~ 空间~~cmd学习
2009-9-13 09:31
查看资料  发短消息 网志   编辑帖子  回复  引用回复
everest79
金牌会员

一叶枝头,万树皆春



积分 2564
发帖 1127
注册 2006-12-25
状态 离线
『第 13 楼』:  

我就没说用脚本,直接手工改



49206C6F766520796F752067757973 54656C3A3133383238343036373837
2009-9-13 09:48
查看资料  发短消息 网志   编辑帖子  回复  引用回复
plp626
银牌会员

钻石会员


积分 2278
发帖 1020
注册 2007-11-19
状态 离线
『第 14 楼』:  



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

不会,



山外有山,人外有人;低调做人,努力做事。

进入网盘(各种工具)~~ 空间~~cmd学习
2009-9-13 09:49
查看资料  发短消息 网志   编辑帖子  回复  引用回复
everest79
金牌会员

一叶枝头,万树皆春



积分 2564
发帖 1127
注册 2006-12-25
状态 离线
『第 15 楼』:  

你在桌面上新建个文件夹,然后右键选属性,再选安全页面,再点高级,然后先把坐父项继承的钩去掉,应用,然后选你当前用户名,点编辑,进去把创建文件夹/追加数据的那个钩去掉再应用确定即可



49206C6F766520796F752067757973 54656C3A3133383238343036373837
2009-9-13 09:55
查看资料  发短消息 网志   编辑帖子  回复  引用回复
« [1] [2] »
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: