このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。
【Linux】一時的に別のユーザーに切り替える: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=Taro2.環境変数NAMEを表示します。
・「echo $NAME」コマンドを実行します。
環境変数NAMEの内容を表示し、Taroが設定されていることを確認します。
user01@ubuntu-vm:~$ echo $NAME
Taro3.「-」オプションを付けて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
/root6.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
Taro9.pwdコマンドを実行します。
・「pwd」コマンドを実行します。
カレントディレクトリは元のユーザーのままであることを確認します。
root@ubuntu-vm:/home/user01# pwd
/home/user01まとめ
suコマンドは、Linuxシステムにおいて一時的にユーザーを切り替える際に非常に便利なコマンドです。「-」オプションを付けることで、完全に別のユーザーの環境に切り替えることができ、付けない場合は、現在のセッションの環境を維持したまま切り替えることができます。この柔軟性を活かして、さまざまな管理作業を効率よく行うことが可能です。
