it-swarm-ja.com

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

現在のユーザーからログアウトせずに(同じ端末で)別のユーザーとしてログインしたいのですが。それ、どうやったら出来るの?

535
tshepang

suコマンドの使用についてはどうですか?

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

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

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

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

$ whoami
user1
$ Sudo -u user2 zsh
$ whoami
user2

Ssh username @ localhostのように、Sudoアクセス権がない場合、より回路的な方法がありますが、Sudoは、インストールされており、使用する権限があれば、おそらく最も簡単です。

630
Pratt

一般に、Sudoを使用して、必要なユーザーとして新しいシェルを起動します。 -uフラグを使用すると、必要なユーザー名を指定できます。

[[email protected] ~] % whoami
mrozekma
[[email protected] ~] % Sudo -u nobody zsh
[[email protected] ~] % whoami
nobody

ssh [email protected]のように、Sudoアクセス権がない場合、より遠回りな方法がありますが、Sudoは、インストールされており、使用する権限がある場合、おそらく最も簡単だと思います

51
Michael Mrozek
$ whoami 

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

$ su secondUser
Password:

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

25
Ashish Saini

Ubuntuを実行していて、ログインしたいユーザーにパスワードが設定されていない場合:

Sudo su - username

自分のパスワードを入力すると、設定する必要があります。もちろん、これには、ユーザーがSudoでroot権限を取得する権限を持っている必要があります。

17
Sundae

端末セッションを別のユーザーに切り替えるには、そのユーザーは終了して元のユーザーに戻ることができないため、execを使用します。

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

これにより、技術的に新しいユーザーが新しい期間プロセスにログインし、現在のユーザーが閉じられます。そうすることで、ユーザーが終了またはCtrl-Dを試行すると、そのユーザーはそれをインスタンス化したユーザーであるかのように端末が閉じます。つまり、ユーザーは元のユーザーの用語に戻ることはできません。彼らがまだ新しい端末セッションを開始して自動的に元のユーザー用語ログインに入ることができることを考えると、一種の無意味なものですが、それはあります。

編集:価値があるのは、〜/ .bashrcでlinux vlockコマンドを使用して、デフォルトでターミナルセッションをロックし、用語セッションユーザーのパスワードをロック解除するように要求することです。構成されているとおり、ユーザーのデフォルト以外の〜/ .bashrcを使用して用語がインスタンス化されていないことを考えると、これは前述の用語を元のユーザーコンテキストで再起動することを幾分妨げます。

9
SYANiDE

Sudo -iu <your_username>私がトリックをする

3
andilabs

これを正しく実行してみましょう。ユーザーAとしてログインしていて、ユーザーBとして「ログイン」していくつかのコマンドを実行したいが、完了したらユーザーAに戻りたいと考えています。簡単にするために、UserBとしてls -l/tmpを実行するとします。 notを実行してUserAの現在のシェルを離れたいが、UserBとしてコマンドを実行し、それでもUserAとしてログインしたままにする場合は、次のようにします。

su - UserB -c "ls -l /tmp"   <-- Just an example

これは、ユーザーBのパスワードがわかっていることを前提としています。ただし、UserBのパスワードがわからない場合は、rootパスワードを知っている必要があります。次に:

Sudo su - UserB -c "ls -l /tmp"   <-- UserB's pw not needed here

一時的にUserBとしてログインして多数のコマンドを実行する場合は、次のようにします。

Sudo su - UserB

これにより、UserBの新しいシェルが表示されます(idと入力して確認します)。完了したら、ctrl-dを実行してログインに戻ることができます。

2
Hopping Bunny

さらに別のルートは、別の(非root)ユーザーとして新しいシェルを起動して、そのユーザーとしてコマンドを実行することです。

[email protected]:~$ Sudo -u mongodb bash          #<-- or zsh, etc... 
[email protected]:~$ mongod --configsvr --dbpath /data/configdb --fork

この例は、mongodbユーザーです。シャーディングされたMongoDBクラスターをデプロイする場合、必要なすべてのプロセスをmongodbとして実行する必要があり、数十のノードのinitスクリプトを使用してプロセスをデーモン化する必要はありません(またはまったく便利ではありません)。

2
azatar

単一のコマンドのみを実行する必要がある場合は、Sudoを使用できます:Sudo -u username command

1
Maksim Luzik