要实现“允许写入和修改,但禁止删除”,需在NTFS权限中同时设置允许“写入、修改、读取和执行”并显式拒绝“删除”及“删除子文件夹及文件”,因拒绝优先于允许,可有效拦截删除操作而保留其他编辑功能。
要实现“允许写入和修改,但禁止删除”,关键在于组合使用允许写入和显式拒绝删除这两类 ntfs 权限。仅靠基础权限勾选无法达成——因为“修改”权限默认包含删除能力,必须用“拒绝”规则覆盖它。
核心操作逻辑
NTFS 权限中,“拒绝”始终优先于“允许”。所以即使用户拥有“修改”权限,只要额外添加一条明确拒绝“删除”和“删除子文件夹及文件”的规则,系统就会拦截所有删除动作,而其他写入、重命名、编辑等操作照常进行。
- 只给“写入”不给“修改”:会导致无法保存文档(如 Word/Excel 提示“另存为”),实用性低
- 给了“修改”但没加拒绝规则:用户仍可删文件、删文件夹、清空内容
- 正确做法是:允许“写入+修改+读取和执行”,再单独拒绝“删除”相关权限
图形界面设置步骤
右键目标文件夹 → 属性 → 安全 → 编辑 → 添加目标用户或组:
- 先勾选允许的权限:读取和执行、列出文件夹内容、读取、写入、修改
- 点击高级 → 找到该用户/组 → 点击编辑
- 在“权限”框中,向下滚动,勾选拒绝下的两项:
• 删除
• 删除子文件夹及文件 - “应用于”选择:此文件夹、子文件夹和文件
- 确认保存
PowerShell 快速配置(推荐批量使用)
以下脚本适用于单个文件夹,可直接复制运行(需以管理员身份启动 PowerShell):
$path = "D:\SharedDocs" $user = "DOMAIN\EditorGroup" # 替换为实际用户或组 <p>$acl = Get-Acl $path $allowRule = New-Object System.Security.AccessControl.FileSystemAccessRule( $user, "ReadAndExecute, ListDirectory, Read, Write, Modify", "ContainerInherit, ObjectInherit", "None", "Allow" ) $denyRule = New-Object System.Security.AccessControl.FileSystemAccessRule( $user, "Delete, DeleteSubdirectoriesAndFiles", "ContainerInherit, ObjectInherit", "None", "Deny" )</p><p>$acl.SetAccessRule($allowRule) $acl.SetAccessRule($denyRule) Set-Acl $path $acl
注意事项与常见问题
这些细节决定方案是否真正生效:
- 确保未启用权限继承:进入“高级安全设置” → 点击禁用继承 → 选择“将继承的权限转换为此对象的显式权限”,避免上级策略覆盖你的拒绝规则
- 若“编辑”按钮灰色,请先获取文件夹所有权:高级安全设置 → 所有者 → 更改 → 输入自己账户 → 勾选“替换子容器和对象的所有者”
- 共享权限(SMB 层)不能替代 NTFS 权限:即使共享设为“更改”,最终访问仍由 NTFS 权限决定;建议共享权限也设为“更改”,NTFS 层做精细控制
- 测试时用目标账户登录操作,不要用管理员账号测试——管理员可能绕过部分限制

















