问题:
在 Windows 家庭版/专业版(Windows 10)中,创建本地服务帐户的推荐方法是什么?
有没有这方面的文档?(Powershell、GUI 等)。
澄清:这不是 Active Directory 问题 - 或 Windows 服务管理帐户问题 - 仅限于桌面。
语境:
Bittorent 的 BTSync 安装提示选择作为本地 Windows 服务启动。
在安装过程中,它会提示您输入本地服务帐户的用户名和密码。
与 Linux 一样...:
在 Linux 中,我通常使用 useradd,并将帐户与适当的组关联:
useradd -M btsync
usermod -L btsync
注意:-r 用于在 Linux 中创建服务帐户,但它是否禁用登录似乎不一致 - 并且没有记录(手册链接)。
不会创建主目录,登录将被禁用,
答案1
适用于:
Windows 7、8/8.1、Windows 10——家庭版和专业版。
程序(如 BTSync)安装服务 - 但不像其他程序(IIS、MySQL、SQL Server 等)那样遵循 Windows 服务约定。
问题:
- 软件缺陷: 某些安装(例如 BitTorrent Sync)不会安装 Windows 服务 - 除非指定了常规用户帐户。
- 预期行为:应该自动提供正确的 NT 服务帐户身份,或者至少允许用户提供。
- 安全问题:用户被迫创建另一个常规用户帐户,(作为最佳实践,这永远不应该这样做)。
- 解决方法:指定适当的服务帐户后,应删除该临时用户帐户。
参考
Windows 不使用“服务帐户”—— 在 Linux 意义上,而是“虚拟账户“ 和 ”托管服务帐户(适用于参与 LDAP 环境的计算机。
服务帐户命名约定:根据命名约定,虚拟账户应遵循以下形式:“命令名称”-[扩展] +“svc”
评论中的注释: NT Service\ 应为“属性”>“常规”选项卡中的服务名称 - 它不必包含“svc”或命令名称。(不过,我还没有用 PowerShell 脚本测试过这一点。)"btsync.exe" becomes "NT Service\btsyncsvc"
创建虚拟“NT 服务”帐户:
打开本地服务管理单元“services.msc”
导航到所需的服务(btsync),右键单击“属性”。
选择“登录”选项卡。
选择指定用户的选项。
输入上面描述的“常规”服务名称:(不带引号)。
NT Service\btsyncsvc
删除密码。
保存 - 应用
重新启动服务。
设置文件夹权限:
设置文件夹权限 - 使用完整帐户名:“NT Service \btsyncsvc”,(根据上下文可能需要或不需要使用引号......)...
btsyncsvc 不需要具有执行权限,因此如果愿意的话可以删除——否则则完全控制。
错误 - 由于“帐户名称和安全 ID 之间无映射”导致服务启动失败:
例如,如果您指定“NT Service\btsync”而不是“NT Service\btsyncsvc”,就会发生此错误...
以下命令将返回当前服务帐户名称的列表。
使用 PowerShell(PS),根据您指定用于“登录”的列表验证列表:
PS > get-service | foreach {Write-Host NT Service\$($_.Name)}
错误 - 服务无法启动,因为帐户尚未被授予“作为服务登录”权限:
如果您指定了错误的“常规名称”或者确实缺少权限,则可能会发生此错误 - 但是,如果使用正确的约定,将自动分配。
在 Windows 10 家庭版中,用户将无法使用本地安全策略管理单元来配置此功能(secpol.msc),而必须通过 PowerShell 或其他实用程序手动完成。
PowerShell 脚本:
为了解决这个问题,可以使用 PowerShell。“Grant-Log-on-as-a-service PowerShell 脚本,来自 Technet 库”:
如果 PowerShell 报告“ExecutionPolicy 错误”,则可能需要更改 ExecutionPolicy:
PS > Set-ExecutionPolicy RemoteSigned
...可能会导致签名错误--然后更改为:
PS > Set-ExecutionPolicy Unrestricted
然后使用脚本分配权限:
PS > .".\Add Account To LogonAsService.ps1" "NT Service\btsyncsvc"
如果需要,重置 ExecutionPolicy:
PS > Set-ExecutionPolicy Restricted
希望这可以帮助!