小编Rus*_*uss的帖子

如何安全地将变量传递给启用 root 的脚本?

这个问题是完全通用的,不仅适用于我的情况,而且......我有一个小的 busybox 设备,我希望非 root 用户能够以 root 权限执行特定的脚本。例如,类似于这个启用 DHCP 的小脚本,其中$1在 cmdline (!!) 上发送的唯一变量 ( ) 是要发送的主机名:

#!/bin/bash
udhcpc -b -i eth0 -h $1
Run Code Online (Sandbox Code Playgroud)

像这样运行 udhcpc 需要 root 访问权限,因此为此我计划修改/etc/sudoers以包含以下行:

joe ALL = NOPASSWD: /path/to/enable_dhcp.sh
Run Code Online (Sandbox Code Playgroud)

这应该使“joe”能够通过简单地运行以root权限轻松运行该脚本:

sudo /path/to/enable_dhcp.sh
Run Code Online (Sandbox Code Playgroud)

并且没有被要求输入密码(这是我想要的,因为我希望 joe 能够编写此脚本)。

现在..我知道(或者至少我认为我知道$1在一个可以很容易地以 root 权限运行的脚本中使用是一个可怕的想法,因为你可以注入任何你想要的东西。

那么......处理这个问题的最佳方法是什么?我如何让 joe 以 root 权限做我想做的事,允许他传入一个变量(或者像使用环境变量那样有效地这样做),同时又不会对注入攻击敞开大门?

security bash sudo parameter shell-script

13
推荐指数
2
解决办法
3236
查看次数

标签 统计

bash ×1

parameter ×1

security ×1

shell-script ×1

sudo ×1