加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

如何在Bash中执行一组命令作为另一个用户?

发布时间:2020-12-15 16:26:56 所属栏目:安全 来源:网络整理
导读:这里已经 some existing questions询问了作为另一个用户运行命令。但是,问题和答案集中在单个命令,而不是一大组命令。 例如,考虑以下脚本: #!/bin/bashset -eroot_command -p param1 # run as root# these commands must be run as another usercommand1
这里已经 some existing questions询问了作为另一个用户运行命令。但是,问题和答案集中在单个命令,而不是一大组命令。

例如,考虑以下脚本:

#!/bin/bash
set -e

root_command -p param1  # run as root

# these commands must be run as another user
command1 -p 'parameter with "quotes" inline'
command2 -p 'parameter with "quotes" inline'
command3 -p 'parameter with "quotes" inline'

这里有几个要点要注意:

>最后三个命令必须作为另一个用户使用su或sudo运行。在示例中有三个命令,但假设还有更多…
>命令本身使用单引号和双引号。

上述第二点阻止使用以下语法:

su somebody -c "command"

…因为命令本身包含引号。

什么是正确的方式“组”命令,并在另一个用户帐户下运行它们?

尝试这个:
su somebody <<'EOF'
command1 -p 'parameter with "quotes" inline'
command2 -p 'parameter with "quotes" inline'
command3 -p 'parameter with "quotes" inline'
EOF

<<介绍一个here-doc。下一个标记是分隔符,并且以分隔符开头的行的所有内容都作为标准输入提供给命令。将定界符放在单引号中会阻止在here-doc中进行变量替换。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读