別のユーザーとしてコマンドを実行することについて、ここで尋ねられた既存の質問がいくつかあります。ただし、質問と回答は、コマンドの長いグループではなく、1 つのコマンドに焦点を当てています。
たとえば、次のスクリプトを考えてみましょう。
#!/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
最後の 3 つのコマンドは、またはを使用して別のユーザーとして実行する必要がありますsudo
。この例では 3 つのコマンドがありましたが、さらに多くのコマンドがあったとします...コマンド自体は、一重引用符と二重引用符を使用します。
上記の 2 番目のポイントにより、次の構文を使用できなくなります。
su somebody -c "command"
...コマンド自体に引用符が含まれているためです。
コマンドを「グループ化」して別のユーザー アカウントで実行する適切な方法は何ですか?