CharlesChen's Technical Space

简单实用是我一直在软件开发追求的目标(I Focus on. Net technology, to make the greatest efforts to enjoy the best of life.)
Not the best, only better
  博客园  :: 首页  :: 联系 :: 订阅 订阅  :: 管理

    本文转载于:使用本地系统帐户和域用户帐户两者区别(microsoft SQLServer2000)

    在安装SQLSERVER2000时,会有这样的一个选择画面,这是设置启动sqlserver服务的登录身份。SQLSERVER2000装好后,会产生一个MSSQLSERVER服务,在这里设置的就是启动它这个服务的登录身份。 
        那么我们究竟要选择哪一个呢?两者各代表什么意思呢?下文我们就来研究一下。

        我们先看熟悉一下两个相关概念。

什么是凭据?
        Windows凭据(Credential)其实就是指用户帐户和口令,我们调用一些API,如WTSOpenServer,QueryServiceStatus,netUserEnum等等涉及到RPC的,只要当前用户存储有目标远程机的权限合适的凭据,则这些API就不会因产生ERROR_ACCESS_DENIED而执行失败。
        不好理解么?那么我们来看一下访问别的计算机的情形,加深理解。访问远程计算机必然用到rpc。
 
        上图就是我们连接到IP为172.16.100.1计算时的情形,这个时候是需要我们输入用户帐户与密码的。这里的用户帐户与密码就是所谓的凭据。
 
        当我们输入用户帐户与密码后,并把“记住我的密码”打上勾,点确定。那么我们的凭据(即这个用户帐户与密码)被存储了,以后再访问的时候就无须再输入。

安全上下文
        安全上下文(Security context)是指在一个系统中有效的安全属性或规则。

       下面我们来看SQLSERVER2000服务的两种登录方式:本地系统帐户和域用户帐户

本地系统帐户:

        该帐户是对本地计算机具有管理员权限的预定义本地帐户。在本地系统帐户的安全上下文中运行的服务向远程服务器提供本地计算机的凭据。在本地系统帐户的安全上下文中运行的服务不能建立身份验证会话,因为本地系统帐户不属于域中的 Everyone 组。因此,使用该帐户的服务只能通过空会话(没有凭据)来访问网络资源。(这个访问指的是为了完成某项任务服务的自动访问,和我们的连接SQL服务器不一概念)

域用户帐户:

使用专用域用户帐户作为登录帐户

        域用户帐户是指在 Active Directory 目录服务中创建的用户帐户。该帐户是域中 Authenticated Users 组的成员。在域用户帐户的安全上下文中运行的服务向远程服务器提供域用户帐户的 Kerberos 票证。在域用户帐户的安全上下文中运行的服务可以访问经过身份验证的用户或特定用户帐户有权访问的远程服务器上的资源。

使用本地用户帐户作为登录帐户

        本地用户帐户是指在本地计算机上创建的Windows用户帐户。在本地用户帐户的安全上下文中运行的服务向远程服务器提供本地用户帐户的访问标记。如果在远程服务器上配置了匹配用户名和密码,则使用本地用户帐户的服务将能够访问同名帐户有权访问的远程服务器上的资源。虽然此方案行之有效,但是维护这些单独的帐户并保持帐户密码同步将增加管理开销。
         如果你没有加入域,但又需要连接到网络资源,那么可以使用本地用户帐户作为登录帐户。
         由此可见使用域用户帐户可以使用凭据来访问远程计算机,并使用相应的资源。

        例如SQLSERVER服务,当它进行以下操作时,是需要访问远程计算机的。
        • 远程过程调用。
        • 复制。
        • 备份到网络驱动器。
        • 涉及远程数据源的异类联接。
        • SQL Server 代理邮件功能和 SQL 邮件。

         在这几种情况下是无法不使用凭证去访问远程计算机,并使用其资源的。所以必须得把登录类型改为“域用户帐户”,并输入在远程计算机上配置好的,存在的“用户名”和“密码”。

如果只是装在本机进行开发或学习,完全没必要使用域用户帐户登录模式,因为有时候因为切换不同用户而导致服务不能启动。

修改SQLSERVER服务的登录类型

        服务的登录类型是随时可以改变的。可以需要的时候通过以下两种方法修改SQLSERVER服务的登录类型。

1. 通过企业管理器修改

   右击SQLSERVER服务器---“属性”---“安全性”下的“启动服务帐户”
 

2.通过服务修改

 “控制面板”---“服务”----“MSSQLSERVER”,右击---“属性”---“登录”
 

 装SQLSERVER时遇到的一些问题
