sudoコマンドの使い方:コマンド単位で一時的に権限を昇格させる
sudoは、一般ユーザーが、コマンド単位で一時的に管理者(root)の権限でコマンドを実行するためのコマンドです。常にrootで作業するより、必要な操作のときだけ昇格するほうが、操作ミスやセキュリティ事故を減らせます。
sudoのよく使う形
実務や学習で登場しやすい使い方を、そのまま入力できる形でまとめました。
| コマンド例 | 内容 |
|---|---|
sudo systemctl restart nginx | 管理者権限でコマンドを実行 |
sudo -u alice command | 別のユーザー(alice)としてコマンドを実行 |
sudo -i | rootのログインシェルを起動 |
sudo !! | 直前のコマンドを、管理者権限でやり直す |
sudo -l | 自分がsudoで実行を許可されているコマンドを確認 |
sudo visudo | sudoの設定(sudoers)を、文法チェックつきで編集 |
sudoの主なオプション
| オプション | 意味 |
|---|---|
| コマンド で許可範囲だけroot実行 | |
-u | ユーザー 指定ユーザーとして実行 |
-l | 実行可能なコマンドを確認 |
sudoの実行例と結果の読み方
user@linux-study:~$ sudo systemctl restart nginx
[sudo] password for user:
sudoを付けてコマンドを実行すると、シェルごと切り替わるsuと違い、そのコマンド1つだけを一時的に管理者権限で実行できます。実行時にはログイン中のユーザー自身のパスワード入力が求められ、/var/log/auth.logなどに誰が何を実行したかが記録されるため、複数管理者がいる環境でも操作の追跡がしやすくなります。
練習用ターミナルでは、sudoをブラウザ上で安全に試せます。
sudoを使うときの注意点
sudo echo 'x' > /etc/fileは失敗します。リダイレクト(>)はsudoではなく、元のユーザーのシェルが行うためです。echo 'x' | sudo tee /etc/fileのようにteeを使います。
sudoersを直接編集すると、文法の誤りでsudoが使えなくなることがあります。必ずvisudoで編集してください。実行内容は/var/log/auth.logなどに記録されます(ディストリビューションにより異なります)。
sudoに関するよくある質問
suとの違いは?
suは別ユーザーに切り替えるコマンドで、rootのパスワードが必要です。sudoは自分のパスワードで、許可されたコマンドだけを実行します。
sudoが使えるユーザーを追加するには?
Debian系ではsudoグループ、RHEL系ではwheelグループにユーザーを追加するのが一般的です。
関連ページ
あわせて覚えたいコマンド:chmod・chown・systemctl・ls
sudoが登場する章:中級 第16章