咨询:Azure DevOps代理通过组权限无法写入UNC路径的原因
问题描述
执行发布管道时,只有当代理运行所用的服务账号对目标共享拥有直接读写权限时,才能将文件复制到UNC路径。由于我们使用AD组管理权限,在多个位置的多个文件夹中添加服务账号既不具备扩展性也难以维护。但如果服务账号属于拥有共享读写权限的组,管道会执行失败。
管道代码
我有一个通过自托管代理(Self-Hosted agent)部署的发布管道,代理运行账号为MYDOMAIN\SRVACCOUNT。管道包含以下PowerShell任务步骤:
Write-Host "User running the script is: $([System.Security.Principal.WindowsIdentity]::GetCurrent().Name)" $path = "\\server\share\myfolder" New-Item -Path $path -Name "testfile1.txt" -ItemType "file" -Value "This is a text string." -Force
PowerShell任务执行失败,报错信息为:
New-Item : Access to the path '\\server\share\myfolder\testfile1.txt' is denied
错误日志截图显示:脚本运行用户为MYDOMAIN\SRVACCOUNT,确认脚本使用正确凭据执行。
自托管代理上运行的Windows服务截图显示:代理服务以MYDOMAIN\SRVACCOUNT账号运行。
组权限配置
用户MYDOMAIN\SRVACCOUNT属于MYDOMAIN\APP_ADMINS组,该组对UNC文件夹路径拥有完全控制权限。
- 当用户属于该组时,管道执行失败;
- 当直接为用户分配完全控制权限时,管道执行成功。
当我以该服务账号登录时,无论用户是通过组权限还是直接权限,都能正常访问文件夹并创建文件。
成功创建文件截图显示:服务账号登录后可正常操作目标文件夹。
为何Azure DevOps管道在使用组权限时无法对UNC路径进行读写,而直接分配权限则可以?
内容的提问来源于stack exchange,提问作者chrisbuttacavoli
相关产品推荐
相关产品推荐