1.在安装时出现提示"command line option syntax error!type command /? for help"
    这是因为你可能把SQLSERVER的安装文件放在了中文目录下,可以你它改为英文目录即可。每一级目录都不能含有中文。
2.出现提示"以前的某个程序安装已在安装计算机上创建挂起的文件操作。运行安装程序之前必须重启计算机"
  打开注册表编辑器(或在命令行输入:regedit),在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager中找到PendingFileRenameOperations项目,并删除它。然后进行安装。

 

 PS:

Local System/Network Service/Local Service权限介绍

1.Local   System (本地系统):
该账户具有相当高的权限。
首先,该账户也隶属于本地Administrators   用户组,因此所有本地Administrators用户能够进行的操作该账户也能够进行,
其次,该账户还能够控制文件的权限(NTFS   文件系统)和注册表权限,甚至占据所有者权限来取得访问资格。
如果机器处于域中,那么运行于Local   System   账户下的服务还可以使用机器账户在同一个森林中得到其他机器的自动认证,
最后一点就是运行于Local   System   下的进程能够使用空会话(null   session)去访问网络资源。
而且,其他一些Windows 用户模式下的核心组件也运行于该账户下,例如system32\Smss.exe 等。
需要注意的是,运行于此账户下的进程使用的是HKEY_USERS\.Default 账户配置,因此它不能够访问其他账户的配置。

举例来说,以LocalSystem账户运行的服务主要有:WindowsUpdate   Client、   Clipbook、Com+、DHCP   Client、Messenger  

Service、Task   Scheduler、Server   Service、Workstation   Service,还有Windows   Installer。

2.Network   Service(网路服务):
该账户也是为了使用机器账户在网络上的其他计算机上认证而设定的。但是他没有Local   System   那么多的权限。
它能够以计算机的名义访问网络资源。以这个账户运行的服务会根据实际环境把访问凭据提交给远程的计算机。
运行于此账户下的进程使用网络账户配置文件HKEY_USERS\S-1-5-20和Documents and Settings\NetworkService。
举例来说,以Network   Service账户运行的服务主要有:Distributed   Transaction   Coordinator、DNS   Client、

Performance   Logs   and   Alerts,还有RPC   Locator。

 

3.Local   Service(本地服务):
Local   Service账户是预设的拥有最小权限的本地账户,并在网络凭证中具有匿名的身份。
运行于此账户下的进程和运行于Network   Service   账户下的进程的区别
在于运行于Local   Service   账户下的进程只能访问允许匿名访问的网络资源。
运行于Local   Service   下的账户使用的配置文件是HKU\S-1-5-19   和Documents   and   Settings\LocalService。

举例来说,以Local   Service账户运行的服务主要有:Alerter、Remote   Registry、Smart   Card、SSDP,还有WebClient。

 

 Local System/Network Service/Local Service权限列表 

 1、本地系统:

内置帐户,该帐户具有较高的访问权限级别。如果工作进程标识作为“本地系统”帐户运行,则该工作进程具有整个系统的完全访问权限

 

2、网络服务

内置帐户,该帐户的系统访问权限比“本地系统”帐户少,但仍能通过网络与计算机帐户的凭据进行交互。对于 IIS 6.0,建议以“网络服务”帐户的身份运行为应用程序池定义的工作进程标识。默认情况下,该工作进程标识以“网络服务”帐户的身份运行。

默认的用户权限:

  • 替换进程级令牌 (SeAssignPrimaryTokenPrivilege)
  • 调整进程的内存配额 (SeIncreaseQuotaPrivilege)
  • 生成安全审核 (SeAuditPrivilege)
  • 忽略遍历检查 (SeChangeNotifyPrivilege)
  • 从网络访问此计算机 (SeNetworkLogonRight)
  • 作为批处理作业登录 (SeBatchLogonRight)
  • 作为服务登录 (SeInteractiveLogonRight)
  • 允许本地登录 (SeInteractiveLogonRight)  
  •  

    3、本地服务

    内置帐户,该帐户的计算机访问权限比“网络服务”帐户少,并且该帐户的用户权限仅限于本地计算机。如果工作进程不需要访问所在服务器之外的地方,则可以使用“本地服务”帐户。 默认用户权限:

    • 替换进程级令牌 (SeAssignPrimaryTokenPrivilege)
    • 调整进程的内存配额 (SeIncreaseQuotaPrivilege)
    • 生成安全审核 (SeAuditPrivilege)
    • 忽略遍历检查 (SeChangeNotifyPrivilege)
    • 从网络访问此计算机 (SeNetworkLogonRight)
    • 作为批处理作业登录 (SeBatchLogonRight)