Linux su コマンド
Linux su(英語の正式名称:switch user)コマンドは、ユーザーIDを切り替えるためのコマンドです。root以外の場合、そのユーザーのパスワードを入力する必要があります。
使用権限:すべてのユーザー。
構文
su [选项] [用户名]
例:
su # 切换到root,保持当前环境 su - # 切换到root,加载root的完整环境 su root # 明确指定切换到root用户
他のユーザーに切り替える:
su username su - username su -l username
パラメータの説明:
-或-l或--login: 直接ログインに似た環境を提供する-c command: 指定したコマンドを実行して終了する-s shell: 使用するシェルを指定する-p或--preserve-environment: 現在の環境変数を保持する
例
一時的にrootとしてコマンドを実行する:
su -c "apt update && apt upgrade" root
サービスユーザーに切り替えてデバッグする:
su - www-data su -s /bin/bash www-data # 如果默认shell是/bin/false
スクリプトで使用する:
su - postgres -c "psql -c 'SELECT version();'"
su セッションを終了する:
exit # 退出当前su会话 Ctrl+D # 同样可以退出
su と su - の違い
su(非ログイン切り替え):
- 現在のユーザーの環境変数を保持する
- 作業ディレクトリは変更されない
- PATHなどの環境変数は変更されない
su -(ログイン切り替え):
- 対象ユーザーの完全な環境を読み込む
- 対象ユーザーのホームディレクトリに切り替える
- PATH、HOMEなどの環境変数を再設定する
- 対象ユーザーのログインスクリプトを実行する
比較例
# 当前用户:john,工作目录:/home/john pwd # /home/john echo $HOME # /home/john su root pwd # /home/john (目录未变) echo $HOME # /home/john (环境未变) exit su - root pwd # /root (切换到root家目录) echo $HOME # /root (完整环境) exit
su vs sudo の違い
| 特徴 | su | sudo |
|---|---|---|
| パスワードが必要 | 対象ユーザーのパスワード | 現在のユーザーのパスワード |
| セッションの継続 | 手動でexitするまで | 単一コマンドまたは短期間のキャッシュ |
| 設定の複雑さ | 簡単 | sudoersの設定が必要 |
| セキュリティ | rootパスワードを知っている必要がある | より細かい権限制御 |
| 監査 | 限定的 | より詳細なログ |
su コマンドはシンプルで直接的ですが、現代のシステム管理では、sudo の方がより良いセキュリティと監査機能を提供するため、通常は sudo が推奨されます。
セキュリティに関する注意事項
- rootパスワードの共有を避ける
- 使用する
su -完全な環境切り替えを確保する - suセッションを速やかに終了する
- 本番環境ではsudoの使用を優先する
- suの使用ログを監視する(通常は/var/log/auth.log)
Linux コマンド大全