Saltar al contenido

Obtener permiso de ejecución para xp_cmdshell

Solución:

Para los usuarios que no son miembros de la función sysadmin en la instancia de SQL Server, deben realizar las siguientes acciones para otorgar acceso al procedimiento almacenado extendido xp_cmdshell. Además, si olvidó uno de los pasos, he enumerado el error que se lanzará.

  1. Habilite el procedimiento xp_cmdshell

    Msg 15281, nivel 16, estado 1, procedimiento xp_cmdshell, línea 1 SQL Server bloqueó el acceso al procedimiento ‘sys.xp_cmdshell’ del componente ‘xp_cmdshell’ porque este componente está desactivado como parte de la configuración de seguridad de este servidor. Un administrador del sistema puede habilitar el uso de ‘xp_cmdshell’ usando sp_configure. Para obtener más información sobre cómo habilitar ‘xp_cmdshell’, consulte “Configuración del área de superficie” en los Libros en pantalla de SQL Server. *

  2. Cree un inicio de sesión para el usuario que no es administrador de sistemas que tiene acceso público a la base de datos maestra

    Msg 229, nivel 14, estado 5, procedimiento xp_cmdshell, línea 1 Se denegó el permiso EJECUTAR en el objeto ‘xp_cmdshell’, base de datos ‘mssqlsystemresource’, esquema ‘sys’. *

  3. Otorgue permiso EXEC en el procedimiento almacenado xp_cmdshell

    Msg 229, nivel 14, estado 5, procedimiento xp_cmdshell, línea 1 Se denegó el permiso EJECUTAR en el objeto ‘xp_cmdshell’, base de datos ‘mssqlsystemresource’, esquema ‘sys’. *

  4. Cree una cuenta de proxy con la que se ejecutará xp_cmdshell utilizando sp_xp_cmdshell_proxy_account

    Msg 15153, nivel 16, estado 1, procedimiento xp_cmdshell, línea 1 La información de la cuenta del proxy xp_cmdshell no se puede recuperar o no es válida. Verifique que la credencial ‘## xp_cmdshell_proxy_account ##’ exista y contenga información válida. *

Por su error, parecería que se omitió el paso 2 o 3. No estoy familiarizado con los clústeres para saber si hay algo particular en esa configuración.

Quiero completar la respuesta de tchester.

(1) Habilite el procedimiento xp_cmdshell:

-- To allow advanced options to be changed.
EXEC sp_configure 'show advanced options', 1
RECONFIGURE
GO

-- Enable the xp_cmdshell procedure
EXEC sp_configure 'xp_cmdshell', 1
RECONFIGURE
GO

(2) Cree un ‘Domain TestUser’ de inicio de sesión (usuario de Windows) para el usuario que no es administrador de sistemas que tiene acceso público a la base de datos maestra

(3) Otorgue permiso EXEC en el procedimiento almacenado xp_cmdshell:

GRANT EXECUTE ON xp_cmdshell TO [DomainTestUser]

(4) Cree una cuenta de proxy con la que se ejecutará xp_cmdshell utilizando sp_xp_cmdshell_proxy_account

EXEC sp_xp_cmdshell_proxy_account 'DomainTestUser', 'pwd'
-- Note: pwd means windows password for [DomainTestUser] account id on the box.
--       Don't include square brackets around DomainTestUser.

(5) Otorgar permiso del servidor de control al usuario

USE master;
GRANT CONTROL SERVER TO [DomainTestUser]
GO
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *