使用 EC2Launch sysprep 时,为目录设置凭证的正确方法是什么?

使用 EC2Launch sysprep 时,为目录设置凭证的正确方法是什么?

我创建了一个这样的启动脚本:

$FolderPath = "C:\Path\To\Your\Directory"
$UserAccount = "Domain\User" # Replace with the appropriate user or group
$Acl = Get-Acl $FolderPath
$AccessRule = New-Object 
System.Security.AccessControl.FileSystemAccessRule($UserAccount, "FullControl", 
"ContainerInherit, ObjectInherit", "None", "Allow") # Replace 'FullControl' with the desired permission level
$Acl.SetAccessRule($AccessRule)
Set-Acl $FolderPath $Acl

并将其设置为运行Computer Configuration > Windows Settings > Scripts (Startup/Shutdown) > Startup > Powershell

但是当我运行EC2Launch sysprepEC2 实例时,会丢失Domain\User中的文件权限。具体来说,C:\Path\To\Your\Directory我试图让 IIS 托管一个网站,以便对这两个目录进行测试。IIS 在我之前托管网站,但在权限消失之后。作为进一步的测试,我在运行后继续创建一个 AMI ,并在 elastic beanstalk 环境中将该 AMI 用于 Auto Scaling Group,但它在那里也不起作用。C:\users\admin\desktop\public%SystemDrive%\inetpub\wwwrootEveryone Full ControlEC2Launch sysprepEC2Launch sysprep

我是否正确地为用户设置了目录权限?它在执行我的脚本时以哪个帐户运行?也许该帐户需要以管理员身份运行?

基本上,我希望有人知道在 AMI 中授予Domain\User访问权限的正确方法。C:\Path\To\Your\Directory

答案1

您不必在启动脚本中设置权限,而是可以使用EC2Launch配置文件来设置权限,因为 EC2Launch sysprep 可以在运行时重置设置。

首先创建一个powershell(不要忘记替换YourDomainYourUser

script $FolderPath = "C:\Path\To\Your\Directory"
$DomainName = "YourDomain"
$UserName = "YourUser"
$UserAccount = "$DomainName\$UserName"
$Acl = Get-Acl $FolderPath
$AccessRule = New-Object System.Security.AccessControl.FileSystemAccessRule($UserAccount, "FullControl", "ContainerInherit, ObjectInherit", "None", "Allow")
$Acl.SetAccessRule($AccessRule)
Set-Acl $FolderPath $Acl

然后我们转到Ec2LaunchSettings.ps1位于C:\ProgramData\Amazon\EC2-Windows\Launch\Script并将其添加到末尾(Path\To\Your\Script.ps1这是我们刚刚创建的脚本的路径)

& "C:\Path\To\Your\Script.ps1"

然后我们保存Ec2LaunchSettings.ps1,现在您可以重新运行EC2Launchsysprep,它应该可以工作。

相关内容