使用windows 2008r2 iis7.5 好长时间了,一直没有搞清楚windows 用户组之间的关系
最近通过搜索 整理 如下
打开windows 的 用户组管理器 (服务器管理->配置->本地用户和组->组)
重点介绍以下组
组 | 组内成员 | 备注 |
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一样甚至更高的权限 |
需要特别注意 加上 "*" 的组
在windows 2003时代,如果需要给网站单独设置权限,需要每个网站单独创建用户.
windows 2008 iis7.5 新增了虚拟账号,不用每个网站独立创建用户.
1.启用 虚拟账号
在网站->基本设置->连接为->应用程序用户
这时候就启用了虚拟账号.
查看进程管理器:
可以看到 php-cgi.exe w3wp.exe 后面的用户是 "应用程序池名"
这个就是虚拟用户
可自行百度 "applicationpoolidentity" 或者 iis7.5 虚拟账号 查询相关知识
根据 用户组关系,当网站以 虚拟账号运行的时候, 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运行权限
假设: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
这样网站就只能访问当前网站目录.设置相对简单.
https://www.cnblogs.com/yjmyzz/archive/2009/10/26/1590033.html iis虚拟账号
https://blog.csdn.net/kexiuyi/article/details/51704688 windows2008 用户组
其他 百度搜索的以及个人经验