Chcę mieć możliwość ustawienia konta IIS dla nowych stron internetowych, aby miały uprawnienia do modyfikacji. Mam następujący skrypt:
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
}
Jednak gdy go uruchamiam, otrzymuję takie błędy:
Set-Acl: Relacja zaufania między tą stacją roboczą a domeną podstawową nie powiodła się.
Myślę, że dzieje się tak, ponieważ IIS APPPOOL
nie jest to prawdziwa domena, ale dziwny prefiks na fałszywym koncie. Czy istnieje poprawny sposób na odniesienie się do tego konta, aby umożliwić mi działanie?
AddAccessRule
: „Niektórych lub wszystkich odniesień do tożsamości nie udało się przetłumaczyć”. Jakieś pomysły, co to może być?icacls
świetnie pracować, dzięki za pomoc! Skończyło się na tym, że treść funkcji (takie same parametry jak powyżej) jestcmd /c icacls "$directory" /grant ("$domain\$username" + ':(OI)(CI)M') /t /c /q
(z/t
pracą rekurencyjną nad katalogiem,/c
kontynuowaniem błędów i/q
tłumieniem komunikatów o sukcesie dla każdego pliku).Coś takiego powinno załatwić sprawę. Powinien też być w stanie rozwiązać IIS APPPOOl \ Anything ...
źródło
SetAccessRule
: „Niektórych lub wszystkich odniesień do tożsamości nie udało się przetłumaczyć”.Set-AclOnPath .\Website "IIS APPPOOL\website.dev"
, chociaż przy ponownej próbie pojawia się inny błąd: „Relacja zaufania między tą stacją roboczą a domeną podstawową nie powiodła się”.Poniższe działa w systemie Windows 2012, aby uzyskać identyfikator SID dla witryny IIS. Wymaga dostawcy usług IIS, który korzysta z modułu PowerAdministration WebAdministration, ale ten artykuł wskazuje, że będzie działał w systemie Windows 2008R2.
źródło
AddAccessRule
” z argumentami „1”: „Niektórych lub wszystkich odwołań do tożsamości nie można przetłumaczyć.” ”NTAccount
działający.Import-Module WebAdministration
aby uzyskać dysk IIS od dostawcy IIS.Począwszy od IIS 10 / Windows 10 / Server 2016, moduł WebAdministration jest przestarzały i spodziewamy się, że użyjemy nowego modułu PowerShell administracji IIS. Oto jak przekonwertować identyfikator SID puli aplikacji na wirtualnego użytkownika za pomocą nowego modułu:
źródło
Poniższe działało dla mnie w systemie Windows 2012, nie mogłem uruchomić innych przykładów:
źródło
$acl.SetAccessRuleProtection($True, $False)
ponieważ ostatnim parametrem jest PreserveInheritance. Dziękujemy za opublikowanie tego!