ユーザ切り替えコマンドについて解説!(suとsudo)
Linuxを学び始めるとsuとsudoの2つのコマンドを目にする機会があります。
どちらも管理者権限に関係するコマンドで、別のユーザ権限でコマンドを実行する際に使用されます。しかし、それぞれ役割や使い方は異なります。
本記事では、まずsuコマンドの基本や、「su」と「su -」の違いを解説し、その上で「sudo」との違いについて整理します。
suコマンド
suコマンドとは、Linuxにおいて、別のユーザへ切り替えるためのコマンドです。
名前は substitute user(ユーザを切り替える) の略です。
suでは、デフォルトである「root」へ切り替えることが多いですが、suに加えてユーザを指定することで、他のユーザにも切り替えることができます。
suコマンドの構文は以下の通りです。
su [オプション] [ユーザー名]- 「rootユーザ」へ切り替える場合
userA@Server01:~$
userA@Server01:~$ su ## suのみ実行
Password: ## rootのパスワードを入力
root@Server01:~# ## 何も指定しない場合は、rootへ切り替わる- 「他のユーザ(userB)」へ切り替える場合
userA@Server01:~$
userA@Server01:~$ su userB ## suに切り替えたいユーザ名を指定
Password: ## userBのパスワードを入力
userB@Server01:~$ ## 指定したuserBへ切り替わるsuコマンドでユーザ名を省略した場合は、デフォルトでrootユーザに切り替わります。
そのため、suのみを実行すると、rootユーザに切り替わり、また、切り替え先を明示的に指定することも可能で、su rootと実行しても、suと結果は同じく、rootに切り替わります。
suとsu – の違い
su -とは、suコマンドにオプションが追加されたコマンドです。
このオプションをつけておくことで、現在のディレクトリを引き継がず、ログインし直した状態でユーザを切り替えることができます。
それぞれの特徴は以下の通りです。
- suの特徴
- カレントディレクトリはそのまま残る
- root用に環境変数が変換される($HOME、$USER など)
- 環境により環境変数も一部引き継ぐ場合がある($PATH など)
- 完全なる再ログインではない
- su – の特徴
- ログインシェルになる
- root用に環境変数が変更される($HOME、$PATHなど)
- rootでログインした時とほぼ同じ環境
- コマンド実行前(一般ユーザでログイン時)
userA@Server01:~$ pwd
/home/userA
userA@Server01:~$ echo $HOME
/home/userA
userA@Server01:~$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/gamessu実行時
userA@Server01:~$ su
Password:
root@Server01:/home/userA# ## プロンプトにカレントディレクトリが引き継がれている
root@Server01:/home/userA# pwd ## カレントディレクトリが引き継がれている
/home/userA
root@Server01:/home/userA# echo $HOME ## rootのホームディレクトリになる ※HOMEは環境により異なる
/root
root@Server01:/home/userA# echo $PATH ## PATHは現在の環境をある程度引き継ぐ ※どこまで引き継ぐかは環境により異なる
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/binsu -実行時
userA@Server01:~$ su -
Password:
root@Server01:~# ## rootのログインシェルになる
root@Server01:~# pwd ## rootのホームディレクトリへ移る
/root
root@Server01:~# echo $HOME ## rootのホームディレクトリになる
/root
root@Server01:~# echo $PATH ## PATHはroot用に初期化される
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/binroot用の環境になり、PATHの違いによるトラブルを防げるため、一般的にはsu -がよく利用されています。
suとsudoの違い
sudoについては、以下の記事で詳しく解説しています。
.
各コマンドの違いとして、
suは、rootなどユーザを切り替えるためのコマンドです。
一方、sudoは、現在のユーザのまま、指定したコマンドだけを管理者権限で実行します。
その他、相違点は比較表にまとめました。
| su | sudo | |
|---|---|---|
| コマンドの用途 | rootや他のへユーザを切り替える | 一時的にroot権限を付与し、コマンドを実行する |
| コマンドの実行権限 | rootシェルで実行 一般ユーザの場合は、そのユーザで実行 | 必要なコマンドだけroot権限で実行 |
| コマンド実行に 必要なパスワード | rootや切り替えるユーザのパスワード | ログイン中のユーザパスワード |
いかがでしたでしょうか。
最後まで、お読みいただきありがとうございました。

コメント