关于SharePoint 2007的用户组和用户

以下文章转自Kaneboy's Blog

首先,在站点(Site,not Site Collection)的层次上,是不能创建用户组(Group)的。虽然和你的“直觉”不一致,但确实如此。所有用户组都是基于站点集的!当我们在一个站点集中任何一个站点中创建一个用户组的时候,实际上都是在站点集层次上创建了一个用户组。

如果你试图用代码在SPWeb.Groups里面添加新的SPGroup,是不会成功的。只有SPWeb.SiteGroups里面才能添加新的SPGroup。

当我们在MOSS2007界面上操作时,“确实”是可以在一个站点中创建用户组的,而且这个用户组只对这个站点有对应的权限。但实际上,MOSS2007仍然是在站点集的层次上创建了一个用户组,然后将这个用户组与这个站点建立起相应的角色关联(Role Assignment),这样,这个用户组就对相应的站点具有了相应的权限。

然后,我们讲讲用户,在SPWeb的众多属性中,你能发现与用户有关的三个属性:Users、AllUsers、SiteUsers,它们有什么区别呢?

简单来说,SPWeb.Users中包含的是“真正”的添加到这个站点中的用户,这个用户只属于这个站点。SPWeb.AllUsers中包含的是所有对这个站点有访问权限的用户,这些用户可能是这个站点的直接用户(即被包含在SPWeb.Users中),也可能是通过其他手段来获取对这个站点的访问权限的。SPWeb.AllUsers包含了SPWeb.Users中的所有用户。SPWeb.SiteUsers是定义在站点集层次上的用户。

由于用户组是属于站点集的,所以当我们在任意一个站点中进行操作,为一个用户组中添加一个用户时,这个用户都是被添加到站点集层次用户组中,也就是说,你在SPWeb.Users中是肯定找不到这个用户的。你可以在SPWeb.SiteUsers中找到他(因为这个用户是被添加到站点集层次的用户组中,所以他算一个站点集层次的用户),还可以在SPWeb.AllUsers中找到他(因为这个用户确实对这个站点具有访问权限)。
image

但是,如果在站点中添加用户的时候,不是将他放到某个用户组中,而是直接给这个新用户赋予相应的权限级别(也就是Role),那么这个用户就算是“真正的”被加入到这个站点,你可以在SPWeb.Users集合中找到他。同时,在SPWeb.SiteUsers和SPWeb.AllUsers集合中,也能找到这个用户。
image 

最后,再顺便解释一个很多人疑惑的问题。在WSS中,管理员可以直接修改站点用户的属性,比如电子邮件,但是在MOSS中,是不能直接修改的。如果进入到修改界面,你只会看到:
image

这是因为在MOSS中,有一个“用户配置文件(User Profile)”的组件,在共享服务管理中,你可以看到用户配置文件管理界面。MOSS使用用户配置文件来存放用户的属性信息,比如Email。MOSS会定期(通过计时器作业,SPTimerV3 NT Service)将存放在用户配置文件里面的属性信息“推送”给站点用户,自动更新站点用户的各项属性。所以,如果需要更改用户的属性值,在MOSS中需要通过用户配置文件。如果直接修改了站点用户的属性值(比如通过代码),在下次用户配置文件“推送”的时候,将会覆盖掉用户修改的属性值。WSS由于没有用户配置文件这个功能,所以允许用户和管理员直接更改站点用户的属性值。

 

先上一副图(图中的A、B、C、D、E等标记是为了下面文字更容易指定图片中相应部分而用,下文用类似“A标记”、“B标记”来进行标识):
 image

在一个标准的SharePoint Server服务器场部署模型中,一个用户的信息会同时存在于多个地方:

1、Active Directory(“A标记”)
在AD中会保存我们的基础信息,AD通常是企业中用户基础ID信息的所在。
image

2、SharePoint Server SSP User Profile(“C标记”)
在SharePoint Server服务器场的共享服务(SSP)的用户配置文件(User Profile)中,也会保存用户的信息。SSP User Profile中的用户信息,是作为SharePoint服务器场中集中的用户信息存储所在。如果在SharePoint应用中需要存放一些用户的特定属性信息,建议就存放在SSP User Profile中。User Profile是可以进行属性扩展的,比如,管理员可以添加一个新的“QQ号码”属性。
image

User Profile中的用户信息默认是从AD中导入而来的(“B标记”标识了这个过程),在SSP User Profile管理中,我们可以配置这个导入过程,比如指定相隔多长时间就从AD中重新完全导入用户信息一次。
image

