Здесь уже есть some existing questions о том, как запускать команды в качестве другого пользователя. Тем не менее, вопрос и ответы фокусируются на одной командой вместо длинной группы команд.Как выполнить группу команд в качестве другого пользователя в Bash?
Например, рассмотрим следующий сценарий:
#!/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"
... так как сами команды содержат кавычки.
Каков правильный способ «группировать» команды и запускать их под другой учетной записью пользователя?
Любая удача в Unix stackexchange? – icedwater
См. Также http://stackoverflow.com/questions/37586811/pass-commands-as-input-to-another-command-su-ssh-sh-etc/37586820#37586820 – tripleee