以根用户身份运行子壳



考虑你有一台带有Bash的Linux/UNIX机器。您有一个文件密钥.txt只有 root 才能读取。 你想使用一个将字符串作为参数的命令,比如说,

sample-command <string>

以 root 用户身份登录并使用文本文件的第一行运行命令:

root ~ $ sample-command $(sed '1!d' secret.txt)

非 root 用户可以做到这一点吗?

注意。sudo sh -c "<command>"没有帮助,因为子外壳不会继承根/sudo 特权。例如

sarah ~ $ sudo sh -c "echo $(whoami)"

给你sarah,而不是root

像命令替换这样的扩展将在执行实际命令行之前由 shell 处理:

sudo sh -c "echo $(whoami)"
foouser

这里 shell 将首先运行whoami,作为当前用户,将扩展替换为它的结果,然后执行

sudo sh -c "echo foouser"

扩展不会发生在单引号内:

sudo sh -c 'echo "$(whoami)"'
root

在此示例中,调用 shell 不会处理$(whoami)因为它出现在单引号内。 因此,$(whoami)将在调用 echo 之前通过 subshell 进行扩展。

相关内容

  • 没有找到相关文章

最新更新