このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。
【Linux】一時的に管理者権限でコマンドを実行する:sudoコマンド

一時的に管理者権限でコマンドを実行する:sudoコマンド
Linuxシステムの管理作業では、一般ユーザーが特定の管理コマンドを実行する必要が生じることがあります。しかし、一般ユーザーにrootユーザーのパスワードを教えると、そのユーザーはシステム全体に対して無制限の権限を持つことになり、セキュリティ上のリスクが高まります。この問題を解決するために、sudoコマンドが利用されます。sudoコマンドを使用することで、特定のユーザーに対して、あらかじめ許可したコマンドのみを管理者権限で実行させることができます。これにより、システムの安全性を確保しながら、必要な作業を効率的に進めることができます。

sudoコマンドの概要
sudoコマンドは、一般ユーザーが一時的に管理者権限でコマンドを実行するためのコマンドです。suコマンドとは異なり、rootユーザーのパスワードを知る必要がなく、どのユーザーがどのコマンドを実行できるかを制御することが可能です。
sudoコマンドを使用するには、/etc/sudoersファイルにどのユーザーがどのコマンドを実行できるかを設定しておく必要があります。このファイルの編集は、visudoコマンドを使用して行います。この専用のコマンドは、ファイルの編集においてシンタックスエラーを防ぐ役割を持ち、システムの安定性を維持します。
【構文】sudo [オプション] [管理コマンド]
コマンドの主なオプション
| オプション | 説明 |
|---|---|
-l | ユーザーが実行できるコマンドのリストを表示します。 |
コマンドの例
このコマンドを実行することで、ユーザーがsudo権限で実行可能なコマンドの一覧を確認できます。
$ sudo -l/etc/sudoersファイル
/etc/sudoersファイルは、sudoコマンドに関する設定を管理する重要なファイルです。このファイルには、どのユーザーがどのコマンドを実行できるかが記述されています。ファイルの編集にはvisudoコマンドを使用し、安全に編集を行います。
/etc/sudoersの例
この設定は、user01がsudoコマンドを使ってすべてのコマンドを実行できることを意味します。
user01 ALL=(ALL:ALL) ALLsuコマンドとsudoコマンドの違い
| 項目 | suコマンド | sudoコマンド |
|---|---|---|
| 権限の取得方法 | rootユーザーに切り替えて、すべての管理コマンドを実行 | 特定のコマンドを指定して、管理者権限で実行 |
| パスワードの必要性 | rootユーザーのパスワードが必要 | 自身のユーザーのパスワードが必要 |
| セキュリティ | root権限の取得が容易なため、セキュリティリスクが高い。 | 実行できるコマンドが制限されており、セキュリティリスクが低い。 |

suコマンドとsudoコマンドのメリットとデメリット
| 項目 | メリット | デメリット |
|---|---|---|
su コマンド | すべての管理コマンドを実行可能 | rootパスワードを知っていれば無制限の権限を持つリスク |
sudo コマンド | 特定のコマンドだけを実行可能にし、セキュリティが高い。 | 毎回sudoと入力する手間がかかる。 |
コマンドの使用例と解説
1.sudoコマンドを使用して管理コマンドを実行します。
現在、Ubuntuのインストール時に管理者ユーザーに指定したuser01でログインしています。この管理者ユーザーであるuser01は、あらかじめ/etc/sudoersファイルに定義されています。具体的には、user01は、sudoグループに所属しており、このグループに対して、管理コマンドの実行が許可されています。
・「sudo apt-get update」コマンドを実行します。
このコマンドは、user01ユーザーが管理者権限でパッケージリストを更新するコマンドです。
user01@ubuntu-vm:~$ sudo apt-get update
ヒット:1 http://jp.archive.ubuntu.com/ubuntu jammy InRelease
ヒット:2 http://security.ubuntu.com/ubuntu jammy-security InRelease
ヒット:3 http://jp.archive.ubuntu.com/ubuntu jammy-updates InRelease
ヒット:4 http://jp.archive.ubuntu.com/ubuntu jammy-backports InRelease
パッケージリストを読み込んでいます... 完了2.一般ユーザーsuzukiに切り替えます。
・「su - suzuki」コマンドを実行します。
一般ユーザーsuzukiに切り替えます。
user01@ubuntu-vm:~$ su - suzuki
パスワード:
suzuki@ubuntu-vm:~$3.一般ユーザーsuzukiで管理コマンドを実行を試みます。
・「sudo apt-get update」コマンドを実行します。
suzukiユーザーで管理コマンドを実行しようとすると、/etc/sudoersファイルに設定がないため、実行は許可されません。般ユーザーのsuzukiで管理コマンドを実行するには、/etc/sudoersファイルを編集する必要があります。
suzuki@ubuntu-vm:~$ sudo apt-get update
[sudo] suzuki のパスワード:
suzuki は sudoers ファイル内にありません。この事象は記録・報告されます。まとめ
sudoコマンドは、セキュリティを維持しながら、一般ユーザーが特定の管理コマンドを実行するための強力なコマンドです。suコマンドとの違いを理解し、適切に使い分けることで、Linuxシステムの管理作業を安全かつ効率的に進めることができます。
