解析进程为何不能访问网络资源(作者Bingle)
2008-01-03 20:10
387 查看
解析进程不能访问网络资源------- 本地系统账号和IIS模拟作者:Bingle前言system权限的进程使用net use访问网络共享时产生“系统发生 1312 错误,指定的登录会话不存在,可能已被终止。”,本文试图对此进行一下解释。再有就是使用IIS创建的进程通常也不能使用网络资源,产生的错误是一样的,原因也在这篇文章里阐述了。本地系统账号当用户登录系统时,Windows NT/2000 将验证他的密码,如果用户验证成功,系统产生一个访问令牌,它包含用户安全标示符(SID)、组SID列表、特权列表和模拟(Impersonating)信息等安全信息。该用户启动的任何进程都将附加该令牌,访问令牌代表进程的安全环境,它控制了进程与可保护对象(securable object)的交互。当进程访问一个可保护对象时,系统将该对象的访问控制列表(ACL)中的每个访问控制项(ACE)和访问令牌中的 SID 进行比较以确定进程是否可以访问该对象。由于用户启动的任何进程都将附加该用户的访问令牌,因此任何进程都知道用户的 SID 并且可以访问它。 Local System 账号是内置的系统账号,所有系统进程都在 Local System 的安全环境中运行,Local System 账号是用于启动服务的默认账号,它继承了服务控制管理器的安全环境,在本地计算机上拥有几乎无限的权限。在 Local System 账号环境运行的进程没有与任何已登录的用户账号相联系,没有用于验证的信任凭证(用户名、域和密码),而该信任凭证(credential)用于网络上其他计算机的验证,这样以 Local System 账号运行的进程就不能访问网络资源,如网络共享。 在 Local System 账号环境运行的进程和普通进程的不同之处在于:1) 注册表的 HKEY_CURRENT_USER 键是和缺省用户而不是当前用户相联系的,要访问其他用户的配置文件,需要先模拟该用户,然后再访问 HKEY_CURRENT_USER 。 2) 可以打开 HKEY_LOCAL_MACHINE/SECURITY 注册表键3) 该进程不能访问网络资源,如共享、管道,因为它不能提供信任凭证,而只能使用空连接。 在 HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/LanmanServer/Parameters 处的 NullSessionPipes 和 NullSessionShares 的值指明了可以被空连接访问的管道和共享。 或者也可以设置 RestrictNullSessAccess = 0,以允许空连接的用户访问该计算机上的所有管道和共享。(呵呵,这个是个安全隐患呦,可不要干呀。上边两个值最好也全都设成空)4) 不能和其他程序共享对象,除非在创建对象时设置 DACL 允许用户访问。5) 如果启动命令行提示符来运行批处理文件,用户可以按 Ctrl+C 来终止批处理的运行,并且用户就获得了一个 Local System 权限的 shell。IIS服务的模拟正是由于服务程序运行在权限极大的 Local System 账号下,如果网络客户也使用该账号来访问系统将给系统带来安全隐患,因此 NT/2000 提供了模拟功能 --- 服务程序在处理客户请求时使用一个权限较低的客户身份运行,处理完客户请求再恢复。IIS就是使用这个原理,虽然配置 IIS 以 Local System 账号运行,而一般的匿名请求就是以 IUSR_computer 身份(guests 组)和 IWAM_computer 身份(guests 组)运行的。模拟又分两种,在进程里使用模拟令牌来模拟某个用户(模拟令牌里的用户)和使用主要令牌来创建新的进程。在进程内的某个线程可以使用 ImpersonateLoggedOnUser(同时需要提供一个代表某个登录用户的模拟令牌)模拟用户时,这个线程就是该模拟令牌代表的用户的身份,处理完成后使用 RevertToSelf 恢复自己的身份。创建新的进程使用 CreateProcessAsUser(比 CreateProcess 函数多一个主要令牌的参数),这样启动的新进程就不是父进程的身份,而是主要令牌代表的登录用户。对于asp、asa等ISAPI扩展,是动态连接库的形式,是进程内的模拟;而CGI程序(cmd.exe,ncx99.exe)则是使用的创建新进程方式进行的模拟。 不过即使我们通过IIS启动了进程,一般仍然不能使用网络资源,就是不能使用 net use,如果使用将产生“系统发生 1312 错误。指定的登录会话不存在。可能已被终止。”的错误,这是因为不同的登录类型造成的。Windows NT支持以下5种登录类型:
参考文献:本来2000/5的资料是这样的:The service cannot open the registry key HKEY_CURRENT_USER. 后来获得最新资料,微软的说法有变,意思自然也不同了。 原文地址及参考资料:www.red8black.com |
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=12727
相关文章推荐
- 解析进程为何不能访问网络资源(作者Bingle)
- 解析进程为何不能访问网络资源(作者Bingle)
- 解析进程为何不能访问网络资源(作者Bingle)
- 解析进程为何不能访问网络资源(作者Bingle)
- 解析进程为何不能访问网络资源(作者Bingle)
- 解析进程为何不能访问网络资源
- 解析进程不能访问网络资源
- 解析进程不能访问网络资源
- 解决共享文件夹不能互相访问/您可能没有权限使用网络资源
- (转)flex, swf 不能访问网络/本地资源
- flex, swf 不能访问网络/本地资源
- 菜鸟成长手记-Centos网络配置后不能访问外网(之二)
- android 访问网络不能在主线程中进行以及在线程中操作UI的解决方法
- Android 4.0以后不能在主线程能进行网络访问
- Android 访问网络框架之——OkHttp框架的解析
- 不能访问网络位置
- Android网络编程之使用HTTP访问网络资源
- 转:WORKGROUP无法访问,您可能没有权限使用网络资源,请与这台服务器的管理员联系以查明您是否有访问权限。
- ORA-12514:TNS监听进程不能解析在连接描述符中给出的 SERVICE_NAME 错误
- 在加入域时又出现了“不能访问网络位置”的错误 的解决