在Salt中的许多模块命令都有runas参数,比如cmd.run或cmd.script
以cmd.script命令举例,官方文档对于runas的描述如下:
runas
The name of the user to run the command as
翻译过来为:运行该命令的用户名称(机翻)。
我理解的是:这条命令(或脚本)由哪个用户来执行。
比如:我有一个脚本 echo_test.sh,内容如下
echo "i am $USER"
使用cmd.script进行执行
salt minion-01 cmd.script salt://script/echo_test.sh
得到如下结果:
minion-01:
----------
pid:
63831
retcode:
0
stderr:
stdout:
i am
查看下我这台机器的所有用户:
[root@localhost script]# cat /etc/passwd |cut -f 1 -d :
root
bin
daemon
...
我们使用其他用户执行。观察得到的结果:
# salt minion-01 cmd.script salt://script/echo_test.sh runas=root
minion-01:
----------
pid:
63908
retcode:
0
stderr:
stdout:
i am root
# salt minion-01 cmd.script salt://script/echo_test.sh runas=bin
minion-01:
----------
pid:
63938
retcode:
0
stderr:
stdout:
i am bin
# 使用不存在的用户进行执行,报错
# salt minion-01 cmd.script salt://script/echo_test.sh runas=aaa
minion-01:
TypeError encountered executing cmd.script: an integer is required. See debug log for more info.