我创建了一个这样的启动脚本:
$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 sysprep
EC2 实例时,会丢失Domain\User
中的文件权限。具体来说,C:\Path\To\Your\Directory
我试图让 IIS 托管一个网站,以便对这两个目录进行测试。IIS 在我之前托管网站,但在权限消失之后。作为进一步的测试,我在运行后继续创建一个 AMI ,并在 elastic beanstalk 环境中将该 AMI 用于 Auto Scaling Group,但它在那里也不起作用。C:\users\admin\desktop\public
%SystemDrive%\inetpub\wwwroot
Everyone
Full Control
EC2Launch sysprep
EC2Launch sysprep
我是否正确地为用户设置了目录权限?它在执行我的脚本时以哪个帐户运行?也许该帐户需要以管理员身份运行?
基本上,我希望有人知道在 AMI 中授予Domain\User
访问权限的正确方法。C:\Path\To\Your\Directory
答案1
您不必在启动脚本中设置权限,而是可以使用EC2Launch
配置文件来设置权限,因为 EC2Launch sysprep 可以在运行时重置设置。
首先创建一个powershell
(不要忘记替换YourDomain
和YourUser
)
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
,现在您可以重新运行EC2Launch
sysprep,它应该可以工作。