こんにちは、フルスタックエンジニアのryuです。
今回の記事では、Linuxのsuコマンドの使い方について解説します。
Linuxを勉強していると、
「rootユーザーに切り替えるにはどうするの?」
「suとsu -は何が違うの?」
「sudoとsuはどう使い分けるの?」
と疑問に思うことがあります。
suは、現在ログインしているユーザーから別のユーザーへ切り替えるためのコマンドです。ユーザー名を指定せずに実行するとrootユーザーへの切り替えになるため、「rootになるためのコマンド」と覚えている方も多いと思います。
ただ、実際にはroot以外のユーザーへ切り替えることもできます。
この記事では、まず基本的な使い方を確認してから、su -との違いやsudoとの使い分けまで順番に見ていきましょう。
Linuxのsuコマンドとは?¶
suは、現在のシェル上で別のユーザーとして操作するためのコマンドです。
基本的な書き方は次のとおりです。
su [ユーザー名]
例えば、adminというユーザーへ切り替えたい場合は、次のように実行します。
su admin
ユーザー名を省略すると、切り替え先はrootになります。
su
そのため、次のように考えると分かりやすいです。
su → rootユーザーへ切り替える
su admin → adminユーザーへ切り替える
su user01 → user01ユーザーへ切り替える
Linuxでは、ユーザーによって実行できる操作が異なります。
一般ユーザーでは変更できないシステム設定を操作したい場合や、別ユーザーの環境で動作を確認したい場合などにsuを利用します。
suコマンドでrootユーザーへ切り替える¶
まずは、最も基本的な使い方から見てみましょう。
次のコマンドを実行します。
su
コマンドを実行すると、通常は切り替え先であるrootユーザーのパスワードを求められます。
Password:
正しいパスワードを入力すると、rootユーザーへ切り替わります。

ここで一つ注意したいのが、すべてのLinux環境でsuを使ってrootへ切り替えられるとは限らないことです。
例えばUbuntuでは、初期状態でrootアカウントのパスワードがロックされている構成が一般的です。その場合、suでrootへ切り替えるのではなく、管理者権限が必要なコマンドだけsudoを付けて実行します。
sudo apt update
利用しているLinuxディストリビューションやサーバーの設定によって運用方法が異なるため、「rootのパスワードが分からないから、とりあえず変更する」という対応は避けましょう。
会社のサーバーなど、自分が管理していない環境であれば、まずシステム管理者へ確認してください。
suコマンドでユーザーが切り替わったか確認する¶
suを実行したあと、「本当にユーザーが切り替わったの?」と確認したいことがあります。
その場合はwhoamiコマンドを使うと簡単です。
whoami
rootへ切り替わっていれば、次のように表示されます。
root

また、ターミナルのプロンプトを見ても確認できます。
一般ユーザーでは末尾が$、rootユーザーでは#になる設定がよく使われています。

