sudoを使用せずにユーザー初期ログインをシミュレートする

sudoを使用せずにユーザー初期ログインをシミュレートする

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

また、プログラムに分割エラーが発生した場合は、プログラムに属さない他のメモリセグメントにアクセスしようとします。

関連情報