【Linux】su・su – / sudoの違い

この記事は約5分で読めます。

ユーザ切り替えコマンドについて解説!(suとsudo)

Linuxを学び始めるとsusudoの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/games
  • su実行時
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:/bin
  • su -実行時
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:/bin

root用の環境になり、PATHの違いによるトラブルを防げるため、一般的にはsu -がよく利用されています。

suとsudoの違い

sudoについては、以下の記事で詳しく解説しています。
.


各コマンドの違いとして、

suは、rootなどユーザを切り替えるためのコマンドです。

一方、sudoは、現在のユーザのまま、指定したコマンドだけを管理者権限で実行します。

その他、相違点は比較表にまとめました。

susudo
コマンドの用途rootや他のへユーザを切り替える一時的にroot権限を付与し、コマンドを実行する
コマンドの実行権限rootシェルで実行
一般ユーザの場合は、そのユーザで実行
必要なコマンドだけroot権限で実行
コマンド実行に
必要なパスワード
rootや切り替えるユーザのパスワードログイン中のユーザパスワード
suとsudoの比較表

 


いかがでしたでしょうか。

最後まで、お読みいただきありがとうございました。

コメント

タイトルとURLをコピーしました