回答:
su
コマンドを使用してはどうですか?
$ whoami
user1
$ su - user2
Password:
$ whoami
user2
$ exit
logout
ルートとしてログインする場合、ユーザー名を指定する必要はありません。
$ whoami
user1
$ su -
Password:
$ whoami
root
$ exit
logout
一般に、sudo
新しいシェルを必要なユーザーとして起動するために使用できます。-u
フラグは、あなたがしたいユーザ名を指定することができます:
$ whoami
user1
$ sudo -u user2 zsh
$ whoami
user2
ssh username @ localhostのようにsudoアクセスがない場合は、より多くの方法がありますが、sudo
インストールされていて使用する許可がある場合は、おそらく最も簡単です。
su - [user]
役に立つかもしれません-追加のダッシュはログインシェルを提供します。
echo >>/dev/stderr
ログイン時にこのコマンドを実行した後、「-su:/ dev / stderr:Permission denied」というエラーが表示されsu --login ...
ます。私はこれを見つけましたunix.stackexchange.com/questions/38538/…–
env
それをリストしたとき、すべてが整然としていて、目視検査が行くことができるのを見ました; そして、1つ間違っていました: XAUTHORITY=/home/user1/.Xauthority'. Not sure _why_? So X-window doesn't work by default because the protection on
〜/ .Xauthority`ファイルは:-rw-------
です。コピーを作成して、geditを実験として実行できるようにしました。
通常、使用sudo
するユーザーとして新しいシェルを起動するために使用します。-u
フラグは、あなたがしたいユーザ名を指定することができます:
[mrozekma@etudes-1 ~] % whoami
mrozekma
[mrozekma@etudes-1 ~] % sudo -u nobody zsh
[nobody@etudes-1 ~] % whoami
nobody
のようssh username@localhost
にsudoアクセスを持っていない場合、もっと遠回りの方法がありますが、sudo
インストールされていて、使用する許可があればおそらく最も簡単だと思います
sudo -s
のようなシェルを提供しsu
、sudo -i
ログインをシミュレートしますsu -
。-u $user
もちろん、と組み合わせることができます。
端末セッションを別のユーザーに切り替えて、そのユーザーが元のユーザーに戻ることができない場合は、execを使用します。
$ |#exec su-[ユーザー名]
これにより、新しい期間プロセスで新しいユーザーに技術的にログインし、現在のユーザーを閉じます。そのようにして、ユーザーが終了またはCtrl-Dを試みると、ターミナルはそのユーザーがインスタンスを作成したユーザーであるかのように閉じます。つまり、ユーザーは元のユーザーの用語に戻ることができません。彼らはまだ新しいターミナルセッションを開始し、元のユーザー用語ログインに自動的に参加できることを考えると、無意味なものですが、そこにはあります。
編集:価値のあるものとして、〜/ .bashrcでlinux vlockコマンドを使用して、デフォルトでターミナルセッションをロックし、セッションユーザーというパスワードをロック解除する必要があります。これは、設定されたユーザーのデフォルト以外の〜/ .bashrcを使用して用語がインスタンス化されていない場合、元のユーザーコンテキストでの前述の用語の再起動をある程度防ぐことができます。
さらに別の方法は、別の(非ルート)ユーザーとして新しいシェルを起動して、そのユーザーとしてコマンドを実行することです。
ubuntu@aws-ip:~$ sudo -u mongodb bash #<-- or zsh, etc...
mongodb@aws-ip:~$ mongod --configsvr --dbpath /data/configdb --fork
この例はmongodb
ユーザーです。分割されたMongoDBクラスターをデプロイする場合、必要なすべてのプロセスを実行する必要があり、多数mongodb
のノードのinitスクリプトを使用してプロセスをデーモン化する必要はありません(または完全に便利です)。
これを正しくしましょう:UserAとしてログインしており、UserBとして「ログイン」してコマンドを実行しますが、完了したらUserAに戻りたいと思います。簡単にするために、ls -l / tmpをUserBとして実行するとします。あなたがない場合ではないユーザーAとしてログインしたままユーザーAの現在のシェルを残すのではなく、まだユーザーBのようにコマンドを実行したい、あなたはこれを行う必要があります。
su - UserB -c "ls -l /tmp" <-- Just an example
これは、UserBのパスワードを知っていることを前提としています。ただし、UserBのパスワードがわからない場合は、rootパスワードを知る必要があります。次に:
sudo su - UserB -c "ls -l /tmp" <-- UserB's pw not needed here
一時的にUserBとしてログインして多くのコマンドを実行する場合は、次のようにします。
sudo su - UserB
これにより、UserBの新しいシェルが提供されます(idを入力して確認します)。完了したら、ctrl-dを実行してログインに戻ることができます。
$XDG_RUNTIME_DIR
特に)の問題にぶつかり、そのせいで気が狂いました。- > unix.stackexchange.com/questions/354826/...