このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。

一時的に管理者権限でコマンドを実行する: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の例

 この設定は、user01sudoコマンドを使ってすべてのコマンドを実行できることを意味します。

user01 ALL=(ALL:ALL) ALL

suコマンドとsudoコマンドの違い

項目suコマンドsudoコマンド
権限の取得方法rootユーザーに切り替えて、すべての管理コマンドを実行特定のコマンドを指定して、管理者権限で実行
パスワードの必要性rootユーザーのパスワードが必要自身のユーザーのパスワードが必要
セキュリティroot権限の取得が容易なため、セキュリティリスクが高い。実行できるコマンドが制限されており、セキュリティリスクが低い。
suコマンドとsudoコマンドの違い

suコマンドとsudoコマンドのメリットとデメリット

項目メリットデメリット
su コマンドすべての管理コマンドを実行可能rootパスワードを知っていれば無制限の権限を持つリスク
sudo コマンド特定のコマンドだけを実行可能にし、セキュリティが高い。毎回sudoと入力する手間がかかる。
suコマンドと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システムの管理作業を安全かつ効率的に進めることができます。