このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。
Linux基礎:rootユーザーを利用する(suコマンド)

rootユーザーを利用する(suコマンド)
Linuxシステムでは、すべてのユーザーが同じ権限を持っているわけではありません。中でも rootユーザー は、システム全体を制御する特別な権限を持つ存在です。rootは非常に強力な反面、操作を誤ればシステム全体に障害を及ぼす危険性もあります。そのため、常にrootユーザーで作業するのは避け、普段は一般ユーザーでログインし、必要な場面でのみ一時的にrootへ切り替えるのが推奨されます。
このとき便利なのが su (Substitute User) コマンドです。suを利用すればログアウトせずに一時的にrootや別のユーザーに切り替えて作業できます。ここでは su コマンドの基本、オプション、利用上の注意点について詳しく解説します。

1.suコマンドの基本
1.1. 構文
su [-] [ユーザー名]- ユーザー名を省略すると root に切り替える。
-を付けると、指定したユーザーの環境を完全に引き継いだログインシェルになる。- パスワード入力が必要(切り替え先ユーザーのパスワード)
1.2. rootユーザーへの切り替え
【例1】rootユーザーに切り替える(ログインシェルを有効にする)
[user@rocky9 ~]$ su -
パスワード: ← rootユーザーのパスワードを入力
[root@rocky9 ~]# pwd
/root ← rootユーザーのホームディレクトリに移動プロンプトが「#」になり、root権限に切り替わったことがわかります。
1.3. 元のユーザーに戻る
作業が完了したら必ず exit コマンドで一般ユーザーに戻りましょう。
[root@rocky9 ~]# exit
ログアウト
[user@rocky9 ~]$ ← 一般ユーザー(user)に戻った2.1. 「-」を付けない場合
su を単独で実行すると、rootに切り替わりますが環境は元のユーザーのまま引き継がれます。
【例2】「-」なしで実行
[user@rocky9 ~]$ su
パスワード:
[root@rocky9 user]# pwd
/home/user ← カレントディレクトリは一般ユーザーのまま
[root@rocky9 user]# exit
exitこの場合、PATHや環境変数がroot専用のものに切り替わらないため、一部のコマンドが実行できないことがあります。
2.2. 「-」を付けた場合
su - とすると、ログイン時と同じように環境が完全に切り替わります。
【例3】「-」付きで実行
[user@rocky9 ~]$ su -
パスワード:
[root@rocky9 ~]# pwd
/root ← rootの環境とホームディレクトリに切り替わる
[tanaka@rocky9 ~]$ exit
ログアウト実際の管理作業では su - の利用が推奨されます。
3.root以外のユーザーに切り替える
suコマンドはroot専用ではなく、他のユーザーにも切り替え可能です。
【例4】tanaka ユーザーに切り替え
[user@rocky9 ~]$ su - tanaka
パスワード: ← tanakaユーザーのパスワードを入力
[tanaka@rocky9 ~]$
[tanaka@rocky9 ~]$ exit
ログアウト4.suコマンドのオプション
| オプション | 説明 |
|---|---|
- | ログインシェルとして環境を完全に引き継ぐ。 |
-c | 1つのコマンドだけを指定ユーザー権限で実行 |
-l | - と同じ意味(login shell として実行) |
-s シェル | 切り替え後に使用するシェルを指定する。 |
4.1. -cオプションの例
rootに切り替えた状態で一時的にコマンドを実行し、終了後に元のユーザーに戻ることができます。
【例5】root権限でls /rootを1回だけ実行
[user@rocky9 ~]$ su -c "ls /root"
パスワード:
anaconda-ks.cfg テンプレート ドキュメント 音楽 公開
ダウンロード デスクトップ ビデオ 画像
[user@rocky9 ~]$ ← すぐにuserに戻るまとめ
- rootユーザーはシステム全体を制御できるため、必要な時のみ利用する。
- suコマンドを使えばログアウトせずにrootや別ユーザーに切り替えられる。
su -を付けて実行すると、ログイン時と同じ環境に切り替わるため推奨される。-cオプションを使えば一時的にコマンドだけを実行可能。- 作業終了後は exit を忘れずに実行して一般ユーザーに戻ること。
