首页 文章

'Local System'帐户和'Network Service'帐户之间的区别?

提问于
浏览
349

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

那么,我如何确定“本地系统”和“网络服务”这两个帐户的区别?这些内置帐户看起来非常神秘,似乎没有人知道它们 .

1 回答

  • 639

    由于对标准服务帐户的功能存在很多混淆,我会尝试快速解决 .

    首先是实际账户:

    有限的服务帐户,与网络服务非常相似,旨在运行标准的最低权限服务 . 但是,与网络服务不同,它无法访问网络,因为计算机以匿名用户身份访问网络 .

    • 姓名: NT AUTHORITY\LocalService

    • 该帐户没有密码(您提供的任何密码信息都会被忽略)

    • HKCU代表 LocalService 用户帐户

    • 在本地计算机上具有最小权限

    • 在网络上显示匿名凭据

    • SID :S-1-5-19

    • HKEY_USERS 注册表项下有自己的配置文件( HKEY_USERS\S-1-5-19

    • NetworkService account

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

    • NT AUTHORITY\NetworkService

    • 该帐户没有密码(您提供的任何密码信息都会被忽略)

    • HKCU代表 NetworkService 用户帐户

    • 在本地计算机上具有最小权限

    • 将计算机的凭据(例如 MANGO$ )显示给远程服务器

    • SID :S-1-5-20

    • HKEY_USERS 注册表项下有自己的配置文件( HKEY_USERS\S-1-5-20

    • 如果尝试使用它安排任务,请在“选择用户或组”对话框中输入 NETWORK SERVICE

    • LocalSystem account(危险,请勿使用!)

    完全信任的帐户,比管理员帐户更多 . 这个帐户无法在一个盒子上执行任何操作,并且它有权作为计算机访问网络(这需要Active Directory并授予计算机帐户权限)

    • 名称: .\LocalSystem (也可以使用 LocalSystemComputerName\LocalSystem

    • 该帐户没有密码(您提供的任何密码信息都会被忽略)

    • SID :S-1-5-18

    • 没有自己的任何 Profiles ( HKCU 代表 default 用户)

    • 在本地计算机上拥有广泛的权限

    • 将计算机的凭据(例如 MANGO$ )显示给远程服务器

    在谈到访问网络时,这仅涉及SPNEGO(协商),NTLM和Kerberos,而不涉及任何其他身份验证机制 . 例如,作为 LocalService 运行的处理仍然可以访问互联网 .

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

    从安全角度来看,始终最好以您自己的服务帐户身份运行,该服务帐户具有您执行服务所需的权限,而不是其他任何权限 . 但是,此方法的成本是设置您的服务帐户和管理密码 . 这是每个应用程序需要管理的 balancer 行为 .

    在您的特定情况下,您可能看到的问题是DCOM或COM激活仅限于给定的一组帐户 . 在Windows XP SP2,Windows Server 2003及更高版本中,激活权限受到显着限制 . 您应该使用组件服务MMC管理单元检查您的特定COM对象并查看激活权限 . 如果您不是作为计算机帐户访问网络上的任何内容,则应认真考虑使用 Local Service (不是本地系统,基本上是操作系统) .


    在Windows Server 2003中you cannot run a scheduled task as

    • NT_AUTHORITY\LocalService (又名本地服务帐户),或

    • NT AUTHORITY\NetworkService (又名网络服务帐户) .

    该功能仅在Task Scheduler 2.0中添加,该功能仅存在于Windows Vista / Windows Server 2008及更高版本中 .

    运行为的服务 NetworkService 显示网络上的计算机凭据 . 这意味着,如果您的计算机被称为 mangoit would present as the machine account MANGO$

    enter image description here

相关问题