「sudo su -」はユーザーを切り替えますが、親IDを使用してファイルを生成します。

「sudo su -」はユーザーを切り替えますが、親IDを使用してファイルを生成します。

ユーザー「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.shplatfrmapiユーザーとして実行したいと思うので、次のようにします。

sudo -u platfrmapi sh script.sh

... useradmユーザーに正しいsudo実行権限があるとしますsh script.sh

chmod +x script.shスクリプトが実行可能であること(および正しいsh-bang行があるかどうか)を確認してから、直接実行する方が簡単です。

sudo -u platfrmapi ./script.sh

関連情報