我注意到,当我在exec
上使用user
选项时,它不占用指定用户的环境。
$ sudo -i puppet apply -e "exec { '/usr/bin/env': logoutput => true, user => nobody}" notice: /Stage[main]//Exec[/usr/bin/env]/returns: SHELL=/bin/bash notice: /Stage[main]//Exec[/usr/bin/env]/returns: USER=root notice: /Stage[main]//Exec[/usr/bin/env]/returns: USERNAME=root notice: /Stage[main]//Exec[/usr/bin/env]/returns: PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games notice: /Stage[main]//Exec[/usr/bin/env]/returns: MAIL=/var/mail/root notice: /Stage[main]//Exec[/usr/bin/env]/returns: PWD=/root notice: /Stage[main]//Exec[/usr/bin/env]/returns: HOME=/root notice: /Stage[main]//Exec[/usr/bin/env]/returns: LOGNAME=root notice: /Stage[main]//Exec[/usr/bin/env]/returns: executed successfully
所以当命令以nobody
身份运行时, USER
, HOME
等没有按预期设置。 有没有什么办法可以让exec
来模拟一个loginshell,这样的环境是按预期设置?
没有办法让exec
来模拟一个loginshell。 你总是可以使用su -
(如womble所build议的)来生成一个loginshell,但是如果你想要的只是使用Puppet 控制的环境variables,那就使用参数environment
。
当然,通过su -
运行命令su -
而不是在清单中指定用户。