他のnologinユーザーでコマンドを実行する

他のnologinユーザーでコマンドを実行する

使っていますメイブンアントランプラグイン実行するsshexectarをコピーしてリモートサーバーの宛先ディレクトリに抽出するコマンド。

それを抽出するために実行したコマンドは次のとおりです。

/bin/sh -c 'tar -vxzf /path/to/${artifact}.tar.gz -C path/to/target/directory;'

これ使用されるターゲットディレクトリの所有者がnologinに設定されている新しいユーザーに変更されるまで正常に動作します。新しいユーザーとしてこのコマンドを実行する方法を見つけようとしています。

真似してみました。Basil Aの回答

/bin/su -s /bin/sh -c 'tar -vxzf /path/to/${artifact}.tar.gz -C path/to/target/directory;' ${newUser}

ただし、パスワードの入力を求められますが、これはnologinユーザーなので機能しません。

また、私はLinuxの専門家ではありませんが、以前のユーザー(sudoアクセス権を持つ)としてホームディレクトリからこのコマンドを実行しようとすると失敗します。

sudo -u ${newUser} tar -vxzf /path/to/${artifact}.tar.gz -C path/to/target/directory;

ただし、ターゲットディレクトリに移動して以前のユーザーと同じコマンドを実行すると機能します。この行動の違いを理解すると、答えを得るのに役立ちます。

ベストアンサー1

ここでの問題は、新しいユーザーがシステムユーザーなのか、ログインしていないユーザーなのかとは何の関係もないようです。何が起こっているのかについての最も明白な説明は、ターゲットディレクトリの所有者が変更されたため、ソースディレクトリへの読み取り権限とターゲットディレクトリへの書き込み権限を持つユーザーがいないことです。

問題のホストに対するsudo権限があるため、この問題を解決するための多くのオプションがあります。

  1. 元のユーザーに宛先ディレクトリへの書き込み権限を付与し、そのtarユーザーとしてコマンドを実行できます。

  2. ログインしていない新しいユーザーにソースディレクトリに対する読み取り権限を付与し、そのtarユーザーとしてコマンドを実行できます。

  3. tarsudoでコマンドを実行して、所有権を必要に応じて設定できます。

たとえば、次のように動作する必要があります。

sudo tar -vxzf /path/to/${artifact}.tar.gz -C /path/to/target/directory

sudo chown -R "${newUser}:${newUser}" /path/to/target/directory

より多くのトリックを使用してrootとして実行したくない場合は、関連ユーザーアカウントの関連ディレクトリとグループメンバーシップに関する権限と所有権情報を含めるように質問を更新する必要があります。

おすすめ記事