关于xp_cmdshall开启特定账号执行的相关设置步骤

上周业务部门一名同事联系我说希望在DB服务器上启用xp_cmdshell来调bat.

我第一反应就是这绝对不能开啊.当场回绝掉了.(如果这么顺利就不会有这篇博客了...)

后续发生的事情我就不多说了,反正最后确定要开,但是需要控制相应的权限!!

之前没有太多关注这个系统存储过程,所以翻MSDN的说明大概看了一下.

https://msdn.microsoft.com/zh-cn/library/ms175046.aspx

有戏啊~~

可以用某个windows账号来模拟执行cmdshell的系统账号,给这个账号设置相应权限就好了.

于是开搞.

步骤按照官方文档的来就好.

第一步是新增windows账户:

我给的windows账号只给了user角色.由于他们的bat文件需要有执行某个应用程序的权限,而此应用程序需要写入部分文件在磁盘上.

所以给相应的程序和目录都开了执行权限和写入权限(此次特别注意,可以写入的目录千万不能有执行权限,否则很危险...)

windows账号开设完毕后需要配置为服务器代理账户.

第二步配置服务器代理账户:

有2个办法.

第一个办法是执行sql语句:

EXEC sp_xp_cmdshell_proxy_account '**************\**************', '*********************';
GO

 

第二个办法用SSMS进行配置:

  

 

第三步,需要将需要执行xp_cmdshell的SQL SERVER账号映射到master库中

USE [master]
GO
CREATE USER [test] FOR LOGIN [test]
GO

 

第四步,给指定的SQL SERVER账号赋予执行xp_cmdshell的权限

USE [master]
GO
GRANT EXEC ON xp_cmdshell TO [test]
GO

 

完成后使用test账号连接数据库,执行如下测试代码:

xp_cmdshell 'whoami.exe'
GO

显示如下信息表明正常:

更换SQL SERVER账号登陆后执行上述测试代码报错.

 

 

最后说一句.

上述工作的前提是你要开启xp_cmdshell(为了安全,sql server 2005之后默认均不开启)

开启方法:

EXEC sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
EXEC sp_configure 'xp_cmdshell', 1;
GO
RECONFIGURE;
GO
EXEC sp_configure 'show advanced options', 0;
GO
RECONFIGURE;
GO

 

转载于:https://www.cnblogs.com/qkiori/p/5128215.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值