【问题标题】:XP_CMDSHELL keeps getting disabled from time to time with no reasonXP_CMDSHELL 不时无缘无故地被禁用
【发布时间】:2018-12-28 11:21:19
【问题描述】:

我想知道如何让XP_cmdshell 永远启用。它是一个本地系统,我正在使用xp_cmdshell生成一个带有查询结果的 txt 文件。

我无法在代码本身中启用xp_cmdshell,因为它给了我一个错误,说我无法激活它然后事务正在运行。

我为此搜索了很多,但不幸的是没有答案。

ps:我知道如何启用xp_cmdshell,我只想永远保持它。

【问题讨论】:

  • 使用xp_cmdshell 是不安全的,它可能是一个安全问题。当您想访问到DBMS之外的资源时,例如xp_cmdshell,DBMS没有任何控制发生的任何问题。因此,我强烈建议您更改解决方案并创建另一个服务或应用程序来完成您的任务,而是唯一的解决方案来完成您的任务。
  • @MohammadMohabbati 这不是真的。如果安全管理不正确,它可能是不安全和不安全的。但是,如果系统管理员权限得到妥善管理,通常没问题。也就是说,通常有更好的方法来完成同样的事情。特别是 Sql Agent CmdExec 通常更容易正确管理。

标签: sql xp-cmdshell


【解决方案1】:

可能不会。您可能能够使用服务器级 DML 触发器捕获和关闭命令,但我真的不建议这样做。

恕我直言,您真的只有两个不错的选择。首先,启用并配置审核日志记录以捕获重置它的人员/内容,然后进行处理。由于这可能是一些公司/公司的安全程序,这可能是首选方式。

XP_CmdShell 非常方便,但很难正确保护。本质上,您必须将其限制为仅 SysAdmin 使用,然后积极锁定 SysAdmin 权限。这很难,因为 SQL Server 世界充斥着草率的应用程序(内部和第三方),这些应用程序要么要求或假定它们具有 SysAdmin。

另一种可能性是使用其他一些更容易保护的方法来做同样的事情。 SSIS 和 SqlAgent 都有这样的功能。我过去成功使用过 SqlAgent 的 CmdExec,它的配置有点困难,但更容易保护,我建议尝试使用它。

【讨论】:

    猜你喜欢
    • 2018-02-15
    • 1970-01-01
    • 2011-08-05
    • 2020-08-17
    • 1970-01-01
    • 1970-01-01
    • 2021-04-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多