[Osaka/Yokohama] Looking for infrastructure/server side engineers!

[Osaka/Yokohama] Looking for infrastructure/server side engineers!

[Deployed by over 500 companies] AWS construction, operation, maintenance, and monitoring services

[Deployed by over 500 companies] AWS construction, operation, maintenance, and monitoring services

[Successor to CentOS] AlmaLinux OS server construction/migration service

[Successor to CentOS] AlmaLinux OS server construction/migration service

[For WordPress only] Cloud server “Web Speed”

[For WordPress only] Cloud server “Web Speed”

[Cheap] Website security automatic diagnosis “Quick Scanner”

[Cheap] Website security automatic diagnosis “Quick Scanner”

[Reservation system development] EDISONE customization development service

[Reservation system development] EDISONE customization development service

[Registration of 100 URLs is 0 yen] Website monitoring service “Appmill”

[Registration of 100 URLs is 0 yen] Website monitoring service “Appmill”

[Compatible with over 200 countries] Global eSIM “Beyond SIM”

[Compatible with over 200 countries] Global eSIM “Beyond SIM”

[If you are traveling, business trip, or stationed in China] Chinese SIM service “Choco SIM”

[If you are traveling, business trip, or stationed in China] Chinese SIM service “Choco SIM”

[Global exclusive service] Beyond's MSP in North America and China

[Global exclusive service] Beyond's MSP in North America and China

[YouTube] Beyond official channel “Biyomaru Channel”

[YouTube] Beyond official channel “Biyomaru Channel”

sudo 権限設定ファイルの /etc/sudoers ファイルの書き方入門

 

はじめに

こんにちは。システムソリューション部のインフラわっしょいマンです。
突然ですがみなさん、「sudo」コマンド使ってますか?

rootユーザや他のユーザ権限でコマンドを実行するときに使うので、ターミナル上で作業する際は かなりの頻度でお世話になるコマンドではないでしょうか。

しかしながら、OSユーザの誰でもこのコマンドを使えてしまうとプロセスのコンフィグなどの重要設定ファイルを編集できたり、デーモンを操作できたりと、セキュリティ上 危険な状態となります。

そのため、通常は設定ファイルで「誰がどこで何に対して何をしていいのか」という権限を調整します。

今回はこの sudo 権限設定ファイルである「/etc/sudoers」の記述形式について、フォーカスしてみたいと思います。
こちらのファイルはサーバのセットアップ時にも手を加える機会があるかもしれませんが

皆さん、なんとなく流れでコピペしていませんか?

記述方法を理解しておくことで思わぬ事故も防げますし、応用的な使い方にも進めるかと思いますのでこの機会にぜひご確認ください。

「/etc/sudoers」の記述解説

「/etc/sudoers」ファイルにはデフォルトでいくつか記述がありますが、一つピックアップしてみます。

root ALL=(ALL) ALL

以下、この記述をベースに解説を加えていきます。

一番左の「root」

誰に与える権限なのか指定する箇所です。

この場合「root」ユーザに与える権限を指定しています。

一般ユーザの権限を決めたい場合は、ここをそのユーザの名前にします。

「=」の左側の「ALL」

複数のサーバで同じ設定を使いまわすときにどのサーバでその行の指定を反映するかの設定です。

各サーバで sudo の設定を個別に管理している場合は、設定ファイルの反映先は必ずそのサーバ自身になります。
なのでその場合、この記述は「ALL」で問題ありません。

ディレクトリサービスなどを使って複数サーバの情報をまとめて管理している場合は例外となります。

「=」の右側、丸かっこの中身

前提として sudo コマンドは本来「他のユーザやグループに成り代わって、その権限で操作を行う」コマンドで、「root の権限で操作する」というのはユーザもグループも指定しなかった場合の規定の動作に過ぎません。

この項目は どのユーザに成り代わってコマンドを実行できるかを記述します。

なお、丸かっこの中身は上の例では省略されていますが、本来は (ALL:ALL) のように コロンの左に「sudo -u」で成り代われるユーザ、右に「sudo -g」で成り代われるグループを指定します。

例えばですが、 root 権限でしか実行できないようなコマンドの実行権限をあるユーザに与えたいという状況では、

一般ユーザにはなれてもなれなくてもどっちでもいい(それ以上になれる)ので、対象には(ALL)のようにrootを含めた誰にでもなれる権限を与える場合が多いです。

もちろん (root)と明示的に指定しても問題ありません。

※ちなみに 「:ALL」 の部分 つまり丸かっこの後半は省略すると「なれるグループ無し= sudo -g が使えない」という意味になります。

一番右側のALLについて

「どんな操作を許可するか」を指定します。

ALL と記述するとなんでもできるという意味になります。

例えば hoge ユーザが Apache の再起動だけできるように設定したい場合、下記のように記述しましょう。

※コマンドをフルパスで書く必要があることに注意。パスは異なる場合があるので which コマンドでパスを調べてください。)

hoge ALL=(ALL:ALL) /usr/bin/systemctl restart httpd

 

上の記述だとリスタートしかできないので、ほかのコマンドも使えるようにしたい場合は下記のようにカンマでつなげて記述しましょう。

hoge ALL=(ALL:ALL) /usr/bin/systemctl restart httpd, /usr/bin/systemctl status httpd

 

反対に下記のように「!」を利用した記述をして、特定のコマンドだけ使用不可にもできます。

hoge ALL=(ALL:ALL) ALL, !/usr/bin/systemctl restart httpd, !/usr/bin/systemctl status httpd

おまけ

ユーザを指定可能な部分で「%」を頭につけるとグループの指定となります。

「/etc/sudoers」ファイルにはデフォルトで下記の記述もありますが、ユーザをwheel グループに入れるとroot 権限と同等のパワーを手に入れるのはこの記述が反映されているためです。

%wheel ALL=(ALL) ALL

まとめ

いかがでしょうか。

sudoers を適切に設定すれば、ユーザを発行した際に「このユーザにはこのコマンドしか実行しかしてほしくない」や「root権限は与えたくないけど特定のコマンドだけは実行できるようにしたい」等の微調整が可能になります。

セキュリティ的にもクリティカルなファイルなのでぜひ構造を理解して設定しましょう!

この記事がお役に立てば【 いいね 】のご協力をお願いいたします!
23
読み込み中...
23 票, 平均: 1.00 / 123
33,383
X facebook はてなブックマーク pocket
[2024.6.30 CentOS support ended] CentOS server migration solution

[2024.6.30 CentOS support ended] CentOS server migration solution

[2025.6.30 Amazon Linux 2 support ended] Amazon Linux server migration solution

[2025.6.30 Amazon Linux 2 support ended] Amazon Linux server migration solution

[Osaka/Yokohama] Actively recruiting infrastructure engineers and server side engineers!

[Osaka/Yokohama] Actively recruiting infrastructure engineers and server side engineers!

The person who wrote this article

About the author

infrastructure wasshoi man

Belongs to the System Solutions Department.
She liked it and studied it every day, and luckily she was picked up by Beyond.
It's been nine years since she started thinking about whether to switch from her glasses to contacts.