【Linux】suコマンド完全解説!「su -」との違いや安全な運用方法を徹底比較

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

Linuxを操作する上で、管理者権限(root)への切り替えは避けては通れない作業です。その際によく使われるのがsuコマンドですが、実は「なんとなく」で使っていると、思わぬエラーやセキュリティリスクを招くことがあります。

本記事では、suコマンドの基礎知識から、最重要ポイントである「su」と「su -」の違い、さらにはsudoとの使い分けまで、初心者の方にもわかりやすく解説します。

1. suコマンドとは?

suコマンドは、「Substitute User(代わりのユーザー)」の略で、現在ログインしているユーザーから一時的に別のユーザーに切り替えるためのコマンドです。

引数を指定せずに実行すると、デフォルトでrootユーザー(スーパーユーザー)への切り替えを試みます。

su
# 切り替え先(root)のパスワードを求められる

2. 【重要】「su」と「su -」の決定的な違い

もっとも間違いやすく、かつ重要なのが、ハイフン(-)の有無です。これによって、切り替え後の「環境」が大きく異なります。

比較表

項目su (ハイフンなし)su – (ハイフンあり)
シェルの種類非ログインシェルログインシェル
環境変数元のユーザーのものを引き継ぐ切り替え先ユーザーで初期化
カレントディレクトリ移動しない(元の場所のまま)切り替え先ユーザーのホームへ移動
推奨される用途一時的なコマンド実行推奨:システム管理作業全般

なぜ「su -」を使うべきなのか?

su(ハイフンなし)でrootになった場合、実行環境(PATHなど)は一般ユーザーのものを引き継いでしまいます。その結果、/sbinなどにある管理者用コマンドにパスが通っておらず、「コマンドが見つかりません」というエラーが発生する原因になります。

トラブルを避けるためにも、基本的には su - を使うと覚えておきましょう。


3. suコマンドの主なオプションと使い方

特定のユーザーに切り替える

root以外の一般ユーザーに切り替えたい場合は、ユーザー名を指定します。

su - user_name

特定のコマンドだけを別ユーザーで実行する(-c)

対話シェルを起動せずに、1つのコマンドだけを別の権限で実行して終了します。

su -c 'systemctl restart nginx'

※この場合も、切り替え先ユーザーのパスワード入力が必要です。


4. su と sudo の違い

似たような役割を持つsudo(SuperUser DO)ですが、運用の考え方が根本的に異なります。

特徴susudo
認証パスワード切り替え先のパスワード自分自身のパスワード
権限の範囲全権限(rootそのものになる)設定ファイル(sudoers)で制限可能
セキュリティrootパスワードの共有が必要各自のパスワードでOK(より安全)
ログ記録誰が何をしたか追跡しにくい詳細な実行ログが残る

現代のLinux運用(UbuntuやRHEL等)では、セキュリティ上の観点からsudoの利用が推奨されるケースがほとんどです。


5. セキュリティ設定:suできるユーザーを制限する

デフォルトでは、rootパスワードを知っていれば誰でもsuできてしまいます。これを防ぐために、特定のグループ(通常はwheelグループ)に属するユーザーのみに制限するのが一般的です。

設定方法(PAM認証の利用)

/etc/pam.d/su ファイルを編集し、以下の行のコメントアウトを外します。

auth       required   pam_wheel.so use_uid

これにより、wheelグループに所属していないユーザーは、パスワードが正しくてもsuに失敗するようになります。


まとめ:suコマンド運用のベストプラクティス

  1. 環境変数のトラブルを防ぐため、原則 su - を使用する。
  2. 作業ディレクトリやPATHを意識し、ログインシェルの挙動を理解する。
  3. セキュリティとログ管理の観点から、可能な限り sudo を優先する。

suコマンドはLinux管理の基本中の基本です。正しい知識を持って使い分けることで、より安全で効率的なシステム運用が可能になります。

コメント

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