このページで解説している内容は、以下の 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の例
この設定は、user01
がsudo
コマンドを使ってすべてのコマンドを実行できることを意味します。
user01 ALL=(ALL:ALL) ALL
suコマンドと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システムの管理作業を安全かつ効率的に進めることができます。