このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。
一時的に別のユーザーに切り替える:suコマンド
一時的に別のユーザーに切り替える:suコマンド
Linuxシステムでは、ユーザーが異なる権限を持って作業することが一般的です。特に、システム管理者権限を持つroot
ユーザーでしか実行できないコマンドが存在します。このような場合、一般ユーザーは一時的にroot
ユーザーに切り替えて作業を行う必要があります。この切り替えを簡単に行うためのコマンドがsu
コマンドです。su
コマンドを使用することで、ログインし直すことなく、別のユーザーの環境に一時的に切り替えることが可能になります。
suコマンドの概要
su
コマンドは、「Switch User」の略で、シェルのユーザーを一時的に別のユーザーに切り替えるために使用されます。ユーザー名を指定しない場合、デフォルトでroot
ユーザーに切り替わります。一般ユーザーがシステム管理コマンドを実行することはできませんが、su
コマンドを使用してroot
ユーザーに切り替えることで、必要な管理コマンドを実行することができます。
【構文】su [オプション] [ユーザー名]
- ユーザー名: 切り替える対象のユーザーを指定します。指定しない場合は
root
ユーザーに切り替わります。 - オプション:
-
オプションを使用することで、ログインシェルを初期化し、完全にそのユーザーの環境に切り替えることができます。
suコマンドの主なオプション
オプション | 説明 |
---|---|
- | ログインシェルを初期化し、指定したユーザーの環境を再現します。環境変数やカレントディレクトリも変更されます。 |
「-」を付けた時と付けない時の違い
su
コマンドに-
オプションを付けるか付けないかで、切り替わった後の環境が変わります。
項目 | su | su - |
---|---|---|
環境変数 | 元のユーザーの環境変数を引き継ぐ。 | 指定したユーザーの環境変数に切り替わる。 |
カレントディレクトリ | 元のユーザーのカレントディレクトリが引き継がれる。 | 指定したユーザーのホームディレクトリに切り替わる。 |
コマンドの使用例と解説
以下に、su
コマンドを使用した具体的な手順と解説を示します。
1.環境変数NAME
にTaro
を設定します。
・「export NAME=Taro
」コマンドを実行します。
現在のユーザーの環境変数NAME
にTaro
を設定します。
user01@ubuntu-vm:~$ export NAME=Taro
2.環境変数NAME
を表示します。
・「echo $NAME
」コマンドを実行します。
環境変数NAME
の内容を表示し、Taro
が設定されていることを確認します。
user01@ubuntu-vm:~$ echo $NAME
Taro
3.「-」オプションを付けてsu
コマンドを実行します。
・「su -
」コマンドを実行します。
root
ユーザーにログインし、その環境が初期化されます。
user01@ubuntu-vm:~$ su -
パスワード:
root@ubuntu-vm:~#
4.環境変数NAME
を表示します。
・「echo $NAME
」コマンドを実行します。
環境変数NAME
はリセットされ、root
ユーザーの環境に切り替わっているため、何も表示されません。
root@ubuntu-vm:~# echo $NAME
root@ubuntu-vm:~#
5.pwd
コマンドを実行します。
・「pwd
」コマンドを実行します。
カレントディレクトリがroot
ユーザーのホームディレクトリに切り替わっていることを確認します。
root@ubuntu-vm:~# pwd
/root
6.exit
して元のユーザーに戻ります。
・「exit
」コマンドを実行します。
root
ユーザーからexit
して元のユーザーに戻ります。
root@ubuntu-vm:~# exit
ログアウト
7.今度は「-」のオプションを付けないでsu
コマンドを実行します。
・「su
」コマンドを実行します。
root
ユーザーに切り替わりますが、環境変数やカレントディレクトリは変更されません。
user01@ubuntu-vm:~$ su
パスワード:
root@ubuntu-vm:/home/user01#
8.環境変数NAME
を表示します。
・「echo $NAME
」コマンドを実行します。
元のユーザーの環境変数NAME
が保持されており、Taro
が表示されます。
root@ubuntu-vm:/home/user01# echo $NAME
Taro
9.pwd
コマンドを実行します。
・「pwd
」コマンドを実行します。
カレントディレクトリは元のユーザーのままであることを確認します。
root@ubuntu-vm:/home/user01# pwd
/home/user01
まとめ
su
コマンドは、Linuxシステムにおいて一時的にユーザーを切り替える際に非常に便利なコマンドです。「-」オプションを付けることで、完全に別のユーザーの環境に切り替えることができ、付けない場合は、現在のセッションの環境を維持したまま切り替えることができます。この柔軟性を活かして、さまざまな管理作業を効率よく行うことが可能です。