![如何防止用户删除文件夹,同时仍授予他们修改其内容的权限?](https://linux22.com/image/1398910/%E5%A6%82%E4%BD%95%E9%98%B2%E6%AD%A2%E7%94%A8%E6%88%B7%E5%88%A0%E9%99%A4%E6%96%87%E4%BB%B6%E5%A4%B9%EF%BC%8C%E5%90%8C%E6%97%B6%E4%BB%8D%E6%8E%88%E4%BA%88%E4%BB%96%E4%BB%AC%E4%BF%AE%E6%94%B9%E5%85%B6%E5%86%85%E5%AE%B9%E7%9A%84%E6%9D%83%E9%99%90%EF%BC%9F.png)
我试图防止用户意外删除某些文件夹(例如,存储在主驱动器中的个人扫描目标文件夹),同时仍然授予他们对这些特殊文件夹内容的读写权限。
我尝试了各种不同的 NTFS 权限组合,但都没有成功,因为我发现用户要么无法访问内容...或有能力的删除父文件夹。
我怎样才能做到这一点?
答案1
正如 Graham 指出的那样,使用多个权限条目对于同一个用户(我以前从未尝试过)这里的关键是:
父文件夹的权限赋予用户几乎绝对自由地进行任何更改...除了未选中“删除”框 - 因此用户不能意外删除/移动/重命名这个重要文件夹:
继续查看为同一用户设置的第二个权限(不适用于文件夹本身,而是适用于其内容),我们看到授予用户的完全相同的权限,包括“删除”权限。
因此,用户可以对子文件夹和文件执行任何操作,包括删除/移动/重命名它们。
此配置允许我保护关键文件夹,例如位于用户个人网络位置的个性化目标扫描目录。用户可以修改内容(例如删除他们不再希望保留的扫描件的 PDF),但不能通过删除扫描仪在保存到网络时希望看到的文件夹而无意中给自己带来麻烦。
我必须禁用特殊文件夹的继承,否则无法更改与网络共享根目录不同的用户权限;然而,所有子文件夹和对象做使用继承来从其父文件夹获取其权限。
一旦我弄清楚了需要做什么,只需要几分钟就可以为每个用户进行调整。现在我可以放心了,关键的网络文件夹不会被用户意外删除。
答案2
该文件夹应具有读取权限、删除子文件夹和文件、创建文件夹/附加数据、创建文件/写入数据、读取属性、列出文件夹/读取数据、遍历文件夹/执行文件等权限。内容应具有完全控制权。此组合应(假设文件所有权正确且用户创建和管理正确)允许您的用户通过文件夹访问其内容,而不能删除或修改文件夹本身。
答案3
从文件夹中删除内容的能力通常取决于父级分配的权限,而不是文件夹本身(即您不能说:“不要删除我”)。因此,这意味着您需要在文件夹父级的权限中控制文件夹本身的删除权限。
例如:
A |-B | + a.html | + b.html | + c.html +-碳 + a.doc + b.doc删除“a.html”的能力由“B”控制(或从“A”继承)。因此,如果您想要停止删除“B”,则需要正确设置“A”的权限。当您想删除“C”但不想删除“B”时,这会变得相当烦人。有时将文件夹(但不删除其内容)的所有权分配给单独的用户更容易,也更明显。
答案4
很好地完成了所接受的答案。
简短答案
简而言之,您需要这对权限(以下是 Windows 10 GUI 的粗略近似值):
Type Principal Access Applies to
--------------------------------------------------------------------------
Allow ... Modify Subfolders and files only
Allow ... Read, write & execute This folder, subfolders and files
命令行或脚本 ( icacls
)
icacls
您可以使用以下命令从命令行或脚本设置这些权限:
icacls
目录名 /grant
"
主要的:(OI)(CI)(RX,W)"
"
主要的:(OI)(CI)(IO)M"
在哪里:
- 目录名是目录名称
- 主要的是用户或组名称
例子:
icacls "C:\Program Files\App\Temp" "*S-1-5-32-545:(OI)(CI)(RX,W)" "*S-1-5-32-545:(OI)(CI)(IO)M"
这允许本地组的成员(SID S-1-5-32-545 -如果以字符1Users
为前缀,则可以在 SID 中使用)创建/重命名/删除目录中的文件和目录,但他们不能删除目录本身。icacls
*
C:\Program Files\App\Temp
C:\Program Files\App\Temp
1目前,知名 SID 列表可从以下网址获取:https://docs.microsoft.com/en-us/windows/security/identity-protection/access-control/security-identifiers- 但看看微软如何移动事物,搜索“众所周知的 SID”应该可以让你到达那里。
技术细节
旗帜(见https://superuser.com/a/322431/204415更多细节):
(OI)
- “对象继承” - 此 ACE(访问控制条目)将由放置在此容器中的对象继承(CI)
- “容器继承” - 此 ACE 将由放置在此容器中的子容器继承(IO)
- “仅继承” - 此 ACE 将被继承,但不适用于此对象本身
权限:
(RX,W)
- 对应于 GUI 中的“读取、写入和执行”M
- 对应于 GUI 中的“修改”
因此:
(OI)(CI)(IO)M
对应于 GUI 中“仅子文件夹和文件”的“修改”访问权限(OI)(CI)(RX,W)
对应于 GUI 中“此文件夹、子文件夹和文件”的“读取、写入和执行”访问权限