Pregunta

Esto funciona sólo como administrador local, pero estoy tratando de descubrir cómo puedo hacerlo funcionar con NT AUTHORITY\SYSTEM.

Comienza a escupir miembros del grupo pero falla y se deniega el acceso a un grupo específico en una colección de sitios.

He intentado agregar NT AUTHORITY\SYSTEM a los administradores locales y a los grupos WSS_ADMIN_WPG y al grupo de administradores de la granja de servidores de SharePoint y al grupo de administradores de la colección de sitios para el sitio que proporciona el error de acceso denegado.

Actualización 25/02/2014:Intenté otorgar db_owner a la base de datos de contenido, pero tampoco funcionó.

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

Aquí está el error -

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)

Aquí está el 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);
                                }
                            }
                        });
                    }
                }
            }
        }
    }
}
¿Fue útil?

Solución 3

Agregarlo a la colección de sitios funcionó para los administradores.

enter image description here

Otros consejos

¿Quieres saber los permisos mínimos necesarios para esto?Supongo que necesitará permisos equivalentes para la cuenta de la granja de servidores (http://technet.microsoft.com/en-us/library/cc678863%28v=office.12%29.aspx)

Cuenta de granja de servidores

La cuenta de la granja del servidor también se conoce como la cuenta de acceso a la base de datos y se utiliza como identidad del grupo de aplicaciones para la administración central, y como la cuenta del proceso para el servicio de temporizador de Windows SharePoint Services 3.0.La cuenta de la granja del servidor requiere los siguientes permisos:

  • Debe tener permisos de cuenta de usuario de dominio.

  • Si la granja del servidor es una granja infantil con aplicaciones web que consumen servicios compartidos de una granja matriz, la cuenta de la granja del servidor debe ser miembro del papel de base de datos fijo DB_Owner asociado con la base de datos de configuración de la granja matriz.

Los permisos adicionales se otorgan automáticamente a la cuenta de la granja del servidor en servidores web y servidores de aplicaciones que se unen a una granja de servidores.

Después de ejecutar la herramienta PSC, los permisos a nivel de máquina incluyen:

  • Membresía en el grupo de seguridad de Windows WSS_ADMIN_WPG para el servicio de temporizador de Windows SharePoint Services 3.0.

  • Membresía en IIS_RESTRICTED_WPG para el grupo de aplicaciones de Administración central.

  • Membresía en IIS_WPG para el grupo de aplicaciones de Administración Central.

Después de ejecutar la herramienta PSC, los permisos de SQL Server y la base de datos incluyen:

  • Rol de servidor fijo de Dbcreator.

  • Rol fijo del servidor Securityadmin.

  • db_owner para todas las bases de datos de Office SharePoint Server 2007.

  • Membresía en la función WSS_CONTENT_APPLICATION_POOLS para la base de datos de configuración de la granja de servidores de Office SharePoint Server 2007.

  • Membresía en el rol WSS_CONTENT_APPLICATION_POOLS para la base de datos de contenido SharePoint_Admin de Office SharePoint Server 2007.

Yo comenzaría con los permisos anteriores, verificaría que esté funcionando y luego comenzaría a eliminar los permisos uno por uno hasta que la aplicación deje de funcionar nuevamente.

Entonces, para encontrar realmente los permisos mínimos, tendría que usar esta lista como base y luego hacer un poco de trabajo de prueba y error.

SPSecurity.RunWithElevatedPrivileges 

no tiene ningún efecto cuando lo ejecuta desde la aplicación de consola.Solo funciona desde el contexto de SharePoint, como en el código del elemento web del código del receptor de eventos, etc.

Licenciado bajo: CC-BY-SA con atribución
scroll top