【问题标题】:Run only the first Bash command of multiple inline commands只运行多个内联命令的第一个 Bash 命令
【发布时间】:2012-06-13 02:02:55
【问题描述】:

我有一个通过 SSH 运行某些命令的程序。一些命令是静态的(总是相同的),而另一些则具有在运行之间变化的参数。程序使用私钥连接服务器,锁定授权密钥强制执行命令“sh run_script.sh”。

run_script.sh 只会在 $SSH_ORIGINAL_COMMAND 匹配一组静态命令或以某种方式开始(对于非静态命令)时运行。

问题是像

allowedCommand arg1 arg2 && rm -r ~/ 

可能会漏掉。

是否可以让 bash 只运行第一个命令,而忽略管道或 && 之后的任何内容?

【问题讨论】:

    标签: bash ssh sh


    【解决方案1】:

    您也许可以将包装脚本设置为登录 shell(而不是 /bin/bash)并让它使用 sed 或其他东西来去除不需要的部分。它可能会出现误报,并且在包含空格的参数和其他情况下可能会失败(请参阅BashFAQ/050)。

    这种方法可能会引入无法预料的安全问题。

    最好结合使用sshsudo提供的安全功能、rbash等受限shell以及操作系统提供的其他安全设施。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-19
      • 1970-01-01
      相关资源
      最近更新 更多