Windows环境下服务账户访问远程网络共享提示权限被拒问题排查求助
Windows环境下服务账户访问远程网络共享提示权限被拒问题排查求助
各位大佬好,我现在遇到一个Windows环境下的权限问题卡壳了,想请大家帮忙分析下:
环境与基础配置
- 整个环境都是Windows体系,部署在
srv01上的应用需要往远程网络共享目录写入数据 - 应用对应的服务配置了AD域服务账户
service-worker作为登录账户,已经给这个账户配置了以下权限:- 操作系统层面的「作为服务登录」「作为批处理作业登录」权限
- 应用自身运行所需的文件权限
- 服务能正常启动,也可以正常写入
srv01本地的UNC共享目录
问题现象
应用尝试写入\\srv02\dir时,始终提示**"access denied(权限被拒)"**。我已经给service-worker配置了对应权限:
- 共享权限:给
service-worker分配了完全控制权限 - NTFS权限:给
\\srv02\dir\subdir分配了修改和读取权限
调试步骤与结果
我用PowerShell尝试复现问题,脚本如下:
$username = 'service-worker' $password = 'somePassword' $securePassword = ConvertTo-SecureString $password -AsPlainText -Force $credential = New-Object System.Management.Automation.PSCredential ($username, $securePassword) Invoke-Command -ComputerName srv01 -Credential $credential -ScriptBlock { "Hello World" | Out-File -FilePath "\\srv02\dir\subdir\test1.txt" }
执行后得到错误输出:
PS H:> C:\Users\myUser\Scripts\CreateUNCFileAsUser.ps1
Access to the path '\srv02\dir\subdir\test1.txt' is denied.
- CategoryInfo : OpenError: (:) [Out-File], UnauthorizedAccessException
- FullyQualifiedErrorId : FileOpenFailure,Microsoft.PowerShell.Commands.OutFileCommand
- PSComputerName : srv02
后续还做了这些尝试:
- 在
srv02上通过高级安全的「有效权限」功能查看service-worker的权限,显示是正常的 - 把
service-worker加到和我个人账号相同的NTFS权限组(该组对整个服务器有完全控制权限),依然报错 - 尝试写入共享根目录
\\srv02\dir\test1.txt,还是提示权限被拒 - 直接在
srv02上用这个账户执行命令,提示无法登录,这个是符合预期的 - 考虑到
Invoke-Command可能存在双跳权限问题,直接在srv01上用PowerShell以该账户执行写入操作,还是报同样的权限被拒错误,仅PSComputerName变成了srv01
我到底漏了什么配置吗?这个账户连读取srv02的共享目录都做不到,实在搞不懂了,求各位指点!
备注:内容来源于stack exchange,提问作者Severin Brunner




