/etc/sudoers
設定ファイルだよ
UNIX系のOSで使われるよ
sudoコマンドで変更できるユーザと実行できるコマンドを定義するよ
簡単に書くよ
/etc/sudoersとは
UNIX系のOS
(コンピュータの人格に相当するソフト)(Linuxとか)で使われるファイルのひとつ
であり
sudoコマンドで変更できるユーザと実行できるコマンドを記述する設定ファイル
です。
詳しく書くよ
順番に見ていきましょう。
まずは予備知識として「sudo」コマンドについて簡単に説明します。
「そんなの説明されなくても知ってるよ!」な人は適当に読み飛ばしてください。
「sudo」コマンドは「スーパーユーザ(や他のユーザ)の権限でコマンドを実行するときに使うコマンド」です。
例えば
sudo ls
を実行すると、スーパーユーザ「root」として「ls」コマンドが実行されます。
同じように
sudo -u piyota ls
を実行すると、ユーザ「piyota」として「ls」コマンドが実行されます。
このように、別の人の振りをしてコマンドを実行するときに使うのが「sudo」コマンドです。
以上を踏まえて
sudoコマンドで変更できるユーザと実行できるコマンドを記述する設定ファイル
が「/etc/sudoers」です。
「etc」ディレクトリの中の「sudoers」ファイルで「/etc/sudoers」ね。
「/etc/sudoers」はUNIX系のOS(Linuxとか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」にはなれません。
もう1つ例を見てみましょう。
「/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」以外のコマンド実行もできません。
さらに、もう1つ例を見てみましょう。
「/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」コマンドを使って、編集してください。
一言でまとめるよ
まぁ「/etc/sudoers」って単語が出てきたら「sudoコマンドの権限周りの設定ファイルなんだな~」と お考えください。
おまけ
■検索してみる?






