windows - LogonSessionId 帐户在新证书中分配了读取权限?

标签 windows powershell permissions certificate acl

我有一个问题(希望)有人可以解释一下。 我正在编写一个 Powershell 脚本,它将证书导入本地计算机存储,并将 Everyone 组的读取权限分配给证书上的私钥。

现在,我确实有一个可以完成此操作的工作脚本,但我注意到我有一个名为“LogonSessionId_0_some-random-number”的帐户分配了对私钥上的 ACL 的读取权限,如下图所示:

LogonSessionID in ACL

起初我以为这是我的脚本可能做的,但是当我手动导入证书时,我得到了相同的结果。

有没有人以前见过这个或者知道为什么会这样?这个帐户到底是什么以及为什么要分配权限?我试图为此寻找一些答案,但没有找到答案。

不确定是否有帮助,但这是我导入证书并分配权限的代码部分:


    $sslCert = gci Cert:\LocalMachine\My | WHERE {$_.Subject -match $getCerts}
    $sslCertPrivKey = $sslCert.PrivateKey
    $privKeyCertFile = Get-Item -path "$ENV:ProgramData\Microsoft\Crypto\RSA\MachineKeys\*"  | WHERE {$_.Name -eq $sslCertPrivKey.CspKeyContainerInfo.UniqueKeyContainerName}
    $privKeyAcl = (Get-Item -Path $privKeyCertFile.FullName).GetAccessControl("Access")
    $permission = "Everyone","Read","Allow"
    $accessRule = New-Object System.Security.AccessControl.FileSystemAccessRule $permission
    $privKeyAcl.AddAccessRule($accessRule)
    Set-Acl $privKeyCertFile.FullName $privKeyAcl

我使用的是 Windows 10 专业版。

非常感谢任何帮助/见解!

最佳答案

这是因为你有不同的范围。 当您在机器级别添加内容时,默认情况下它会授予所有用户读取权限。每个有权访问该计算机的人都将能够看到该证书。 您无需明确授予用户对机器级证书的读取权限。 这就像当你安装一些程序时,他们会问“为所有用户安装?”如果您选择"is",它会安装在机器级别并且每个人都可以使用它,否则它将只为您安装并使用其他用户登录意味着他们将无法访问。

注释掉脚本中特定于用户的部分以测试我所说的内容,您会注意到所有用户都被授予只读权限并且一切都会按预期工作。

关于windows - LogonSessionId 帐户在新证书中分配了读取权限?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35468700/

相关文章:

python - 尝试使用 boto3 访问 s3 存储桶,但得到 403

string - 从 PowerShell 中的路径字符串中提取最后一个组件

WordPress 无法识别/themes/文件夹中的主题

powershell - 如何创建一个简单的 MSI,运行一个带参数的简单 ps1 脚本?

android - 管理外部存储与写入外部存储

linux - WordPress unzip_file() 导致 mkdir_failed(权限)

windows - vue awesome swiper 在 Windows 上安装失败

windows - 如何在PowerShell一线式中转义空间

java - 适用于 Windows 7 的 BlueCove

powershell - 通过几个foreach收集信息,然后在脚本末尾导出export-csv