1つの端末でユーザーを切り替えるには?

1つの端末でユーザーを切り替えるには?

現在のユーザー(同じ端末)からログアウトせずに他のユーザーとしてログインしたいです。どうすればいいですか?

答え1

コマンドを使うのはどうですかsu

$ whoami
user1
$ su - user2
Password:
$ whoami
user2
$ exit
logout

rootとしてログインする場合は、ユーザー名を指定する必要はありません。

$ whoami
user1
$ su -
Password:
$ whoami
root
$ exit
logout

通常、sudo希望するユーザー ID で新しいシェルを起動できます。この-uフラグを使用すると、必要なユーザー名を指定できます。

$ whoami
user1
$ sudo -u user2 zsh
$ whoami
user2

sudo アクセス権がなければ、ssh username@localhost のようなより迂回的な方法がありますが、sudoそれがインストールされていて権限があると仮定すると、おそらく最も簡単な方法です。

答え2

通常、sudo希望するユーザーで新しいシェルを起動できます。この-uフラグを使用すると、必要なユーザー名を指定できます。

[mrozekma@etudes-1 ~] % whoami
mrozekma
[mrozekma@etudes-1 ~] % sudo -u nobody zsh
[nobody@etudes-1 ~] % whoami
nobody

たとえば、sudoアクセス権がない場合はよりバイパス的な方法がありますが、インストールされていてアクセス権がある場合は最も簡単な方法ssh username@localhostです。sudo

答え3

$ whoami 

このコマンドは現在のユーザーを印刷します。ユーザーを変更するには、次のコマンドを使用する必要があります(後にユーザーパスワードが続きます):

$ su secondUser
Password:

正しいパスワードを入力すると、指定したユーザーとしてログインします。 (再実行で確認できます。whoami

答え4

ターミナルセッションを別のユーザー(元のユーザーとして再び終了できない)に切り替えるには、execを使用します。

$|# exec su - [ユーザー名]

技術的には、これは新しい期間プロセスに新しいユーザーを記録し、現在のプロセスを終了します。これにより、ユーザーが終了しようとするか、Ctrl-Dを押すと、そのユーザーが端末をインスタンス化したかのように端末が閉じられます。つまり、ユーザーは元のユーザー用語で再び終了することはできません。新しいターミナルセッションを開始し、元のユーザーの条件で自動的にログインできることを考慮すると、これは少し無意味ですが、それはすべてです。

編集:価値がある場合は、デフォルトでデフォルトのターミナルセッションをロックすることができます。これにより、元のユーザー・コンテキストで上記の用語が再始動するのを部分的に防止できます。なぜなら、その用語は設定されているように、ユーザーのデフォルトではなく ~/.bashrc を使用してインスタンス化されないからです。

関連情報