“本地系统”帐户和“networking服务”帐户之间的区别?
我写了一个Windows服务,产生一个单独的过程。 这个过程创build一个COM对象。 如果服务在“本地系统”帐户下运行一切正常,但如果服务在“networking服务”帐户下运行,则外部进程启动,但无法创buildCOM对象。 从COM对象创build返回的错误不是一个标准的COM错误(我认为它是特定于正在创build的COM对象)。
那么,我该如何确定两个账户“本地系统”和“networking服务”的区别? 这些内置的账户看起来很神秘,似乎没有人知道这些。
由于标准服务帐户的function有太多的困惑,所以我会尽量快速运行。
首先是实际账户:
-
LocalService帐户 (首选)
与networking服务非常相似的有限服务帐户,用于运行标准的最低特权服务。 但是,与networking服务不同
的是,当机器以匿名用户的身份访问networking时,无法访问networking。- 名称:
NT AUTHORITY\LocalService
- 该帐户没有密码(您提供的密码信息被忽略)
- HKCU代表LocalService用户帐户
- 在本地计算机上拥有最less的权限
- 在networking上呈现匿名凭证
- SID :S-1-5-19
- 有HKEY_USERSregistry项(
HKEY_USERS\S-1-5-19
)下它自己的configuration文件
- 名称:
-
NetworkService帐户
有限的服务帐户,旨在运行标准的特权服务。 这个账户远比本地系统(甚至是pipe理员)有限,但仍然有权以机器的方式访问networking(参见上文注意事项)。
-
NT AUTHORITY\NetworkService
- 该帐户没有密码(您提供的密码信息被忽略)
- HKCU代表NetworkService用户帐户
- 在本地计算机上拥有最less的权限
- 将计算机的凭据(例如
MANGO$
)提供给远程服务器 - SID :S-1-5-20
- 在HKEY_USERSregistry项(
HKEY_USERS\S-1-5-20
)下有它自己的configuration文件 - 如果尝试使用它来安排任务,请在select用户或组对话框中input
NETWORK SERVICE
-
-
LocalSystem帐户 (危险,请勿使用!)
完全可信的帐户,比pipe理员帐户更重要。 这个账户无法做到,它没有任何东西,它有权作为机器访问networking(这需要Active Directory并授予机器账户权限)
- 名称:
.\LocalSystem
(也可以使用LocalSystem
或ComputerName\LocalSystem
) - 该帐户没有密码(您提供的密码信息被忽略)
- SID :S-1-5-18
- 没有任何个人资料(
HKCU
代表默认用户) - 在本地计算机上拥有广泛的权限
- 将计算机的凭据(例如
MANGO$
)提供给远程服务器
- 名称:
上面谈到访问networking时,这仅涉及SPNEGO (协商),NTLM和Kerberos,而不涉及任何其他身份validation机制。 例如,作为LocalService
运行的处理仍然可以访问Internet。
以开箱即用的帐户运行的一般问题是,如果您修改了任何默认权限,那么您将扩展所有以该帐户运行的组件。 因此,如果将DBO授予数据库,则不仅作为本地服务或networking服务运行的服务可以访问该数据库,还可以作为这些帐户运行的其他所有服务也可以访问该数据库。 如果每个开发者都这样做,那么计算机将具有一个服务帐户,该帐户有权执行几乎任何事情(更具体而言是授予该帐户的所有不同额外特权的超集)。
从安全的angular度来看,总是希望以自己的服务帐户运行,而这正是您所需的权限,而不是您的服务所做的任何事情。 但是,这种方法的成本是设置您的服务帐户,并pipe理密码。 这是每个应用程序需要pipe理的平衡行为。
在您的具体情况中,您可能看到的问题是DCOM或COM +激活仅限于给定的一组帐户。 在Windows XP SP2,Windows Server 2003及更高版本中,激活权限受到显着限制。 您应该使用组件服务MMCpipe理单元来检查您的特定COM对象并查看激活权限。 如果你没有访问networking上的任何东西作为机器帐户,你应该认真考虑使用本地服务 (不是本地系统,这基本上是操作系统)。
在Windows Server 2003中, 您不能像计划任务那样运行
-
NT_AUTHORITY\LocalService
(又名本地服务帐户)或 -
NT AUTHORITY\NetworkService
(又名networking服务帐户)。
仅在Windows Vista / Windows Server 2008及更新版本中才存在的Task Scheduler 2.0中添加了此function。
作为NetworkService
运行的服务将在networking上显示机器凭据。 这意味着如果您的电脑被称为mango
, 它将作为机器账户 MANGO$
呈现 :