几个月前,我使用下面的命令把自己添加到一个站点里,该站点原来在其它服务器上,使用恢复的方式还原到现在的服务器。
stsadm.exe –o addpermissionpolicy –url http://foobar/sites/Migration -userlogin {DOMAIN\username} -permissionlevel "完全控制"
该站点是从我们的测试环境备份出来的(和现在的服务器不在同一个域)。因此当站点恢复后,即使进行恢复操作的用户也没有访问该站点的权限了(在我们运行上面的命令前)。
今天,我帮我们组其它的开发人员调试一个权限问题,需要给所有用户(everyone)指定该站点的读取权限。
开始,我建议用下面的命令:
stsadm.exe –o addpermissionpolicy –url http://foobar/sites/Migration -userlogin "NT AUTHORITY\Authenticated Users" -permissionlevel "读取"
可是,很快我们发现其中的"读取"不对。接下来的十几分钟内,我们尝试了各种变化,如"只读","读",并在网上搜索相关文档,但最后还是只能告诉同事在网站页面中进行操作。
过了几个小时,我又重新思考了这个问题,并花了几分钟写了个命令行程序来辅助我理解permissionlevel参数的可用值:
static void Main(string[] args)
{
Uri siteUrl = new Uri("http://foobar/sites/Migration");
SPWebApplication application = SPWebApplication.Lookup(siteUrl);
foreach (SPPolicyRole policyRole in application.PolicyRoles)
{
Console.WriteLine(policyRole.Name);
}
}
输出结果如下:
完全控制
完全读取
拒绝写入
全部拒绝
我之前建议给同事使用的命令应该是:
stsadm.exe –o addpermissionpolicy –url http://foobar/sites/Migration -userlogin "NT AUTHORITY\Authenticated Users" -permissionlevel "完全读取"