当SSP User Profile从AD中导入用户信息的时候,SSP会根据User Profile的属性映射定义,来决定将AD中用户的哪个属性的值,赋值给User Profile的哪个属性。比如,SSP会将AD中的“显示名称”这个属性的值,导入到User Profile的“名称”这个属性中。通过SSP管理中“编辑用户配置文件属性”这个页面,就可以编辑(或者取消)这种属性映射关系。

如何修改保存在User Profile中的用户属性信息呢?首先,管理员可以在SSP管理中直接修改所有用户的属性信息。其次,每个用户通过自己的个人网站(“我的网站”),就可以修改自己的User Profile信息。
image 

特别说明1:为什么用户不能修改某些属性?比如上图中的“名称”属性,默认就不能修改?
在SSP User Profile管理中,管理员可以指定哪些属性允许用户自己修改,哪些属性不允许。比如,如果管理员允许用户自己修改User Profile的“名称”属性:
image
那么用户就可以在自己的个人网站修改“名称”属性的值了:
image

特别说明2:用户自己修改(或者管理员修改)了User Profile的值,但是岂不是在下一次从AD中完全导入用户信息时,又被覆盖成AD中的值了?
是的。比如上面我们允许用户修改User Profile的“名称”属性的值,但是由于默认“名称”属性映射到AD中的“显示名称”属性,所以下一次进行AD完全导入(“B标记”)时,User Profile中用户的“名称”属性又被自动置成了AD中的“显示名称”的值。但是,管理员可以取消这种映射关系,比如,我们取消掉“名称”属性与AD“显示名称”属性的映射:
image
改成:
image

特别说明3:修改了User Profile中的用户信息,能否自动反向同步回AD?
不能。

除了从AD中导入User Profile信息之外,SharePoint还支持从其他数据源导入,比如LDAP Server。此外,你还可以用代码来往User Profile中添加用户的信息。

3、SharePoint站点(“E标记”)
在每个SharePoint站点中(更准确说应该是站点集中),还会保存每个站点用户的信息。这些信息是保存在各个站点的内容数据库的UserInfo表中(别直接修改数据库表,那不是一个好主意,正确做法是通过SPUser对象模型来访问SharePoint站点中的用户信息)。我们在页面右上方看到的那个“欢迎XXX”信息中的“XXX”,就来自SharePoint站点中存储的用户信息数据。
image 
用户(以及管理员)不能直接修改存储在SharePoint站点中的用户信息,如果你试图修改,你只会看到这个:
image


当把用户第一次添加到SharePoint站点中时,SharePoint自动以用户的AD信息为基础,来写入到UserInfo表中。然后,“D标记”所示的同步操作,会将存储到SharePoint站点中的用户信息同步到User Profile中。同时,SharePoint Server还会自动定时的,将用户在User Profile中的信息,同步到各个SharePoint站点。这种同步是双向的。但是由于用户实际上不能在SharePoint站点中修改用户信息,所以实际上,这种同步绝大部分时候,都是将User Profile中的用户信息推送到SharePoint站点中。

“D标记”所示的同步过程是由2个SharePoint计时器作用(Timer Job)来完成的,“配置文件同步”(进行完全同步)和“配置文件快速同步”(进行差量同步):
image 

由于SharePoint Server是以User Profile来作为用户信息存储中心,所以SharePoint Server不允许用户直接修改存储在SharePoint站点中的用户信息,而是定时自动的将User Profile中的用户信息推送到每个站点中。也就是说,即使你手工修改了UserInfo表中存储的用户信息数据,或通过SPUser对象模型修改了用户的属性信息,但它们很可能很快就会又被自动的覆盖成User Profile中的值。我们应该通过修改User Profile用户信息,来达到更新和维护用户信息的目的。User Profile应该是整个SharePoint Server服务器场中唯一的用户信息存储中心。

特别说明1:如何手工来快速进行“D标记”中所示的将User Profile用户信息同步到SharePoint站点用户信息的过程?
尝试在服务器上手工执行下面两个stsadm指令:
stsadm -o execadmsvcjobs
stsadm -o sync

特别说明2:为什么似乎“D标记”所示的同步过程,不能同步某些用户在SharePoint站点中的信息?
因为“D标记”所示配置文件同步操作,只会同步那些SharePoint认为是SharePoint站点“活动用户”。一个用户是否是活动用户由UserInfo表中的某个字段来标识。当一个用户在站点中进行某些“确实的”操作时,比如上传一个文件,他就会自动被标记为“活动用户”。

总结:
简单来说,就如同第一张图片所示的那样,AD -> User Profile <-> Site User Info。

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值