几个月前,我使用下面的命令把自己添加到一个站点里,该站点原来在其它服务器上,使用恢复的方式还原到现在的服务器。
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 AUTHORITYAuthenticated 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);
}
}
{
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 AUTHORITYAuthenticated Users
"
-
permissionlevel
"完全读取
"