Pergunta

Isso funciona como local de administrador apenas, mas estou tentando descobrir como eu posso fazê-lo funcionar com NT AUTHORITY\SYSTEM.

Ele começa a cuspir os membros do grupo, mas falha com o acesso negado em um grupo específico em um conjunto de sites.

Eu tentei adicionar NT AUTHORITY\SYSTEM para os administradores locais e WSS_ADMIN_WPG grupos e o grupo Administradores de Farm do SharePoint e do grupo de administradores do conjunto de sites para o site dando erro "acesso negado".

Atualização 2/25/2014:Fechar a concessão de db_owner para o conteúdo DB, mas que não quer trabalhar.

USE [SharePoint - 33220]
GO
EXEC dbo.sp_addrolemember N'db_owner', N'NT AUTHORITY\SYSTEM'
GO

Aqui está o erro -

Unhandled Exception: System.UnauthorizedAccessException: Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESS
DENIED))
   at Microsoft.SharePoint.SPGlobal.HandleUnauthorizedAccessException(UnauthorizedAccessException ex)
   at Microsoft.SharePoint.Library.SPRequest.GetUsersDataAsSafeArray(String bstrUrl, UInt32 dwUsersScope, String bstrVal
ue, UInt32 dwValue, UInt32& pdwColCount, UInt32& pdwRowCount, Object& pvarDataSet)
   at Microsoft.SharePoint.SPUserCollection.InitUsers(Boolean fCustomUsers, String[] strIdentifiers)
   at Microsoft.SharePoint.SPUserCollection.InitUsers()
   at Microsoft.SharePoint.SPUserCollection.Undirty()
   at Microsoft.SharePoint.SPBaseCollection.System.Collections.IEnumerable.GetEnumerator()
   at ConsoleApplication1.Program.c__DisplayClass2.b__0()
   at Microsoft.SharePoint.SPSecurity.CodeToRunElevatedWrapper(Object state)
   at Microsoft.SharePoint.SPSecurity.c__DisplayClass4.b__2()
   at Microsoft.SharePoint.Utilities.SecurityContext.RunAsProcess(CodeToRunElevated secureCode)
   at Microsoft.SharePoint.SPSecurity.RunWithElevatedPrivileges(WaitCallback secureCode, Object param)
   at Microsoft.SharePoint.SPSecurity.RunWithElevatedPrivileges(CodeToRunElevated secureCode)
   at ConsoleApplication1.Program.Main(String[] args)

Aqui está o código -


using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.SharePoint;
using Microsoft.SharePoint.Administration;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {

            SPWebServiceCollection spWebServiceCollection = new SPWebServiceCollection(SPFarm.Local);
            foreach (SPWebService spWebService in spWebServiceCollection)
            {
                foreach (SPWebApplication webApplication in spWebService.WebApplications)
                {
                    foreach (SPSite spSite in webApplication.Sites) 
                    {
                        SPSecurity.RunWithElevatedPrivileges(delegate()
                        {
                            SPWeb spWeb = spSite.OpenWeb();
                            Console.WriteLine(spWeb.Title);
                            foreach (SPGroup group in spWeb.Groups)
                            {
                                Console.WriteLine(group.Name);
                                foreach (SPUser user in group.Users)
                                {
                                    Console.WriteLine(user.LoginName);
                                }
                            }
                        });
                    }
                }
            }
        }
    }
}
Foi útil?

Solução 3

Adicionar à colecção de sites administradores trabalhou

enter image description here

Outras dicas

Então você quer saber o mínimo de permissões necessárias para isso?Meu palpite é que você vai precisar de permissões equivalentes para a conta do farm de servidores (http://technet.microsoft.com/en-us/library/cc678863%28v=office.12%29.aspx)

Conta do farm de servidores

A conta do farm de servidores é também referido como o acesso ao banco de dados a conta é usada como a identidade do pool de aplicativos para o Centro de De administração, e como a conta de processo do Windows SharePoint Services 3.0 do serviço de Timer.A conta do farm de servidores requer a seguintes permissões:

  • Ele deve ter domínio permissões de conta de usuário.

  • Se o farm de servidores de um farm filho com aplicativos Web que consomem serviços compartilhados de um farm pai, a conta do farm de servidores deve ser membro da função fixa db_owner associados o banco de dados de configuração do farm pai.

Permissões adicionais são concedidas automaticamente para o farm de servidores conta em servidores Web e servidores de aplicativos que estão associados a um farm de servidores.

Depois de executar a ferramenta PSC, máquina de permissões de nível incluem:

  • A associação ao grupo de segurança WSS_ADMIN_WPG do Windows para o Windows SharePoint Services 3.0 do serviço de Timer.

  • Associação IIS_RESTRICTED_WPG para o pool de aplicativos Administração Central.

  • Associação IIS_WPG para o pool de aplicativos Administração Central.

Depois de executar a ferramenta PSC, o SQL Server e o banco de dados de permissões incluem:

  • Função de servidor fixa Dbcreator.

  • Função de servidor fixa Securityadmin.

  • db_owner para todos os Office SharePoint Server 2007 bancos de dados.

  • Associação à função WSS_CONTENT_APPLICATION_POOLS do Office SharePoint Server 2007 configuração de farm de servidor de banco de dados.

  • Associação à função WSS_CONTENT_APPLICATION_POOLS do Office SharePoint Server 2007 sharepoint_admincontent.

Gostaria de começar com as permissões acima, verifique se ele está funcionando e, em seguida, começar a remover as permissões de um por um até que o aplicativo pára de funcionar novamente.

Então, para realmente encontrar as permissões mínimas você teria que usar essa lista como uma base e, em seguida, fazer alguma tentativa-e-erro trabalho.

SPSecurity.RunWithElevatedPrivileges 

não tem efeito quando você executá-lo a partir do aplicativo de console.Ele só funciona a partir do SharePoint contexto como no receptor de eventos código código da peça web etc.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a sharepoint.stackexchange
scroll top