如何在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中进行变量替换。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- scala – 如何在Spark-notebook中使用Accumulo 1.6创建Spar
- Angular2视图操作之ViewChild&ViewChildren
- Redis原理分析丨Redis 作为 LRU 缓存的实现原理
- AngularJS使用orderBy报错
- bash – find,xargs:为每个文件执行命令链
- 告诉vim将逗号添加到一个数字,例如将31415926更改为31,415,
- anglejs – 聚合物的纸张元素和角材料
- 在vim中,把idc文件,作为c文件来使用
- angularjs – ng-class-甚至不应用类
- 基于Bootstrap+jQuery.validate Form表单验证实践