Linuxコマンド一覧

sudoコマンド|管理者の権限でコマンドを実行する

__ __ _ _____
\ \ / /__| |_|_ _|__ _ __ _ __ ___
\ \ /\ / / _ \ '_ \| |/ _ \ '__| '_ ` _ \
\ V V / __/ |_) | | __/ | | | | | |
\_/\_/ \___|_.__/|_|\___|_| |_| |_| |_
 
sudo を試すためのサンドボックスです。実機のファイルには影響しません。
user@webterm:~/project$
 

sudo はそのコマンドだけを管理者の権限で実行するコマンドです。何が変わるのか、`>` に効かない理由、`sudo tee` という書き方を、ブラウザ上のターミナルで打ちながら確認できます。

最終更新: 2026-09-07

書式

sudo コマンド

そのコマンドだけを管理者(root)の権限で実行します。

まず打ってみる

いまのユーザーは user です。

$ whoami
user

システムのログは、普通のユーザーには読めません。

$ cat /var/log/auth.log
cat: /var/log/auth.log: Permission denied

sudo を付けると読めます。

$ sudo cat /var/log/auth.log
Sep  7 09:00:01 webterm sshd[456]: Accepted publickey for user from 192.168.1.10
Sep  7 09:14:22 webterm sudo:     user : COMMAND=/usr/bin/systemctl restart nginx

このログ自体が、誰が sudo で何を実行したかの記録です。

何が変わるのか

変わるのはそのコマンドを実行するユーザーだけです。

$ sudo whoami
root
$ whoami
user

sudo whoami は root と答え、次の whoami は user に戻っています。 権限が上がるのは1コマンドのあいだだけ、というのが sudo の考え方です。

触れないものに触る

配置先のディレクトリが root のものだと、コピーもできません。

$ cp index.html /var/www/html/
cp: cannot create '/var/www/html//index.html': Permission denied
$ sudo cp index.html /var/www/html/
$ ls -l /var/www/html
total 4
-rw-r--r--   1  root  root     15  Sep  7 17:17  index.html

sudo で作ったファイルは root のものになります。 あとで自分が編集したいものなら、sudo chown user:user ファイル で持ち主を戻しておきます。

サービスの操作も同じです。

$ sudo systemctl restart nginx
$ systemctl is-active nginx
active

リダイレクトには効かない

sudo のいちばんの落とし穴です。

$ echo '10.0.0.1 db' >> /etc/hosts
zsh: permission denied: /etc/hosts

sudo echo '10.0.0.1 db' >> /etc/hosts と書いても結果は同じです。 >> を処理するのはシェルであって、sudo が届くのは echo の部分だけだからです。 書き込む側を root にするために、tee を使います。

$ echo '10.0.0.1 db' | sudo tee -a /etc/hosts
10.0.0.1 db
$ cat /etc/hosts
127.0.0.1 localhost
10.0.0.1 db

sudo tee -a は、設定ファイルに1行足すときの定番です。

実務での使いどころ

sudo は、自分のものではないものを触るときに打つコマンドです。

場面打ち方
システムのログを読むsudo cat /var/log/auth.log
サービスを再起動するsudo systemctl restart nginx
配置先にファイルを置くsudo cp index.html /var/www/html/
設定ファイルに1行足すecho "..." | sudo tee -a /etc/hosts
パッケージを入れるsudo apt install tree

つまずきやすいところ

sudo が届くのはコマンドまでです。 リダイレクト(> >>)、パイプの右側、~ の展開などはシェルの仕事です。 「sudo を付けたのに Permission denied」の大半はこれです。

sudo で作ったファイルは root のものになります。 あとから自分で編集できずに困ることがあります。 ls -l で持ち主を確かめ、必要なら chown で戻してください。

打つ前に、対象をもう一度読んでください。 sudo を付けた瞬間、システムのファイルにも手が届きます。 rm -rf のような取り返しのつかない操作は、パスを指差し確認してから実行してください。

手を動かして覚える

webterm.appこのサイト

learn.webterm.app別のサイト

>_WEBTERM LEARN

WebTerm Learn|1つのコマンドから、使える状態へ

コマンドは単体で覚えるより、実際の作業の流れの中で使うほうが身につきます。順番に積み上げていくコースがあります。

コースを見る

関連するコマンド

tee / chown / chmod / systemctl

よくある質問

sudo と su はどう違いますか?
`sudo` は**そのコマンドだけ**を管理者として実行します。`su` は管理者に成り代わって、以降ずっとその権限で操作します。作業の記録が残る点でも、必要なときだけ権限を借りる sudo のほうが安全です。
パスワードは何を入れるのですか?
実機では**自分のパスワード**を聞かれます(root のパスワードではありません)。一度入れると数分間は聞かれません。このページのターミナルでは省略しています。
sudo を付けたのに Permission denied になります。
`>` や `>>` のリダイレクトを使っている場合です。リダイレクトを処理するのはシェル(あなた)なので、sudo は届きません。`... | sudo tee -a ファイル` と書き換えてください。
毎回 sudo を付けるのは面倒です。
面倒でよい仕組みです。付けたときだけ権限が上がるので、打ち間違いがシステム全体に及びません。`sudo su` のように権限を持ち続ける形は、必要な場面に限ってください。
何を実行したか記録に残りますか?
残ります。実機では `/var/log/auth.log` などに、誰がどのコマンドを sudo で実行したかが記録されます。