Quiero poder configurar la cuenta de IIS para que los nuevos sitios web tengan permisos de modificación. Tengo el siguiente script:
function Set-ModifyPermission ($directory, $username, $domain = 'IIS APPPOOL') {
$inherit = [system.security.accesscontrol.InheritanceFlags]"ContainerInherit, ObjectInherit"
$propagation = [system.security.accesscontrol.PropagationFlags]"None"
$acl = Get-Acl $directory
$user = New-Object System.Security.Principal.NTAccount($domain, $username )
$accessrule = New-Object system.security.AccessControl.FileSystemAccessRule($user, "Modify", $inherit, $propagation, "Allow")
$acl.AddAccessRule($accessrule)
set-acl -aclobject $acl $directory
}
Sin embargo, cuando lo ejecuto, obtengo errores como este:
Set-Acl: la relación de confianza entre esta estación de trabajo y el dominio primario falló.
Creo que esto se debe a IIS APPPOOL
que no es un dominio real, sino que es un prefijo extraño en una cuenta falsa. ¿Hay una manera correcta de referirme a esa cuenta para que pueda hacer que esto funcione?
AddAccessRule
: "Algunas o todas las referencias de identidad no se pudieron traducir". ¿Alguna idea de lo que podría ser?icacls
trabajar muy bien para mí, ¡gracias por la ayuda! Terminé con el cuerpo de la función (los mismos parámetros que arriba) siendocmd /c icacls "$directory" /grant ("$domain\$username" + ':(OI)(CI)M') /t /c /q
(con el/t
trabajo recursivo en el directorio,/c
para continuar después de cualquier error y/q
para suprimir los mensajes de éxito para cada archivo).Algo como esto debería hacerte el truco. También debería ser capaz de resolver IIS APPPOOl \ Anything ...
fuente
SetAccessRule
: "Algunas o todas las referencias de identidad no se pudieron traducir".Set-AclOnPath .\Website "IIS APPPOOL\website.dev"
, aunque cuando lo intento de nuevo, aparece un error diferente: "La relación de confianza entre esta estación de trabajo y el dominio principal falló".Lo siguiente funciona en Windows 2012 para obtener un SID para el sitio IIS. Requiere el proveedor IIS que utiliza el módulo PowerShell de WebAdministration, pero este artículo indica que funcionará en Windows 2008R2.
fuente
AddAccessRule
' con '1' argumento (s): 'Algunas o todas las referencias de identidad no se pudieron traducir'".NTAccount
trabajo real .Import-Module WebAdministration
para obtener la unidad IIS del proveedor de IIS.A partir de IIS 10 / Windows 10 / Server 2016, el módulo de WebAdministration está en desuso y se espera que usemos el nuevo módulo IISAdministration Powershell. A continuación, se explica cómo traducir el SID del grupo de aplicaciones al usuario virtual mediante el nuevo módulo:
fuente
Lo siguiente funcionó para mí en Windows 2012, no pude hacer funcionar los otros ejemplos:
fuente
$acl.SetAccessRuleProtection($True, $False)
ya que el último parámetro aquí es PreserveInheritance. ¡Gracias por publicar esto!