InfraAcademy

InfraAcademy Blog

【Linux】suコマンドの使い方解説!スーパーユーザーに切り替えるコマンド

| #Linux #コマンド
Linuxをブラウザで試してみる

Linux・ネットワーク・AWSを、環境構築なしで実践学習できます

こんにちは、フルスタックエンジニアのryuです。

今回の記事では、Linuxのsuコマンドの使い方について解説します。

Linuxを勉強していると、

「rootユーザーに切り替えるにはどうするの?」 「susu -は何が違うの?」 「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ユーザーへ切り替わります。

suコマンドの実行

ここで一つ注意したいのが、すべてのLinux環境でsuを使ってrootへ切り替えられるとは限らないことです。

例えばUbuntuでは、初期状態でrootアカウントのパスワードがロックされている構成が一般的です。その場合、suでrootへ切り替えるのではなく、管理者権限が必要なコマンドだけsudoを付けて実行します。

sudo apt update

利用しているLinuxディストリビューションやサーバーの設定によって運用方法が異なるため、「rootのパスワードが分からないから、とりあえず変更する」という対応は避けましょう。

会社のサーバーなど、自分が管理していない環境であれば、まずシステム管理者へ確認してください。

suコマンドでユーザーが切り替わったか確認する

suを実行したあと、「本当にユーザーが切り替わったの?」と確認したいことがあります。

その場合はwhoamiコマンドを使うと簡単です。

whoami

rootへ切り替わっていれば、次のように表示されます。

root

suコマンドの確認1

また、ターミナルのプロンプトを見ても確認できます。

一般ユーザーでは末尾が$、rootユーザーでは#になる設定がよく使われています。

suコマンドの確認2

ただし、プロンプトの表示は環境によって変更できます。

確実に確認したい場合は、whoamiidコマンドを利用しましょう。

id

idを使うと、現在のユーザーIDだけではなく、所属しているグループなども確認できます。

root以外のユーザーへ切り替える

suはroot専用のコマンドではありません。

ユーザー名を指定すれば、別の一般ユーザーへ切り替えることもできます。

例えば、adminユーザーへ切り替える場合は次のように実行します。

su admin

パスワードを求められたら、基本的には切り替え先であるadminユーザーのパスワードを入力します。

切り替えたあとにwhoamiを実行してみましょう。

whoami

次のように表示されれば切り替えられています。

admin

複数ユーザーで利用するLinuxサーバーでは、「このユーザーの権限ではどう見えるのか」「このユーザーでアプリケーションを実行するとどうなるのか」と確認したいことがあります。

そのような場合にもsuを利用できます。

suとsu -の違いとは?

suを勉強していると、かなりの確率で出てくるのがsu -です。

su -

「最後のハイフンは何?」と思いますよね。

susu -は、どちらもユーザーを切り替えるコマンドですが、切り替え後の環境が異なります。

suだけを実行した場合

su

suだけの場合、ユーザーは切り替わりますが、現在の作業ディレクトリや一部の環境を引き継いだ状態になります。

そのため、rootへ切り替わっても、切り替える前にいたディレクトリにそのままいることがあります。

su -を実行した場合

su -

-を付けると、切り替え先のユーザーがログインしたときに近い環境でシェルを開始します。

rootへ切り替えた場合であれば、rootのホームディレクトリへ移動し、HOMEPATHなども切り替え先のユーザー向けに設定されます。

例えば、一般ユーザーのホームディレクトリで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を使ううえでは、まずsusu -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の権限を理解すると、susudoを使う理由も分かるようになります。

suコマンドを実際に使って覚えよう

Linuxコマンドは、記事を読んで覚えるだけではなかなか身につきません。

suも同じで、実際に一般ユーザーを作成して、

su user01
whoami
exit

と操作してみると、ユーザーが切り替わる感覚がかなり分かりやすくなります。

さらに、

su

su -

をそれぞれ実行して、pwdや環境変数の違いを確認してみるのもおすすめです。

Linuxでは、このように自分でコマンドを入力して結果を確認することが理解への近道です。

InfraAcademyのLinux講座では、ブラウザ上のLinux環境で実際にコマンドを入力しながら、ファイル操作、権限、ユーザーとグループ、ネットワークなどを順番に学べます。

「Linuxを勉強したいけど、自分で環境を用意するところからつまずいてしまう」という方は、実際に手を動かしながら学んでみてください。

InfraAcademyのLinux講座を見る

↓InfraAcademyの講座の一部です。

まとめ

今回の記事では、Linuxのsuコマンドについて解説しました。

suはroot専用のコマンドではなく、現在のユーザーから別のユーザーへ切り替えるためのコマンドです。ユーザー名を省略した場合はrootが切り替え先になります。

まずは、次の使い方を覚えておきましょう。

su
su -
su ユーザー名
exit

また、susu -では切り替え後の環境が異なります。

Linuxを学び始めたばかりのころは、コマンドだけを暗記しようとしてしまいがちですが、「どのユーザーで操作しているのか」「なぜこの権限が必要なのか」まで意識すると、ユーザー管理やファイルのアクセス権限も理解しやすくなります。

まずは自分のLinux環境でwhoamiidと組み合わせながら、実際にユーザーを切り替えて動きを確認してみてください。

Next Action

記事で読んだ内容を、講座で実装してみましょう

InfraAcademyでは、ブラウザ上でLinuxやネットワークの実践環境を使いながら学習できます。無料で始められる講座から、学習の流れを試せます。

この記事を書いた人

ryu

InfraAcademy運営 / エンジニア

エンジニア歴10年。Linux、ネットワーク、クラウドを中心に、実務で役立つインフラ技術を初心者にもわかりやすく解説しています。

X: @ryu63614894

Related

関連記事

ブログ一覧へ

Roadmap

まずはこの4講座から

ログインすれば無料で始められる講座です。気になったテーマから手を動かして学べます。

講座一覧を見る