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

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

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

su - `whoami`

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

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

私はsuこれがユーザー切り替えを意味することを知っています。

答え1

これバックティック( ``)はいコマンドの置き換え:バックティック内でコマンドを実行した結果に置き換えられます。ここで実行され、whoamiユーザー名を印刷します。

これ-後ろにsusu走るログインシェル:ログインシェルは、特定の環境設定などを最初から読み込みます。デフォルトでは、ユーザーのシェルは通常のシェルとして実行されますが、すべての操作は実行されません(リンクを参照)。

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

したがって、これはコマンドと同じです(マシンのユーザー名も " blunderboy"と仮定します)。

su - blunderboy

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

このコマンドの全体的な結果は、現在のユーザーとして最初から新しいセッションを開始することです。。なぜこのようなことを気にするのですか?目に見えるいくつかの副作用su:特に新しいユーザーセッションを開始するため、ユーザーが属するグループの変更、他のユーザーまたは権限の変更も確認でき、環境変数はすべてリセットされます。通常、新しいグループにユーザーを追加することは、再度ログインした後にのみ適用されます。suこの目的のために再度ログインすると見なされるため、起動されるシェルは新しいグループをアクティブにします。

1これは単純化されていますが、この説明には十分です。

関連情報