繁体   English   中英

使用 PowerShell 授予对“IIS AppPool”文件夹的访问权限

[英]Using PowerShell to grant access to a folder for an “IIS AppPool”

我编写了一个脚本来自动部署我的平台,但我不知道如何设置应用程序池以使用我在它下面的代码获得权限,只需在下面插入带有应用程序池名称的文本。 我认为这是因为这是一个友好的名称,当您通常单击检查名称时,它会获取正确的用户,但我不知道在 powershell 中这样做很热。

function Set_iis_perms {
    param (
        [parameter(position=0)]
        $AppPoolName,
        [parameter(position=1)]
        $FileName
    )
    $acl = Get-Acl $FileName
    $acl.AddAccessRule((New-Object System.Security.AccessControl.FileSystemAccessRule(("iis apppool\$Apppool_Name"),"Modify","Allow")))
    $acl | Set-Acl $FileName
}

即使有人能指出我正确的方向,我也会非常感激。

亲切的问候多姆

通过 Get/Set-ACL 和 icacls 设置 ACL 是一件非常常见的事情,并且在许多资源中都有介绍。 例子):

使用 PowerShell 在文件夹或文件上设置 ACL

此脚本将设置文件夹(c:\1 和 C:2)及其子文件夹的文件夹权限。 如果文件夹不存在,它将创建文件夹,设置为共享并将组添加到文件夹中。 Group_Name 必须替换为实际组。

应用程序池标识

使用 PowerShell 在 IIS 上设置 ASP.NET 应用程序的权限

根据这个 StackOverflow Q&A

如何通过 Powershell 为 IIS APPPOOL* 帐户添加 ACL 权限?

Set-Acl $directory $acl $user = New-Object
System.Security.Principal.NTAccount("$domain\\$username")

更新:似乎它不会接受“IIS APPPOOL\AppPoolName”作为 NTAccount 标识符。 现在,有两种方法可以完成您正在尝试做的事情:

Create a new SID object with the AppPoolIdentities SID and translate it into an NTAccount, like this: http://iformattable.blogspot.com/2007/12/convert-sid-to-ntaccount-with.html , and you should be able像对待任何其他 NTAccount object 一样对待它。 如果您仍然希望能够为真实帐户传递域/用户名,则内置一些简单的逻辑,如果用户名是“AweSomeAppPool”并且域为空,则默认为 AppPool SID,仅作为示例。

使用 PowerShell 调用 icacls.exe,并使用它来授予/撤销您想要的任何权限,如下所示(首先是正常的 icacls 表单命令提示符,然后是 powershell,注意区别):

icacls.exe test.txt /grant "IIS AppPool\DefaultAppPool":(OI)(CI)M
cmd /c icacls test.txt /grant "IIS AppPool\DefaultAppPool:(OI)(CI)M"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM