Linux
 Computer >> コンピューター >  >> システム >> Linux

doasとは何か?sudoの代替となる特権昇格ツールのインストールと設定方法

doasとは何か?sudoの代替となる特権昇格ツールのインストールと設定方法

doasは、sudoに似た特権昇格プログラムです。可能な限り軽量でシンプルであることを目指して設計されており、OpenBSDではデフォルトの特権昇格プログラムとして採用されています。また、OpenDoasプロジェクトを通じて、他のUNIX系オペレーティングシステムでも利用可能です。

sudoの問題点

長年にわたり、sudoはUNIXの世界における事実上の標準的な特権昇格プログラムとなってきました。しかし、これはsudoがUNIX系マシンを使用するすべての人のあらゆるユースケースに対応しなければならないことを意味します。この開発アプローチにより、sudoは理解しにくく扱いにくい、複雑なプログラムになってしまいました。

例えば、sudoの動作を変更するには、visudoというコマンドを実行する必要があります。これは「/etc/sudoers」ファイルを「安全モード」で開くための特殊なローダープログラムです。

visudoは主に2つの役割を果たします。1つは「/etc/sudoers」ファイルの構文エラーをチェックすること、もう1つはファイルをロックして現在のユーザー以外が編集できないようにすることです。一見すると便利な機能に思えますが、visudoはsudoの複雑化が進んだことの表れと言えます。

doasとは何か?sudoの代替となる特権昇格ツールのインストールと設定方法

つまり、sudoersファイルの構文は、潜在的な構文エラーをチェックする必要があるほど複雑になっているということです。また、sudoはシングルユーザー環境とマルチユーザー環境の両方に対応する必要があるため、sudoersファイルをロックする仕組みが必要になります。

sudoは確かに優れたプログラムです。その複雑な設定構文を使えば、経験豊富なシステム管理者にとって有用な精巧な権限システムを構築できます。

しかし、ほとんどのユーザーにとっては、rootシェルを実行してプログラムをインストールしたりシステムを調整したりするためにsudoを使う程度でしょう。そのような場合、sudoの複雑さはむしろ機能というより障害物のように映ります。

なぜdoasを使うのか?

doasの目的は、sudoの複雑さを解消することです。OpenBSD向けに開発され、すぐにほぼすべてのLinuxシステムへ移植されました。迅速かつ簡単に使えるだけでなく、保守やセキュリティの面でもシンプルであることを目指しています。

doasの構文はsudoとも異なり、設定は平易な英語を書くのに似ています。例えば、sudoでwheelグループの任意のユーザーがパスワードなしでrootとしてコマンドを実行できるようにする構文は次のとおりです。

%wheel ALL=(ALL) NOPASSWD: ALL

一方、doasでは、はるかに理解しやすい構文になります。

permit nopass :wheel as root
doasとは何か?sudoの代替となる特権昇格ツールのインストールと設定方法

さらに、doasにはvisudoのような特殊なローダープログラムは不要です。十分な権限を持つユーザーであれば、任意のテキストエディタで設定ファイルを直接編集するだけで変更できます。

このシンプルで平易なアプローチにより、特権ユーザーやグループの設定プロセスが透明化され、ミスも起こりにくくなります。

doasのインストール方法

Linuxシステムを使用している場合、すでにsudoを特権昇格プログラムとして使用している可能性が高く、その場合はdoasのインストールは比較的簡単です。

DebianやUbuntuでは、aptを使ってインストールできます。

sudo apt install doas

Arch Linuxではpacmanを使用します。

sudo pacman -Syu opendoas

Fedoraではdnfを使用します。

sudo dnf install opendoas

Void Linuxではxbpsを使用します。

sudo xbps-install opendoas

筆者の場合はVoid Linuxにdoasをインストールしているため、XBPSを使用しています。

doasとは何か?sudoの代替となる特権昇格ツールのインストールと設定方法

doasの設定ファイル

doasをインストールしたら、suコマンドでrootユーザーに切り替えて「/etc/doas.conf」ファイルを編集できます。

su --command="nano /etc/doas.conf"

suがrootパスワードを尋ねてくるので入力すると、nanoで設定ファイルが開かれます(存在しない場合は新規作成されます)。

doasとは何か?sudoの代替となる特権昇格ツールのインストールと設定方法

編集を始めると、「doas.conf」が空であることに気づくでしょう。これはvisudoとはまったく異なる点ですが、前述のとおり、doasの設定は非常にシンプルです。

設定の構文

doas.confの基本構文は次のとおりです。

