То, к чему я стремлюсь:
Я хочу запустить:
- несколько строк одновременно
- под другим пользователем
- с доступом к переменным, установленным пользователем, с которого я запускаю
Итак, из этого:
ROOT_VAR='var-set-from-root'
cmd="
echo $ROOT_VAR
echo `whoami`
echo $HOME
"
желаемый результат будет:
var-set-from-root
UserA
/home/UserA
Что я пробовал до сих пор:
1 прогон с bash; команды, содержащиеся в двойных кавычках:
cmd="
echo $ROOT_VAR
echo `whoami`
echo $HOME
"
sudo -u UserA bash -c "{$cmd}"
# result (has access to root var but still running as root):
var-set-from-root
root
/root
2 запустить с bash с командами в heredoc
sudo -u UserA bash -c<<EOF
echo $ROOT_VAR
echo `whoami`
echo $HOME
EOF
# result (error):
bash: -c: option requires an argument
3 запускается с su и командами в heredoc с одинарной кавычкой
su UserA <<'EOF'
echo $ROOT_VAR
echo `whoami`
echo $HOME
EOF
# result (no access to root var but running as correct user):
UserA
/home/UserA
4 запустить с su и командами в heredoc без кавычек
su UserA <<EOF
echo $ROOT_VAR
echo `whoami`
echo $HOME
EOF
# result (has access to root var but still running as root):
var-set-from-root
root
/root
5 бег с баш; команды в двойных кавычках; корень var передается как параметр:
cmd="
echo $1
echo `whoami`
echo $HOME
"
sudo -u UserA bash -c "{$cmd}" $ROOT_VAR
# result (no access to root variable parameter):
root
/root
Ни один из них не может получить доступ к переменной, установленной от пользователя root, в то же время работая под пользователем без полномочий root. Это возможно даже при использовании параметров?