[ 通常表示 ]  [ 簡易表示 ]  [ シンプル表示 ]

「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典イメージぴよ画像「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典

/etc/sudoers

pointこの用語のポイント

point設定ファイルだよ

pointUNIX系のOSで使われるよ

pointsudoコマンドで変更できるユーザと実行できるコマンドを定義するよ

スポンサーリンク

簡単に書くよ

/etc/sudoersとは

UNIX系のOS(LinuxとかMacとか)で使われる、sudoコマンドで変更できるユーザと実行できるコマンドを記述する設定ファイル
です。

image piyo

詳しく書くよ

まずは予備知識から行きましょう。

sudoコマンドは「スーパーユーザ(や他のユーザ)の権限でコマンドを実行するときに使うコマンド」ね。

例えば

sudo ls

を実行すると、スーパーユーザ「root」として「ls」コマンドが実行されます。

同じように

sudo -u piyota ls

を実行すると、ユーザ「piyota」として「ls」コマンドが実行されます。

このように、別の人の振りをしてコマンドを実行するときに使うのが「sudo」コマンドです。

以上が予備知識です。

ここまでを踏まえて、sudoコマンドで変更できるユーザと実行できるコマンドを記述する設定ファイルが「/etc/sudoers」です。
「etc」ディレクトリの中の「sudoers」ファイルで「/etc/sudoers」ね。

/etc/sudoers

「/etc/sudoers」はUNIX系のOSLinuxとかMacとか)で使われるファイルです。

「『sudoコマンドで変更できるユーザと実行できるコマンド』って言われても、よく分からないんだけど?」な人も大丈夫です。
例を挙げて説明します。

例えば「/etc/sudoers」の中に

piyota ALL=(akuma) ALL

と書いたとしましょう。
これは

ユーザ「piyota」は「akuma」になれるよ。コマンドは全部使えるよ

な設定です。

ユーザ「piyota」は

ユーザ「akuma」として「ls」コマンドを実行するよ

を意味する

sudo -u akuma ls

を実行できます。

同じように

ユーザ「akuma」として「cd」コマンドを実行するよ

を意味する

sudo -u akuma cd

も実行できます。

ただし

スーパーユーザ「root」として「ls」コマンドを実行するよ

を意味する

sudo ls

は実行できません。
エラーになります。

同じように

ユーザ「piyoko」として「ls」コマンドを実行するよ

を意味する

sudo -u piyoko ls

も実行できません。
エラーになります。

何故なら、ユーザ「piyota」がなれるのは、ユーザ「akuma」だけだからです。
「root」や「piyoko」にはなれません。

もう一つ例を見てみましょう。

「/etc/sudoers」の中に

piyota ALL=(akuma) /bin/ls

と書いたとします。
これは

ユーザ「piyota」は「akuma」になれるよ。コマンドは「ls」コマンドだけ使えるよ

な設定です。

ユーザ「piyota」は

ユーザ「akuma」として「ls」コマンドを実行するよ

を意味する

sudo -u akuma ls

を実行できます。

ただし

ユーザ「akuma」として「cd」コマンドを実行するよ

を意味する

sudo -u akuma cd

は実行できません。
エラーになります。

何故なら、ユーザ「piyota」が実行できるのはユーザ「akuma」としての「ls」コマンドのみだからです。
ユーザ「akuma」以外になれないのはもちろんのこと、「ls」以外のコマンド実行もできません。

さらに、もう一つ例を見てみましょう。

「/etc/sudoers」の中に

piyota ALL=(ALL) /bin/ls

と書いたとします。
これは

ユーザ「piyota」は誰にでもなれるよ。コマンドは「ls」コマンドだけ使えるよ

な設定です。

ユーザ「piyota」は

ユーザ「akuma」として「ls」コマンドを実行するよ

を意味する

sudo -u akuma ls

を実行できます。

同じように

ユーパーユーザ「root」として「ls」コマンドを実行するよ

を意味する

sudo ls

も実行できます。

同じように

ユーザ「piyoko」として「ls」コマンドを実行するよ

を意味する

sudo -u piyoko ls

も実行できます。

ただし

ユーザ「akuma」として「cd」コマンドを実行するよ

を意味する

sudo -u akuma cd

は実行できません。
エラーになります。

何故なら、ユーザ「piyota」が実行できるのは「ls」コマンドだけだからです。
誰にでもなることはできますが「ls」以外のコマンドは実行できません。

最後にもう一例だけ見ておきましょう。
スーパーユーザの「root」は「/etc/sudoers」の中に

root ALL=(ALL) ALL

と書かれています。
これは

スーパーユーザ「root」は誰にでもなれるよ。どんなコマンドでも実行できるよ

な設定です。

このように、sudoコマンドの実行に対して「どのユーザは誰になれるよ。そして、どのコマンドを実行できるよ」を記述しておく設定ファイルが「/etc/sudoers」です。

なお「/etc/sudoers」に記述の無いユーザは「sudo」コマンドを使うことができません。
私の環境(CentOS 7)では、実行しようとしたら、以下のエラーが出ました。

【ユーザ名】 は sudoers ファイル内にありません。この事象は記録・報告されます。

あと大事な注意点として「/etc/sudoers」を編集する際は「visudo」というコマンドを使います。
もともと直接編集する権限は付いてないですが、絶対に

vi /etc/sudoers

とかやって編集しようとしてはいけません。

「/etc/sudoers」は、かなり大事なファイルです。
変な風に編集してしまうと、ピンチになってしまうことがあるのです。

「visudo」コマンドを使って「/etc/sudoers」を編集した場合、保存するときにコンピュータが「変なこと書いてない?」をチェックしてくれます。
そして、おかしいところがあれば「ここら辺が多分おかしいけど、そのまま保存しちゃうの?編集し直すか編集内容を破棄しようぜ」と語りかけてくれるのです。

繰り返しになりますが「/etc/sudoers」を編集する場合は「visudo」コマンドを使って、編集してください。

image piyo2

一言でまとめるよ

まぁ「/etc/sudoers」って単語が出てきたら「sudoコマンドの権限周りの設定ファイルなんだな~」と、お考えください。

一番上に戻るよ
スポンサーリンク