他のユーザーに切り替える必要があり、その後にいくつかの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を許可します。他のセキュリティポリシーはこれをサポートしていない可能性があります。