ただし、プロンプトの表示は環境によって変更できます。
確実に確認したい場合は、whoamiやidコマンドを利用しましょう。
id
idを使うと、現在のユーザーIDだけではなく、所属しているグループなども確認できます。
root以外のユーザーへ切り替える¶
suはroot専用のコマンドではありません。
ユーザー名を指定すれば、別の一般ユーザーへ切り替えることもできます。
例えば、adminユーザーへ切り替える場合は次のように実行します。
su admin
パスワードを求められたら、基本的には切り替え先であるadminユーザーのパスワードを入力します。
切り替えたあとにwhoamiを実行してみましょう。
whoami
次のように表示されれば切り替えられています。
admin
複数ユーザーで利用するLinuxサーバーでは、「このユーザーの権限ではどう見えるのか」「このユーザーでアプリケーションを実行するとどうなるのか」と確認したいことがあります。
そのような場合にもsuを利用できます。
suとsu -の違いとは?¶
suを勉強していると、かなりの確率で出てくるのがsu -です。
su -
「最後のハイフンは何?」と思いますよね。
suとsu -は、どちらもユーザーを切り替えるコマンドですが、切り替え後の環境が異なります。
suだけを実行した場合¶
su
suだけの場合、ユーザーは切り替わりますが、現在の作業ディレクトリや一部の環境を引き継いだ状態になります。
そのため、rootへ切り替わっても、切り替える前にいたディレクトリにそのままいることがあります。
su -を実行した場合¶
su -
-を付けると、切り替え先のユーザーがログインしたときに近い環境でシェルを開始します。
rootへ切り替えた場合であれば、rootのホームディレクトリへ移動し、HOMEやPATHなども切り替え先のユーザー向けに設定されます。
例えば、一般ユーザーのホームディレクトリでsuを実行した場合と、su -を実行した場合では、pwdの結果が変わることがあります。
pwd
違いをイメージすると、次のようになります。
| コマンド | ユーザー | 環境 |
|---|---|---|
su |
rootへ切り替わる | 元ユーザーの環境を一部引き継ぐ |
su - |
rootへ切り替わる | rootでログインしたときに近い環境になる |
rootユーザーとしてしばらく作業するのであれば、環境変数が混ざることによるトラブルを避けるためにも、su -を利用する方が分かりやすいです。
su -は、次のようにユーザー名と組み合わせることもできます。
su - admin
これでadminユーザーのログイン環境に近い状態へ切り替わります。
suコマンドを終了して元のユーザーへ戻る¶
rootや別のユーザーへ切り替えたあと、元のユーザーへ戻る場合はexitを実行します。
exit
または、Ctrl + Dでも終了できます。
例えば、
user01
↓ su -
root
↓ exit
user01
という流れです。
suを何度も実行するとシェルが重なっていくので、作業が終わったらexitで元のユーザーへ戻ることも覚えておきましょう。
suコマンドのよく使うオプション¶
suにはさまざまなオプションがあります。
すべて暗記する必要はありません。まずは、よく利用するものを覚えておけば十分です。
| オプション | 説明 |
|---|---|
-, -l, --login |
ログインしたときに近い環境でユーザーを切り替える |
-c, --command |
別ユーザーとして指定したコマンドを実行する |
-m, -p, --preserve-environment |
現在の環境をできるだけ維持する |
-s, --shell |
利用するシェルを指定する |
-h, --help |
ヘルプを表示する |
-V, --version |
バージョンを表示する |
実際にLinuxを使ううえでは、まずsu、su -、su ユーザー名を使えるようになればよいでしょう。
-cオプションで1つのコマンドだけ実行する¶
-cを利用すると、ユーザーを切り替えた状態でシェルを操作し続けるのではなく、指定したコマンドだけを実行できます。
例えば次のように使います。
su - root -c "whoami"
rootとしてwhoamiが実行され、そのコマンドが終わると元のシェルへ戻ります。
ただし、管理者権限で1つのコマンドを実行したいだけであれば、環境によってはsudoを利用する方が一般的です。
suとsudoの違い¶
suと一緒に覚えておきたいのがsudoです。
名前が似ているため、Linuxを学び始めたころは混乱しやすいところです。
大まかには、次のように考えると分かりやすいです。
su¶
suは、別のユーザーへ切り替えるコマンドです。
su -
実行後はrootとしてシェルを操作し、exitするまでrootの状態が続きます。
sudo¶
sudoは、許可されたユーザーが別ユーザーの権限でコマンドを実行するために利用します。
例えば、パッケージ一覧を更新する場合は次のように実行します。
sudo apt update
この場合、シェル自体をrootへ切り替え続けるのではなく、apt updateを管理者権限で実行します。
Ubuntuなどでは、rootアカウントへ直接切り替えて作業するのではなく、必要な操作だけsudoで実行する構成がよく使われています。
関連:【Linux】sudoコマンドの使い方を解説!管理者権限でコマンドを実行してみよう
rootユーザーで作業するときは注意しよう¶
rootユーザーはLinux上で非常に強い権限を持っています。
一般ユーザーでは権限不足になるファイルの変更や削除も、rootなら実行できることがあります。
これは便利な反面、コマンドを間違えたときの影響も大きくなります。
例えば、一般ユーザーで作業していて「Permission denied」と表示されたからといって、すぐにrootへ切り替えて実行するのではなく、
「なぜこのユーザーでは操作できないのか」 「本当にroot権限が必要なのか」
を確認することが大切です。
Linuxの権限を理解すると、suやsudoを使う理由も分かるようになります。
suコマンドを実際に使って覚えよう¶
Linuxコマンドは、記事を読んで覚えるだけではなかなか身につきません。
suも同じで、実際に一般ユーザーを作成して、
su user01
whoami
exit
と操作してみると、ユーザーが切り替わる感覚がかなり分かりやすくなります。
さらに、
su
と
su -
をそれぞれ実行して、pwdや環境変数の違いを確認してみるのもおすすめです。
Linuxでは、このように自分でコマンドを入力して結果を確認することが理解への近道です。
InfraAcademyのLinux講座では、ブラウザ上のLinux環境で実際にコマンドを入力しながら、ファイル操作、権限、ユーザーとグループ、ネットワークなどを順番に学べます。
「Linuxを勉強したいけど、自分で環境を用意するところからつまずいてしまう」という方は、実際に手を動かしながら学んでみてください。
↓InfraAcademyの講座の一部です。
まとめ¶
今回の記事では、Linuxのsuコマンドについて解説しました。
suはroot専用のコマンドではなく、現在のユーザーから別のユーザーへ切り替えるためのコマンドです。ユーザー名を省略した場合はrootが切り替え先になります。
まずは、次の使い方を覚えておきましょう。
su
su -
su ユーザー名
exit
また、suとsu -では切り替え後の環境が異なります。
Linuxを学び始めたばかりのころは、コマンドだけを暗記しようとしてしまいがちですが、「どのユーザーで操作しているのか」「なぜこの権限が必要なのか」まで意識すると、ユーザー管理やファイルのアクセス権限も理解しやすくなります。
まずは自分のLinux環境でwhoamiやidと組み合わせながら、実際にユーザーを切り替えて動きを確認してみてください。




