您的位置:首页 > 其它

windows下关于程序安装运行的权限问题

2015-09-09 15:35 495 查看
windows下服务一般是以如下三个账户运行的:

SYSTEM

LOCAL SERVICE

NETWORK SERVICE

那么如何理解,分别有什么功能倾向。查找网络资料我们知道,按照字面理解,local service账户一般用于运行本地服务进程,而network service 一般用于运行网络服务相关进程。

具体参考微软官方文档,我们简单介绍下:

LocalService账户是一个预定义的本地账户。该账户一般由服务控制管理器(service control manager)使用。它并不被安全子系统识别。所以你不能通过LookupAccountName来指定他的名字。该账户拥有最小的本地权限,以匿名凭证进行网络访问(原文:presents anonymous credentials on the network,不知道怎么准确翻译)。该账户可以在调用CreateService和ChangeServiceConfig时指定。注意,该账户该账户没有口令,所以你提供的所有口令信息都会被忽略。用户的SID通过SECURITY_LOCAL_SERVICE_RID 被创建。LocalService账户在HKEY_USERS有自己的子键。

NetWorkService是本地的预定义账户,由服务控制管理器使用。它并不被安全子系统识别。所以你不能通过LookupAccountName来指定他的名字。该账户拥有扩展的去权限,作为网络上的一台主机运行。该账户拥有最小的本地权限,同时面向网络上匿名认证。该账户可以在调用CreateService和ChangeServiceConfig时指定。以NetService账户运行的服务, 它能够以计算机的名义访问网络资源(原文presents the computer’s credentials to remote servers,不知道怎么准确翻译,暂且沿用网上的翻译)。

LocalSystem是本地的预定义账户,由服务控制管理器使用。它并不被安全子系统识别。所以你不能通过LookupAccountName来指定他的名字。该账户拥有最小的本地权限,作为网络上的一台主机运行。它可以访问绝大多数系统对象。该账户的的本地命名空间中的名字是 .\LocalSystem。 LocalSystem 或者 ComputerName\LocalSystem可以被当做该账户的名字使用。该账户没有密码。

该账户和登入系统的用户账户没有关联。大多数服务不需要这么高的权限。如果你的服务不需要这么多的权限,并且不是一个交互式的服务,考虑使用LocalService 或者 NetworkService 账户。

上面说了这么多,简单说:

localsystem, 拥有很高的权限,能不用就不用。只有本地的一些比较重要的需要访问系统核心数据的服务以该在账户运行。如果服务存在漏洞,被入侵,那么入侵的线程也有拥有了很高的权限。

networkservice,本地权限少一点,但是一般试用于有网络链接的服务。

localservice,权限最小,只能用于启动本地服务。

关于权限相关的实际案例,可以访问这篇文章

另外说一个命令

sc showsid [name]

查看本地服务sid

同时stackoverflow上的这篇文章也说的很好。我读了一遍,大概意思是:

LocalService账户(首选的),名字是 NT AUTHORITY\LocalService,和NetService账户非常像,适用于以最小权限运行的服务。但是它不像NetworkService,它不能作为主机访问网络。

NetworkService,名字为NT AUTHORITY\NetworkService,它也是以最小权限运行,比LocalSystem要受限很多,但是它有权限访问网络。

LocalSystem,完全受信账号。受信任程度甚至超过管理员账号。

在默认的情况下,服务进程已local system账户运行。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: