このページで解説している内容は、以下の 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コマンドのオプション

オプション説明
-ログインシェルとして環境を完全に引き継ぐ。
-c1つのコマンドだけを指定ユーザー権限で実行
-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 を忘れずに実行して一般ユーザーに戻ること。