このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。

一時的に別のユーザーに切り替える:suコマンド

一時的に別のユーザーに切り替える:suコマンド

 Linuxシステムでは、ユーザーが異なる権限を持って作業することが一般的です。特に、システム管理者権限を持つrootユーザーでしか実行できないコマンドが存在します。このような場合、一般ユーザーは一時的にrootユーザーに切り替えて作業を行う必要があります。この切り替えを簡単に行うためのコマンドがsuコマンドです。suコマンドを使用することで、ログインし直すことなく、別のユーザーの環境に一時的に切り替えることが可能になります。

suコマンドの概要

 suコマンドは、「Switch User」の略で、シェルのユーザーを一時的に別のユーザーに切り替えるために使用されます。ユーザー名を指定しない場合、デフォルトでrootユーザーに切り替わります。一般ユーザーがシステム管理コマンドを実行することはできませんが、suコマンドを使用してrootユーザーに切り替えることで、必要な管理コマンドを実行することができます。

【構文】
su [オプション] [ユーザー名]

  • ユーザー名: 切り替える対象のユーザーを指定します。指定しない場合はrootユーザーに切り替わります。
  • オプション-オプションを使用することで、ログインシェルを初期化し、完全にそのユーザーの環境に切り替えることができます。
suコマンドの主なオプション
オプション説明
-ログインシェルを初期化し、指定したユーザーの環境を再現します。環境変数やカレントディレクトリも変更されます。
suコマンドの主なオプション

「-」を付けた時と付けない時の違い

suコマンドに-オプションを付けるか付けないかで、切り替わった後の環境が変わります。

項目susu -
環境変数元のユーザーの環境変数を引き継ぐ。指定したユーザーの環境変数に切り替わる。
カレントディレクトリ元のユーザーのカレントディレクトリが引き継がれる。指定したユーザーのホームディレクトリに切り替わる。
「-」を付けた時と付けない時の違い

コマンドの使用例と解説

以下に、suコマンドを使用した具体的な手順と解説を示します。

1.環境変数NAMETaroを設定します。

・「export NAME=Taro」コマンドを実行します。

現在のユーザーの環境変数NAMETaroを設定します。

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システムにおいて一時的にユーザーを切り替える際に非常に便利なコマンドです。「-」オプションを付けることで、完全に別のユーザーの環境に切り替えることができ、付けない場合は、現在のセッションの環境を維持したまま切り替えることができます。この柔軟性を活かして、さまざまな管理作業を効率よく行うことが可能です。