permit|deny [options] identity [as target] [cmd command [args ...]]
  • permit / deny:doasがそのルールを許可するか拒否するかを設定します。
  • options:doasの追加設定です。一般ユーザーにとって特に便利なのはpersistとnopassです。
  • identity:doasを実行するユーザーまたはグループです。
  • as target:「identity」が実行できる(またはできない)切り替え先のユーザーです。
  • cmd:「identity」が「target」として実行できる(またはできない)コマンドです。デフォルトはすべてのプログラムですが、特定のプログラムを指定することもできます。
  • args:指定したコマンドに固有の引数です。

例えば、以下のように書くと、wheelグループの任意のユーザーがrootとしてコマンドを実行できるようになります。persistオプションにより、rootシェルはウィンドウを閉じるまで持続します。

permit persist :wheel as root

特定のユーザーに対して特定のコマンドのみを許可するルールも作成できます。例えば、次のルールを使うと、ユーザー「bob」がパスワードを求められることなくrootとして「apt」プログラムを実行できるようになります。

permit nopass bob as root cmd apt

筆者の場合は、wheelグループ全体にパスワードなしでrootとしての実行を許可しつつ、wheelグループの一員であるユーザーagaにはrootとしてのコマンド実行を禁止したいと考えています。そこで「/etc/doas.conf」に以下のように記述します。

permit nopass :wheel as root
deny aga as root
doasとは何か?sudoの代替となる特権昇格ツールのインストールと設定方法

設定後の確認作業

設定後、doasが意図したとおりに動作することを確認するために、いくつかのコマンドを実行する必要があります。まず、doas.confの所有者をrootに設定します。

sudo chown -c root:root /etc/doas.conf

次に、設定ファイルのパーミッションを0644に設定して、rootユーザーだけがアクセスできるようにします。

sudo chmod -c 0644 /etc/doas.conf

最後に、設定ファイル内に構文エラーがないかどうかをdoas自体にチェックさせます。以下のコマンドを実行してください。

sudo doas -C /etc/doas.conf && echo "OK" || echo "ERROR"
doasとは何か?sudoの代替となる特権昇格ツールのインストールと設定方法

おめでとうございます!システムへのdoasのインストールと設定が完了しました。これからはdoasをsudoの代わりとして使い始めることも、doas.confをお好みに合わせて細かく調整することもできます。Linuxのシステム管理についてさらに学びたい方は、関連記事もぜひご覧ください。

よくある質問

1. 設定がうまく機能しません。特定のユーザー用のルールと一般的なルールを追加しましたが、ユーザー用のルールが反映されていないようです。

doasの設定ファイルは、最も一般的なルールから順に評価されます。設定を正しく機能させるには、まずすべてのユーザーに適用される一般的なルールを先に記述し、その下に特定のユーザーを対象とするルールを記述してください。

2. sudoとdoasを同じシステムに共存させることはできますか?

はい、可能です。doasとsudoは別々のプログラムであり、互いに競合しません。sudoをシステムに残したままdoasを使用しても問題ありません。

3. doasでrootシェルを取得することはできますか?

はい、設定ファイルが適切に構成されていれば可能です。doas -sを実行することでrootシェルを起動できます。

  1. LinuxにMicrosoft Defenderをインストールして使う方法【RPM系・Debian系対応】

    エンタープライズ環境以外の多くのLinuxユーザーは、Linux上でMicrosoft製ツールを使うことにピンとこないかもしれません。しかし、企業内でLinuxを運用している人なら、その価値を十分に理解しているはずです。Active Directoryをはじめとする職場の標準となったMicrosoftエコシステムとの統合は、デスクトップLinuxにとって大きなメリットであり、お気に入りのディストリビューションがビジネス現場でも実用的なOSへと変わります。そして企業において最も重要な要素のひとつがセキュリティです。本記事では、LinuxにMicrosoft Defenderをインストールして使用

  2. BIOSとは?仕組みとWindows 10での正しい更新方法を徹底解説

    パソコンでキーボードの不具合、電源まわりのトラブル、インターネット接続の問題や動作速度の低下などが発生したとき、その原因がBIOSに関連しているケースは少なくありません。修理業者やITの専門家に相談すると、本格的なトラブルシューティングの前に「まずBIOSを更新してみてください」とアドバイスされることも多いでしょう。実際、BIOSの更新だけで問題が解決するケースも多くあります。 BIOSとは? BIOS(Basic Input/Output System:基本入出力システム)は、PCのマザーボード上にある小さなメモリチップに格納されたソフトウェアで、CPUやGPUなど、PCに搭載されたすべての