Уже есть некоторые существующие вопросы, которые заданы здесь о запуске команд в качестве другого пользователя. Однако вопрос и ответы сосредоточены на одной команде вместо длинной группы команд.
Например, рассмотрим следующий script:
#!/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"
... поскольку сами команды содержат кавычки.
Каков правильный способ "группировать" команды и запускать их под другой учетной записью пользователя?