Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将外部变量注入Linux shell脚本,然后通过SSH执行代码,最安全的方法是什么?_Linux_Shell - Fatal编程技术网

将外部变量注入Linux shell脚本,然后通过SSH执行代码,最安全的方法是什么?

将外部变量注入Linux shell脚本,然后通过SSH执行代码,最安全的方法是什么?,linux,shell,Linux,Shell,我需要编写一个类似这样的Linux shell脚本——它将由作业调度工具执行,普通终端用户可以在其中配置$1和$2: SERVER=$1 选项=$2 ssh-t remote_user_name@$SERVER'ksh-lc“remote_command_name$OPTIONS” 看,我可以看出我需要小心如何写这篇文章,以避免“注入”问题 (更不用说,在单引号内,我实际上没有在这一点上插入$OPTIONS。) 在我的例子中,remote\u command\u name的可接受选项如下: -

我需要编写一个类似这样的Linux shell脚本——它将由作业调度工具执行,普通终端用户可以在其中配置
$1
$2

SERVER=$1
选项=$2
ssh-t remote_user_name@$SERVER'ksh-lc“remote_command_name$OPTIONS”
看,我可以看出我需要小心如何写这篇文章,以避免“注入”问题

(更不用说,在单引号内,我实际上没有在这一点上插入$OPTIONS。)

在我的例子中,
remote\u command\u name
的可接受选项如下:

  • --帮助
  • config_file_path_to_run_
  • --详细配置文件\u运行路径\u
  • 我不是一个真正的Linux人——我如何才能得到$OPTIONS插值,并尽可能地减少“注入”漏洞?(请注意,调度工具的配置面板已经在登录墙后面,如果被破坏,可能意味着有人已经在疯狂运行。但在可能的范围内,我希望避免成为为调度工具编写新内容的人,该工具将钓鱼用户帐户变为提升野生隐私的杠杆它调度的机器上的权限或为恶意最终用户提供方便的权限提升杠杆。)


    FWIW,看起来两台机器上选择的外壳都默认为
    ksh

    好的,到目前为止,我已经做到了这一点——插值正在工作

    是不是。。。安全吗

    SERVER=$1
    选项=$2
    REMOTE\u COMMAND\u DBL\u QUOT=“\”REMOTE\u COMMAND\u name$OPTIONS“”
    本地命令=“ksh-lc$REMOTE”命令“DBL”
    ssh-t remote_user_name@$SERVER$LOCAL_命令