Set-ACL 非管理员用户运行文件夹ACL配置脚本权限问题咨询
脚本执行权限配置(解决未签名拦截问题)
首先针对未签名脚本无法运行的问题,根据你使用的脚本类型对应配置:
- 如果是PowerShell脚本,无需全局修改系统执行策略,仅为目标非Admin用户配置当前用户作用域的执行策略即可,登录目标用户账户后执行命令:
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
该配置仅对当前用户生效,允许本地编写的未签名脚本运行,不会降低系统全局安全等级。 - 如果是批处理/VBS等其他类型脚本,检查脚本所在目录的执行权限,确认目标用户拥有遍历文件夹/执行文件权限即可。
根目录最小ACL权限配置
你之前的权限配置缺少必要的读取类权限,导致无法读取现有目录结构、校验权限继承关系,最终触发未授权报错。请在你用来创建嵌套文件夹的上级根目录上,为目标非Admin用户/用户组配置如下高级权限,应用范围选择此文件夹、子文件夹和文件:
- 遍历文件夹/执行文件
- 列出文件夹/读取数据
- 读取属性
- 读取扩展属性
- 创建文件夹/附加数据
- 读取权限
- 更改权限
额外注意事项:
- 先删除根目录下所有针对该用户的拒绝权限条目,拒绝权限优先级高于允许权限,会导致配置的允许权限失效
- 如脚本需要修改创建后文件夹的所有者,额外授予取得所有权权限即可,普通场景下创建者默认拥有自建对象的权限编辑权,无需该配置
脚本优化建议
你可以在脚本中加入身份校验逻辑,从代码层面禁止管理员用户执行,避免权限溢出:
# PowerShell 身份校验示例,管理员身份直接退出 $currentPrincipal = New-Object Security.Principal.WindowsPrincipal([Security.Principal.WindowsIdentity]::GetCurrent()) if ($currentPrincipal.IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)) { Write-Host "该脚本仅允许非管理员用户运行" exit 1 }
配置完成后可先做手动校验:用目标用户账户登录,手动在根目录下创建文件夹、修改该文件夹的ACL,确认手动操作无报错后再运行脚本,可快速排除脚本逻辑问题。
内容的提问来源于stack exchange,提问作者Light_Shift
相关产品推荐
相关产品推荐

