怎样创建一个无法直接删除和重命名的文件夹或文件(内容重要,为了不被自己和他人误删除,比如系统备份),说起来似乎很简单,但如果不清楚内里玄机,结果并不如愿,总是能够删除。

为了这个问题,曾经将windows的权限体系整体研究了一遍,学习各种权限命令,参考各种技术书籍的解读,但结果仍是百思不得其解。最近我突然明白了。请听我细细道来!

举例:在D盘根目录新建一个文件夹test,右键属性-安全-高级,点击“禁用继承”

createTempDirectory 未删除文件夹 创建无法删除的文件夹_显式

然后,继承于“D\”就会变成继承于“无”。选中主体Administrators(主机名\Administrators),点击删除,

同样删除Authenticated Users(授权用户具有【修改】权限,就可以删除文件夹和文件的,如果不删除此用户,而是修改其权限,去掉删除,就变成了【读取、写入和执行】,是一个只可以修改不可以删除的文件夹或文件),结果如下:

createTempDirectory 未删除文件夹 创建无法删除的文件夹_显式_02

点击确定。你以为这样应该成功了吧?试着按del键删除

createTempDirectory 未删除文件夹 创建无法删除的文件夹_显式_03

嗯,不错,要求提供管理员权限,点击继续确实可以删除,显然是因为提权了。

 

createTempDirectory 未删除文件夹 创建无法删除的文件夹_删除文件夹_04

还原回来,试着右键删除,发现多了UAC盾牌图标,应该是设置生效了,点击删除,嗯,什么鬼,怎么一声不吭就直接删除了?莫名其了妙了!

而且刚才已经将管理员的权限都删除了呀,提权我能接受,可怎么就删除了呢,是我的姿势不对吗。

以前多次设置到了这一步,我一直以为是我设置的不对或不全,去网上和图书馆各种查阅,死活弄不明白,那就算了吧,天下苦windows久矣,windows闭源的,想搞透彻很难。

最近,重新捡起这一块,突然明白了。将D盘比喻成多人合租的一间房子(父目录),我是这间房子的住户(普通用户)兼管理员(管理员账户),可能还是房东(所有者)。

房间里有一个名叫test的箱子,虽然我没有它的钥匙(权限),但是我还是能变身为管理员去处置它,将它扔掉。因此这就是有管理员身份的用户总是能删除文件夹或文件的原因。

如果不想被具有管理员身份的用户删除,怎么办呢?添加对管理员组的显式拒绝权限,将管理员组完全控制(实测必须是完全控制)修改为拒绝。

createTempDirectory 未删除文件夹 创建无法删除的文件夹_子目录_05

这下你想删除就没门了。

createTempDirectory 未删除文件夹 创建无法删除的文件夹_显式_06

那如果你真的想删除怎么办?注意管理员总是可以获得所有者权限,然后就可以修改权限,使自己具有完全控制权限,然后为所欲为。

如果双击test目录,会出现提示

createTempDirectory 未删除文件夹 创建无法删除的文件夹_显式_07

点击继续很轻松就又获得了管理员身份的完全控制权限,这可不好,刚才修改权限的时候可以一并将所有者改了,比如改成system用户,就不会有这个提示了。

继续探讨,实际上下面才是重点发现:

刚才的test目录为空,但如果test里面有一个文件夹或文件,完全不需要设置显式拒绝管理员完全控制权限,就可以实现无法删除,这又是为什么呢?

这点跟我们平常的理解不一样,不是说你整个房子的管理权,就可以直接扔掉所有的东西,计算机的目录是一个盒子套一个盒子的,能处置外面的盒子不一定能处置里面的。

其实就是你有父目录的权限但没有父目录内子目录和文件的权限,那么你还是可以处置这些文件和子目录(前提是空的),但子目录有东西的情况下,继续往下走,按照递归思维,

你没有子目录作为宿主容器的权限,除非你显式的具有子目录里孙目录和文件作为寄宿者的权限(因为默认权限是继承的,所以你没有),否则你不能删除孙目录和文件,这就导致你也不能再删除子目录了。

按照这种思维,当子目录里所以的东西都被有权限的人删除后,那么管理员就又可以直接删除父目录了。

 

——看完了文章,无论觉得写的不错的还是觉的辣鸡的,可以点赞或给点意见,鼓励或批评对我都很有用!