博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于xp_cmdshall开启特定账号执行的相关设置步骤
阅读量:4982 次
发布时间:2019-06-12

本文共 1179 字,大约阅读时间需要 3 分钟。

上周业务部门一名同事联系我说希望在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]GOCREATE USER [test] FOR LOGIN [test]GO

 

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

USE [master]GOGRANT 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;GORECONFIGURE;GOEXEC sp_configure 'xp_cmdshell', 1;GORECONFIGURE;GOEXEC sp_configure 'show advanced options', 0;GORECONFIGURE;GO

 

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

你可能感兴趣的文章
Edit控件显示多行文字
查看>>
JS第二周
查看>>
dataTable.NET的search box每輸入一個字母進行一次檢索的問題
查看>>
Python 文件处理
查看>>
邻接表详解
查看>>
迭代dict的value
查看>>
eclipse package,source folder,folder区别及相互转换
查看>>
Py 可能是最全面的 python 字符串拼接总结(带注释版)
查看>>
《Java程序设计实验》 软件工程18-1,3 OO实验2
查看>>
【Herding HDU - 4709 】【数学(利用叉乘计算三角形面积)】
查看>>
OPENSSL使用方法
查看>>
开发WINDOWS服务程序
查看>>
cross socket和msgpack的数据序列和还原
查看>>
解决跨操作系统平台JSON中文乱码问题
查看>>
前端利器躬行记(1)——npm
查看>>
前端利器躬行记(6)——Fiddler
查看>>
Intellij Idea新建web项目(转)
查看>>
用JAVA编写浏览器内核之实现javascript的document对象与内置方法
查看>>
centos iptables
查看>>
寻找二叉查找树中比指定值小的所有节点中最大的那个节点
查看>>