2つのサードパーティプログラムをリンクするスクリプトを作成しています。 (データドックとAWS)
sudo -u
データマイニングスクリプトは私のスクリプトを実行するために使用されます。
初期ログインがシミュレートされない場合、データを取得するために必要なスクリプトが segfault を生成します。
データマイニングスクリプトに権限がありませんsudo
。
次のようにエラーを再現できます。
[me] ~$ sudo -u dd-agent aws
[me] ~$ echo $?
139
もちろん、sudo -iu
コマンドを実行して実行すると正常に動作します。
パスせずに初期ログインをシミュレートできますかsudo
?
答え1
ログイン偽装の場合(「sudo -i」転送なし)、「su」コマンドを使用する必要があります。
パラメータ「-」のマニュアルページを確認してください。
-, -l, --login
Starts the shell as login shell with an environment similar to a real login:
o clears all environment variables except for TERM
o initializes the environment variables HOME, SHELL, USER, LOGNAME, PATH
o changes to the target user's home directory
o sets argv[0] of the shell to '-' in order to make the shell a login shell
さらに、使用する必要がありますここ - ドキュメント。
たとえば、「id」コマンドを使用して、ログインしたユーザーのIDが印刷されていることを確認できます。
#\bin\bash
id
su - user <<EOF
userPassword
id
#here you can execute your script
EOF
id
また、プログラムに分割エラーが発生した場合は、プログラムに属さない他のメモリセグメントにアクセスしようとします。