ユーザーを切り替え、sudo を使用して bash スクリプトからコマンドを実行します。

ユーザーを切り替え、sudo を使用して bash スクリプトからコマンドを実行します。

sudoを使用して実行する必要があるコマンドがありますが、まず管理者アカウントにsuしてパスワードを要求するスクリプトが必要です。

現時点では、次のように新しいユーザーで2番目のスクリプトを呼び出す場合にのみ機能させることができます。

start.sh

#!/bin/bash

# how can we just put the script here instead of a separate file?
su -c "sudo -S ./.launchStage2.sh" -m admin_user

.launchStage2.sh

#!/bin/bash
source /root/pyusb/bin/activate
cd /root/pyusb
python stormLauncher.py
deactivate
cd ~

2番目のスクリプトを削除して最初のスクリプトで実行する方法はありますか? Extra :) 現在、suとsudoのパスワードを一度に2回要求しますが、一度だけ要求する方法はありますか?

sudo編集:通常のユーザーアカウントを上に置くのではなく、必要に応じて使用する別の管理者アカウントを使用したいと思います。主な理由は、私が教室の研究室の先生であり、学生が何とか私の一般的なアカウントにアクセスしてもまだsudoを使用できないからです。これが意味があるかどうかはわかりませんが、これは私たちの組織のIT部門が私にお勧めし、この質問の一部ではありません。

答え1

スクリプトは自分自身を呼び出すことができます。

if ! [ admin_user = "$USER" ] && ! [ root = "$USER" ]; then
    su -c "$0" -m admin_user
elif ! [ root = "$USER" ]; then
    sudo "$0"
else
    source /root/pyusb/bin/activate
    # [...]
fi

関連情報