古いユーザーを参照せずにユーザーを切り替えるにはどうすればよいですか?

古いユーザーを参照せずにユーザーを切り替えるにはどうすればよいですか?

su少し前に、権限のない LXC を操作していたときに、ユーザーに切り替えるとコンテナを作成するコマンドが失敗するが、ssh user@localhostログインすると機能することに気付きました。

これは LXC 関連の質問ではありませんが、参照を残したり、古いユーザーから変数を持ち込んだりせずに、ユーザーを切り替える最適な方法が知りたいと思いました。

ありがとう!

答え1

suとの違いは、後者は実際にログインシェルを必要とするのに対し、前者はデフォルトでは必要としないという点です。ただし、前者は新しい対話型シェルを作成します(その重要性についてはssh、の先頭にある「INVOCATION」を参照してください)。man bash相互の作用そしてログインシェル)。出典man su

下位互換性のため、suはデフォルトで現在のディレクトリを変更せず、環境変数HOMEとSHELL(ターゲットユーザーがrootでない場合はUSERとLOGNAMEも)のみを設定します。常に--login オプションを使用する(ショートカット - の代わりに) 環境の混在によって発生する副作用を回避するためです。

したがって、試してみてsu --login、それが望みどおりに機能するかどうかを確認できます。

GUIを使用していると仮定すると、単に終了して再度ログインするわけではないはずです。しかし、5月とにかく、使用しているターミナルから実行するだけで、(init システムによって異なると思いますが) 可能ですlogin。動作する場合は、通常のプロンプトが表示されるはずです。完了したら、に従ってそこからlogin:実行できます。exitsu

関連情報