使用 xp_cmdshell 从 SQL 中的 PsExec 调用 bash
我正在尝试通过 PsExec 用户帐户调用 bash 命令。 正在使用 Cygwin,并且我正在尝试从 SQL 运行命令:
exec master..xp_cmdshell 'psexec -u cyg_server -p <pwd> -accepteula "bash script.sh"';
但是,我从 psexec
收到以下错误:
访问被拒绝。
PsExec 无法启动 bash script.sh:
有什么建议吗?
我正在使用 SQL 2005、Windows Server 2008 和 Cygwin 以及新的二进制文件
I am trying to call a bash command through a user account with PsExec. Cygwin is being used, and I am trying to run a command from SQL:
exec master..xp_cmdshell 'psexec -u cyg_server -p <pwd> -accepteula "bash script.sh"';
However, I get the following error from psexec
:
Access is denied.
PsExec could not start bash script.sh:
Any suggestions?
I am using SQL 2005, Windows Server 2008, and Cygwin with fresh binaries
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您可能以 SQL 用户或没有该文件权限的用户身份运行此文件。 我最好的选择是 SQL 用户(例如
sa
)。 当您执行此操作时,它使用的 Windows 凭据是服务帐户,默认情况下为 SYSTEM,但如果您这样设置,也可能是其他帐户。如果您只是从 SQL 内部调用此函数,请确保您实际上是以有权打开所有必需文件的 Windows 用户身份运行。
如果这是在 SQL Server 代理作业中运行,您需要设置凭据,然后设置代理。 完成此操作后,您可以分配代理来运行作业(它是“作业步骤”对话框中的第三个或第四个下拉列表),它将使用正确的 Windows 凭据运行。
You're probably running this as a SQL user or a user without permissions to that file. My best bet is a SQL user (such as
sa
). When you do this, the Windows credentials it uses are of the Service Account, which isSYSTEM
by default, but could be something else if you set it that way.If you're just calling this from within SQL, make sure that you are, in fact, running as a Windows user that has permissions to open all of the files necessary.
If this is running in a SQL Server Agent job, you'll need to set up a Credential, and then set up a Proxy. Once you've done that, you can assign the Proxy to run the job (it's the third or fourth drop down on the Job Step dialog), and it will run with the correct Windows credentials.