![](/img/trans.png)
[英]C# webapi - file.delete - security issue on IIS_USER delete permission?
[英]Remotely set file permission to IIS AppPool user with C#
到目前为止,所有使用Google搜索的人都在谈论域用户,或者在本地计算机上运行进程,这都不适合我。
我正在运行构建/部署服务器(在Team City上或在我的计算机上本地运行的Cake构建脚本)的进程,该进程将wep应用程序部署到远程服务器上的IIS。 作为此过程的一部分,我需要在其部署到的目录上设置权限,以便IIS可以查看和运行该应用程序。 我的问题是,无法从Team City服务器看到创建的虚拟帐户( IIS AppPool\\MyAppPool
),因此无法设置权限。 我有一个例外:
System.Security.Principal.IdentityNotMappedException:无法转换某些或所有标识引用。
因此,是否可以通过Team City服务器或本地计算机设置Web服务器上文件夹的文件许可权,以允许通过虚拟IIS AppPool帐户进行访问? (因为我使用的是Cake Build ,所以C#中的任何解决方案都是理想的,但是如果绝对必要,我可以启动其他过程)
通过对问题的一些评论,我想到了这作为我的最终解决方案:
function Add-RemoteAcl
(
[string]$computerName,
[string]$directory,
[string]$user,
[string]$permission
)
{
$session = New-PSSession -ComputerName $computerName;
Invoke-Command -Session $session -Args $directory, $user, $permission -ScriptBlock {
param([string]$directory,[string]$user,[string]$permission)
$acl = Get-Acl $directory;
$accessRule = New-Object System.Security.AccessControl.FileSystemAccessRule($user, $permission, "ContainerInherit, ObjectInherit", "None", "Allow");
if ($accessRule -eq $null){
Throw "Unable to create the Access Rule giving $permission permission to $user on $directory";
}
$acl.AddAccessRule($accessRule)
Set-Acl -aclobject $acl $directory
};
Remove-PSSession $session;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.