windows 2008 用户组权限 以及使用iis自带的 虚拟用户 设置,防止跨站

 

1.windows 2008 r2 用户组关系

使用windows 2008r2 iis7.5 好长时间了,一直没有搞清楚windows 用户组之间的关系

最近通过搜索 整理 如下

打开windows 的 用户组管理器 (服务器管理->配置->本地用户和组->组)

windows 2008 用户组权限 以及使用iis自带的 虚拟用户 设置,防止跨站_第1张图片

 

重点介绍以下组

组内成员 备注
Administrators Administrator 超级管理员
Guests   匿名账号 一般禁用
Power Users   除admin意外权限最高的组
 IIS_IUSRS   所有iis 虚拟账号都属于这个组
users NT AUTHORITY\INTERACTIVE(S-1-5-4)
NT Authority\Authenticated User
特别注意 查看组内成员可以看出 基本所有用户(除Guests以外)都属于 users,所以users分配权限的时候也要比较小心

2.在任意文件 右键 ->安全->编辑->添加->高级->立即查找

 这里可以看见更多的用户组(这些是内置组)

* Everyone    任何一位用户都属于这个组,包括Guests组的成员,所以如果启用 Guests 在分配 Everyone 需要特别小心
* Authenticated Users   任何使用有效用户账户来登录此计算机的用户,都属于这个组
和Everyone的区别是 不包括 Guests
* interactive   任何在本地登录的用户(远程桌面,终端),都属于这个组。
NT AUTHORITY\INTERACTIVE(S-1-5-4)   应该和interactive类似
NT Authority\Authenticated User   应该和Authenticated Users 类似
anonymous logon   最低的权限组,用户打开ftp,网上邻居等未登录就是这个状态
creator group   创建者所在组
Creator owner   创建者(不包括所在组)
* IUSR   IIS 7的匿名身份认证,就是通过此用户进行的.
和 IIS_IUSRS 的区别 
iusr 下面可以增加真实的用户(IIS_IUSRS 下面是虚拟账号),(不建议使用,直接使用IIS_IUSRS 虚拟用户更加方便)

1、打开IIS Manager,双击你想要设置的站点。
2、在功能视图中,双击身份验证。
3、选择匿名身份验证,点击编辑。
4、点击特定用户,设置。
5、输入该用户的用户名密码,确定。
http://blog.chinaunix.net/uid-20344928-id-3306130.html
local service   本地服务
network   任何通过网络来登录此计算机的用户,都属于这个组
network service   网络服务
owner rights   所有者
remote interactive logon   远程交互式登录(远程桌面,控制台)
* system   这个组拥有和Administrators一样甚至更高的权限

需要特别注意  加上 "*" 的组

2.windows 虚拟用户 

在windows 2003时代,如果需要给网站单独设置权限,需要每个网站单独创建用户.

windows 2008 iis7.5 新增了虚拟账号,不用每个网站独立创建用户.

1.启用 虚拟账号

在网站->基本设置->连接为->应用程序用户 

windows 2008 用户组权限 以及使用iis自带的 虚拟用户 设置,防止跨站_第2张图片

这时候就启用了虚拟账号. 

查看进程管理器:

可以看到 php-cgi.exe w3wp.exe 后面的用户是 "应用程序池名"

这个就是虚拟用户

可自行百度 "applicationpoolidentity" 或者 iis7.5 虚拟账号 查询相关知识

3.设置网站权限(假设服务器主要用于网站访问 服务器程序为iis+php)

根据 用户组关系,当网站以 虚拟账号运行的时候, iis php 所属组 为 IIS_IUSRS

1.c盘 默认 "user" 有只读权限(假设 网站目录不在c盘)

2.c盘以外的盘符 删除 除 system administrators 以外的用户权限,users(保留原来的,理论上说可以删除,最多给users只读权限,不要给users 读写权限).

 3. c盘以外的盘符 设置 IIS_IUSRS 组 所有权限 拒绝访问 (拒绝访问权限>允许权限)

4.特别注意 php目录,php上传目录,php Session 目录需要读写权限(如果你没有修改 并且php在c盘的话,这些目录都在windows默认的临时目录 有读写权限的)

5.设置 php.ini open_basedir  限制php 读写目录都在 网站目录下(可以设置多个目录)

6.设置 网站目录  给一下账号  "IIS AppPool\应用程序池名" 读取权限 , 根据网站程序 赋予某些目录 读写权限.

   "IIS AppPool\应用程序池名" 这个账号 查找找不到 需要手动输入

7.php 其他安全设置 参考网上的 决定不能有 exec运行权限

4.示例

假设:php安装在c盘,Session 目录,上传目录 没有修改.

网站在: "d:\www"

网站1 d:\www\www.a.com 应用程序池名 www.a.com 

网站2 d:\www\www.b.com 应用程序池名 www.b.com 

1. d:盘  IIS_IUSRS 没有读写权限

2.php.ini open_basedir= d:\www\

3.d:\www\www.a.com  授权账号 "IIS AppPool\www.a.com" 读取权限

4.d:\www\www.b.com  授权账号 "IIS AppPool\www.b.com" 读取权限

(1)www.a.com 的iis php以权限 "IIS AppPool\www.a.com" 运行 ,只能读取 d:\www\www.a.com  的数据,

(2)另外 "IIS AppPool\www.a.com" 账号属于 Authenticated Users "users" 用户c盘 一些目录的读取权限  

    因为iis需要读取c盘配置文件,还有其他一些原因(比如php运行),所以 "IIS AppPool\www.a.com" 必须拥有读取权限(c盘默认的不要修改,如果你真的禁止读取,iis会出错的).

(3)但是我们还在php中限制了 文件读写目录为 .d:\www\ 所以 www.a.com 的php程序是只能读取 d:\www\www.a.com  目录数据的

不能访问 d:\www\www.b.com 以及其他非网站目录(防止跨站)

 

 

基本权限说明:

php.ini 设置 限制访问在  d:\www\ 

IIS_IUSRS  拒绝访问 "d:\"

"IIS AppPool\www.a.com"  允许访问 d:\www\www.a.com 

这样网站就只能访问当前网站目录.设置相对简单.

 

 

4.参考说明

https://www.cnblogs.com/yjmyzz/archive/2009/10/26/1590033.html   iis虚拟账号

https://blog.csdn.net/kexiuyi/article/details/51704688    windows2008 用户组

其他 百度搜索的以及个人经验

 

 

 

 

 

 

你可能感兴趣的:(虚拟用户,跨站,windows,2008,iis7.5,用户组)