web-dev-qa-db-ja.com

su-`whoami`コマンドは何をしますか?

プロジェクトでスクリプトを実行していますが、このコマンドが表示されます

su - `whoami`

私はいくつかの基本的な質問があります:

  1. このコマンドは何をしますか?
  2. 「whoamiコマンド以外の引用符の意味は何ですか?
  3. 何に使用されますか?

suはスイッチユーザーの略です。

5
sachinjain024

バックティック(`` are コマンド置換 :これらは、バッククォート内でコマンドを実行した結果に置き換えられます。ここでwhoamiを実行し、ユーザー名を出力します。

- after susuを実行させます ログインシェル :ログインシェルは、特に特定の環境構成を最初から読み取ります。デフォルトでは、ユーザーのシェルを通常のシェルとして実行するだけで、すべての作業は実行されません(リンクを参照)。

suは常に新しいユーザーセッションを開始し、ユーザーが最初からログインしたかのようにユーザーを再認証します。外部からの環境変数はすべて、内部シェルでクリアされます。

したがって、これはすべてまとめてコマンドに相当します(マシン上のユーザー名も「blunderboy」であると仮定します)。

su - blunderboy

これは、「新しいセッションをblunderboyとして再認証し、ログインシェルを実行する」ことを意味します。

このコマンドの全体的な結果は、現在のユーザーのように、最初から新しいセッションを開始することです。なぜわざわざそうするのですか? suのいくつかの副作用を検出する可能性があります。特に、新しいユーザーセッションを開始するため、ユーザーが属するグループへの変更、および他のユーザーや権限の変更を検出します。 、およびおよび環境変数はすべてリセットされます。通常、ユーザーを新しいグループに追加しても、ユーザーは再度ログインするまで有効になりません¹:suはその目的で再度ログインしたものとしてカウントされるため、起動するシェルでは新しいグループがアクティブになります。

¹これは単純化したものですが、この説明には十分に当てはまります。

6
Michael Homer