ユーザー「useradm」が次のようにコマンドを実行するbashコマンドがあります。
sudo su - platfrmapi; sh script.sh
sudo su - platfrmapi; cp script.sh script_2.sh
ユーザー切り替えは完全に機能しますが、 "script.sh"の一部として生成されたログは "platfrmapi"の代わりに "useradm"が所有します。
私たちは何かを逃しましたか?
答え1
コマンドは、セミコロンで連結して実行されることを意味します。独立して!まずsudo
、コマンドが実行され、platfrmapi ユーザーに切り替えられます。プロセスは最終的に終了する必要があり、これにより2番目のコマンドを実行できます。つまり、sh script.sh
コマンドsudo su -
やめる。
sh script.sh
platfrmapiユーザーとして実行したいと思うので、次のようにします。
sudo -u platfrmapi sh script.sh
... useradmユーザーに正しいsudo実行権限があるとしますsh script.sh
。
chmod +x script.sh
スクリプトが実行可能であること(および正しいsh-bang行があるかどうか)を確認してから、直接実行する方が簡単です。
sudo -u platfrmapi ./script.sh