代码之家  ›  专栏  ›  技术社区  ›  jmatthias

“本地系统”帐户和“网络服务”帐户之间的差异?

  •  353
  • jmatthias  · 技术社区  · 16 年前

    我编写了一个Windows服务,它生成一个单独的进程。此过程创建一个COM对象。如果服务在“本地系统”帐户下运行,一切正常,但如果服务在“网络服务”帐户下运行,则外部进程将启动,但无法创建COM对象。COM对象创建返回的错误不是标准COM错误(我认为它特定于正在创建的COM对象)。

    那么,我如何确定“本地系统”和“网络服务”这两个帐户的区别呢?这些内置帐户似乎非常神秘,似乎没有人对它们了解很多。

    1 回复  |  直到 15 年前
        1
  •  740
  •   Tim Cooper    5 年前

    由于对标准服务帐户的功能有太多的混淆,我将试着简要介绍一下。

    首先是实际账目:

    • LocalService account (首选)

      与网络服务非常相似的有限服务帐户,用于运行标准的最低特权服务。然而,与网络服务不同的是,它作为一种服务访问网络 匿名的 使用者

      • 姓名: NT AUTHORITY\LocalService
      • 香港大学代表 本地服务 用户帐户
      • 最小的 本地计算机上的权限
      • 匿名的 网络上的凭据
      • 希德
      • 香港大学用户 HKEY_USERS\S-1-5-19 )

    • NetworkService account

      用于运行标准特权服务的有限服务帐户。此帐户的限制远大于本地系统(甚至管理员),但仍有权作为计算机访问网络(请参阅上面的警告)。

      • NT AUTHORITY\NetworkService
      • 香港大学代表 网路服务 用户帐户
      • 最小的 本地计算机上的权限
      • MANGO$ )到远程服务器
      • 希德 :S-1-5-20
      • 香港大学用户 注册表项( HKEY_USERS\S-1-5-20 )
      • NETWORK SERVICE 进入 选择用户或组

    • LocalSystem account

      完全受信任的帐户,比管理员帐户更受信任。在单个框中没有此帐户无法执行的操作,并且它有权作为计算机访问网络(这需要Active Directory并向计算机帐户授予某些权限)

      • 姓名: .\LocalSystem (也可以使用 LocalSystem ComputerName\LocalSystem )
      • 帐户没有密码(忽略您提供的任何密码信息)
      • 希德 :S-1-5-18
      • 没有自己的配置文件( HKCU 违约 (用户)
      • 本地计算机上的权限
      • 显示计算机的凭据(例如。 芒果$ )到远程服务器

    SPNEGO (协商)、NTLM和Kerberos,而不是任何其他身份验证机制。例如,处理运行为 LocalService

    作为一个标准的开箱即用帐户运行的一般问题是,如果您修改了任何默认权限,那么您正在扩展一组以该帐户运行的所有功能。因此,如果您将DBO授予数据库,则不仅可以作为本地服务或网络服务运行的服务访问该数据库,还可以作为这些帐户运行的所有其他服务。如果每个开发人员都这样做,那么计算机将拥有一个服务帐户,该帐户实际上拥有执行任何操作的权限(更具体地说,是授予该帐户的所有不同附加权限的超集)。

    从安全角度来看,最好是作为您自己的服务帐户运行,该帐户具有您所需的权限,可以执行您的服务所做的事情,而不执行其他任何操作。但是,这种方法的成本是设置您的服务帐户和管理密码。这是每个应用程序都需要管理的一种平衡行为。

    在您的具体案例中,您可能看到的问题是DCOM或COM+激活仅限于给定的一组帐户。在Windows XP SP2、Windows Server 2003及以上版本中,激活权限受到明显限制。您应该使用组件服务MMC管理单元来检查特定的COM对象并查看激活权限。如果你没有在网络上访问任何你应该认真考虑使用的机器帐户 当地服务


    在Windows Server 2003中 you cannot run a scheduled task

    • NT_AUTHORITY\LocalService (又名本地服务账户),或
    • NT授权\网络服务

    该功能仅随任务一起添加 Scheduler 2.0 ,它仅存在于Windows Vista/Windows Server 2008及更高版本中。

    作为服务运行的服务 NetworkService mango , it would present as the machine account 芒果$

    enter image description here