Linuxはすぐにユーザーを切り替えてコマンドを実行します。

Linuxはすぐにユーザーを切り替えてコマンドを実行します。

他のユーザーに切り替える必要があり、その後にいくつかのLinuxコマンドを実行する必要があるシナリオがあります。

私のコマンドはこれです

( echo myPassword | sudo -S su hduser ) && bash /usr/local/hadoop/sbin/start-dfs.sh

ただし、このコマンドを使用するとそのユーザーに切り替えられ、次のコマンドが前のユーザーに実行されます。

これを行うために使用できるシェルスクリプトはありますか?

ベストアンサー1

頑張る

sudo -H -u TARGET_USER bash -c 'bash /usr/local/hadoop/sbin/start-dfs.sh' 

バラより万水道:

- 時間

-H(HOME)オプションは、セキュリティポリシーにHOME環境変数をパスワードデータベースで指定したターゲットユーザーのホームディレクトリに設定するように要求します(デフォルトはroot)。ポリシーによっては、これがデフォルトの動作である可能性があります。

-u ユーザー

-u(ユーザー)オプションを使用すると、sudoはrootではなくユーザーとして指定されたコマンドを実行します。ユーザー名の代わりにuidを指定するには、#uidを使用してください。 uidでコマンドを実行するとき、多くのシェルでは '#'をバックスラッシュ('\')にエスケープする必要があります。セキュリティポリシーは、uidをパスワードデータベースにリストされているものに制限できます。 sudoersポリシーは、targetpwオプションが設定されていない限り、パスワードデータベースにないuidを許可します。他のセキュリティポリシーはこれをサポートしていない可能性があります。

おすすめ記事