gpt4 book ai didi

sql-server - 以特定用户身份执行 xp_cmdshell 命令

转载 作者:可可西里 更新时间:2023-11-01 12:25:47 27 4
gpt4 key购买 nike

我想运行xp_cmdshell(TSQL 程序)以安装网络驱动器,然后访问远程 mdb 文件。

我是 MS SQL 服务器的管理员,我允许相应地执行 xp_cmdshell

但是,还有一个问题:

  • 当我调用 xp_cmdshell 时,执行命令的用户是 SQL SysAdmin,即运行 SQL Server 进程的帐户。

  • 我希望 xp_cmdshell 作为我连接到 SQL 服务器的帐户执行,即管理员

这两个帐户都在管理员组、SQLAdmin 组中,并被授予 CONTROL SERVER。两个用户都属于同一个域。所有这些都在同一台机器上运行。

由于这个冲突,我无法使用网络驱动器,因为它是为 SysAdmin 而不是为 Administrator 安装的
我尝试使用 sp_ xp_ cmdshell_ proxy_ account 指定我要运行 xp_cmdshell 的帐户,但 SysAdmin 仍然是使用的帐户。

因此,这段代码:
选择 user_name(), suser_name;
exec xp_cmdshell 'echo %username%';

显示:
管理员管理员
系统管理员

有人知道如何很好地模拟xp_cmdshell 命令吗?有什么要(重新)配置的吗?

感谢您的帮助。

最佳答案

因为您以 sysadmin 组中的登录身份连接到 SQL,所以 xp_cmdshell 作为服务帐户运行。

如果您连接为低权限登录,那么它将使用 xp_cmdshell_proxy_account 代替。因此,请先尝试执行 EXECUTE AS LOGIN='lowprivaccount',看看是否有帮助。

当然,您实际要求的并不是预期的用途。预期用途是高权限帐户可以允许xp_cmdshell 使用服务帐户,而其他人必须忍受较低权限的代理帐户。

关于sql-server - 以特定用户身份执行 xp_cmdshell 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1092163/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com