自由気ままに書いちゃおう

好きなことをつらつらと・・・

【RHEL8】sudoコマンドと/etc/sudoersについて

前回の記事でsuコマンドについて取り上げていますので、
関連するところで今回はsudoについてです。

www.guri2o1667.work

 

■sudoコマンドについて

例えば、一般ユーザにログインしている際に、
rootユーザでしか実行できないコマンドやファイル操作をしたい場合、以下の2つの方法が考えられます。

① rootユーザにスイッチ
② そのコマンドだけrootユーザとして実行

①についてはrootユーザの権限をそのまま渡すことになるため、実行したいコマンド以外にも好き勝手出来てしまい、好ましくない場合があります。(rootユーザのパスワードを教えることにもなります。)

②の方法を採用することで、rootパスワードを必要とせず、あらかじめ定義したコマンドのみの操作を許可することができます。
sudoコマンドは②の方法に該当します。

■/etc/sudoers と visudoコマンドについて

sudoコマンドの設定ファイルは/etc/sudoersです。
ただし、/etc/sudoersをviコマンド等で直接編集することは非推奨です。
/etc/sudoersを編集する場合には、visudoコマンドを利用します。

■/etc/sudoers の書式について

以下の書式で各パラメータを記載します。

ユーザ名 ホスト名=(実行ユーザ名) [NOPASSWD:] コマンドA,コマンドB,・・・


各項目の意味は以下の通りです。
ユーザ名・・・コマンドの実行を許可するユーザ、グループ、もしくはALL。省略不可
ホスト名・・・実行を許可するホスト名、IPアドレス、もしくはALL。省略不可。
実行ユーザ名・・・コマンド実行時のユーザ名。省略時はrootユーザを意味。
NOPASSWD・・・記載した場合、コマンド実行時に実行ユーザのパスワードが聞かれない。
コマンド・・・実行を許可するコマンドのパス、もしくはALL。省略不可。

■/etc/sudoersの初期設定について

/etc/sudoersでは、デフォルトで以下の記載があります。
その中で最終行目の%wheelの記載について取り上げます。

f:id:guri2o1667:20201025141043p:plain

まず、先頭の%はグループを意味します。
そのため、wheelグループについての記載なことがわかります。

続いて、ALL=(ALL)ですが、
・ホスト名がALL
・実行ユーザ名もALL
であり、コマンド部分のALLも合わせると、
「wheelグループは、全てのホストで全ての実行ユーザによる全てのコマンドの実行が可能」ということを意味しています。

■/etc/sudoersの設定例1

試しに一般ユーザであるtestuserに対して、useraddコマンドが実行できるようにしてみます。
尚、/etc/sudoersを修正する前にuseraddを実行すると以下の通りになります。

f:id:guri2o1667:20201025143957p:plain


では、/etc/sudoersを修正してみます。

visudo

末尾に以下を追記します。

testuser ALL=(ALL) /usr/sbin/useradd

設定完了後、:wqで保存します。
以下は設定後の/etc/sudoersです。(末尾に追記されていることが確認できます。)

f:id:guri2o1667:20201025144133p:plain


再度、useraddコマンドを打ちます。以下の通り実行できました。

f:id:guri2o1667:20201025144206p:plain

尚、"[sudo] testuser のパスワード:"で聞かれている部分は、testuserのパスワードを入力します。
※rootユーザのパスワードではないことに注意してください。

■/etc/sudoersの設定例2

設定例1同様ですが、今度はパスワードの入力が不要な状態にしてみます。

では、/etc/sudoersを修正してみます。

visudo

末尾に以下を追記します。

testuser ALL=(ALL) NOPASSWD:/usr/sbin/useradd

設定完了後、:wqで保存します。
以下は設定後の/etc/sudoersです。(末尾に追記されていることが確認できます。)

f:id:guri2o1667:20201025144404p:plain

再度、useraddコマンドを打ちます。今度はパスワードの入力無しで実行できました。

f:id:guri2o1667:20201025144504p:plain

 

■/etc/sudoersの設定例3

今度は作成したユーザを削除するための設定を行います。
尚、/etc/sudoersを修正する前にuseraddを実行すると以下の通りになります。

f:id:guri2o1667:20201025144626p:plain

では、/etc/sudoersを修正してみます。

visudo

末尾に以下を追記します。

testuser ALL=(ALL) NOPASSWD:/usr/sbin/useradd,/usr/sbin/userdel

設定完了後、:wqで保存します。
以下は設定後の/etc/sudoersです。(userdelコマンドが追記されていることが確認できます。)

f:id:guri2o1667:20201025144714p:plain

再度、userdelコマンドを打ちます。パスワードの入力無しで実行できました。

f:id:guri2o1667:20201025144803p:plain

 

■sudoコマンドの履歴について

sudoコマンドを実行した一般ユーザは、/var/log/secureに実行履歴が保存されます。
以下は/var/log/secureの出力例です。
※testuserでuserdelコマンドを実行したい際のログです。
(/etc/sudoersの修正前に打って失敗したコマンドも記録されています。)

f:id:guri2o1667:20201025145131p:plain



以上です。