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账户运行。
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账户运行。
相关文章推荐
- 数控玻璃异形磨边CAD/CAM系统开发
- Openfire修改Domain域值
- 0909 18余佳梓
- hdu1285 拓扑序
- 无法找到该网页 显示http 404错误
- LeetCode_remove-duplicates-from-sorted-list
- PAT 1091. Acute Stroke (30)
- 学习VIM——网络资源
- java深入学习(一)
- Java正则表达式应用
- 64位win7启动VirtualBox出错Error e_fail 0x80004005
- tmux使用笔记
- 杭电ACM2056java做法
- [持续更新]CSS3学习笔记(三)弹性盒子
- 把数组排成最小的数
- 唠叨唠叨最近
- Java:多线程,线程池,使用CompletionService通过Future来处理Callable的返回结果
- js页面加载顺序
- 数学思想方法-sasMEMO(17)
- 唠叨唠叨最近