CentOS7でsudo権限の設定をする

root権限で作業することが多いサーバーですが、最近のクラウドサーバーではsudo権限が使われることが一般的みたいです。GCPやAWSなどはsudo su -l などのコマンドが用意されていてrootになったりします。

sudo権限って何?

すごくざっくりいうと、一般ユーザーにroot権限を与える事ができるコマンドです

rootでよくない?

rootと同じ権限を与えるなら、rootでよくない?って思うかもしれませんが、rootユーザーの権限を与えるので厳密にはrootユーザーはではありません。

細かい権限設定ができる

rootユーザーは基本的に全ての事ができます。ミドルウェアのインストールや削除、再起動や設定ファイルの変更などができます。sudo権限は一般ユーザーに細かい権限の設定ができます。

shutdownとyumだけ許可したい

sudo権限は細かい権限の設定ができます。rootユーザーとは違い、権限がなければ変更が出来ないと言う事があります。例えばshutdown権限とyum権限だけ与えたいという場合は以下のようにすることで可能です。

[root@localhost]# visudo

macan   ALL=(ALL) NOPASSWD: /sbin/shutdown, /bin/yum

例ではmacanというユーザーに対し、パスワードなしでshutdownとyumの権限を与えています。それ以外の権限はないため例えばsudo vi などはできません。

一般ユーザーに全ての権限を与える事も出来る

一般ユーザーをroot権限を与えてrootと同じようにすることもできます。ただそれをすると一般ユーザーでコマンド間違えて取り返し付かなくなるとか、なんらかの理由でそのユーザーが外部に漏れてしまったなどを考えると、一般ユーザーにはroot権限全て与えないで一部だけというのが良い気もします。

この方が安全?

rootだとなんでもできますが、例えばsudo権限にrm権限を与えないと、sudoでyumでインストールしたけどrmで消したいというときは消せません。なのでシステムで普段はsudoでここぞというときはrootとか、なんらかの理由から他者にroot権限を与えるときに、sudoをいれれば安全かもしれません。

どんな場面で使う?

ぱっと思いつかないですが、例えばPHPやPythonなどでどうしてもapacheの再起動が必要になった時に、第三者が行うというときにsudo権限で再起動させるなどになります。
※あまりないかもしれません