ルートがdoasを介して無制限のコマンドを実行する必要があるのはなぜですか?

ルートがdoasを介して無制限のコマンドを実行する必要があるのはなぜですか?

doas今読んで偶然見つけました。設定のマニュアルページ次の例を見つけました。

次の例では、wsrcグループのユーザーがポートを構築できるようにします。環境変数PS1とSSH_AUTH_SOCKを維持し、ENVの設定を解除しながら、teduがパスワードなしでrootとしてprocmapを実行できるようにします。また、ルート自体が無制限のコマンドを実行できるようにします。

# Non-exhaustive list of variables needed to 
# build release(8) and ports(7) 
permit nopass setenv { \ 
        FTPMODE PKG_CACHE PKG_PATH SM_PATH SSH_AUTH_SOCK \ 
        DESTDIR DISTDIR FETCH_CMD FLAVOR GROUP MAKE MAKECONF \ 
        MULTI_PACKAGES NOMAN OKAY_FILES OWNER PKG_DBDIR \ 
        PKG_DESTDIR PKG_TMPDIR PORTSDIR RELEASEDIR SHARED_ONLY \ 
        SUBPACKAGE WRKOBJDIR SUDO_PORT_V1 } :wsrc 
permit setenv { -ENV PS1=$DOAS_PS1 SSH_AUTH_SOCK } :wheel 
permit nopass tedu as root cmd /usr/sbin/procmap 
permit nopass keepenv root as root 

ルートはルートですが、なぜ権限が必要ですか?

sudo注:私はこれを代替/継承としてマークしましたdoas。したがって、推論または概念は、両方とも出現またはsudo適用することができる。

答え1

この意見を文脈から逸脱しました。この行は、次のような状況で役立ちます。ポートの構築:

permit nopass keepenv root as root

建設港では常に電話が来ていますdoas。上記の行がない場合は、ポートがとしてビルドされていても、環境全体で行われているように上記の行rootでポートをビルドします。root

答え2

他の回答の一部に同意しません。独自のポート構築強調するいつもそうではないsudoに電話する(またはDOAS)と しなければならない一般(専用)ユーザーが実行します。特定の make 宛先 (たとえば、ポートをインストールまたは削除する宛先make install) のみがこのプログラムを呼び出します (SUDOまたは環境で指定されている場合)。/etc/mk.confマニュアルでこの設定に言及する理由は、バッチビルドにdpb(1)を使用するためです。


この行があるのは、OpenBSDのデフォルトファイルとの以前のバージョンとの互換性によるsudoersものです。メッセージを送信話す:

CVSROOT:        /cvs
Module name:    src
Changes by:     [email protected]     2015/08/28 07:19:50

Modified files:
        usr.bin/doas   : doas.conf.5 

Log message:
Document an example that lets root run unrestricted doas commands as
root ("permit nopass keepenv root as root"), matching the old
behaviour from OpenBSD's sudoers file ("root ALL=(ALL) SETENV: ALL").

OK sthen@

これがうまくいくのはなぜですか?次のルート権限を必要とするいくつかのタスクを実行するスクリプトを想像してください。

#!/bin/sh
cmd1
doas cmd2
cmd3

doas権限を持つユーザーのみがこのスクリプトを正常に実行できます。基本的に、いいえユーザー(ルートではない場合でも)はdoasを使用する権限を持っています/etc/doas.conf。その行がなければ、上記のpermit root as rootスクリプトをrootとして実行すると失敗します。これは驚くほど不便です。

今、他の答えに同意する部分は次のとおりです。上記のように、OpenBSDのデフォルトのビルドスクリプトには権限をSUDO設定sudoまたはdoas拡張できる変数があります。でコマンドを実行している場合は、$SUDOディレクトリプレフィックスやビルドシステムが正しく機能するために必要なその他のものなど、環境変数を保存しようとします。


もう一つ:引用マニュアルの抜粋の最初の大きな例だけがポートの構築に関するものであることに注意してください。引用符付きのテキストを4つの別々の項目の箇条書きリストに読みます。

以下の例

  • wsrc グループのユーザーがポートを構築できるようにします。
  • [許可] 環境変数 PS1 と SSH_AUTH_SOCK を保持し、ENV の設定を解除すると、ホイールが任意のユーザーでコマンドを実行できます。
  • teduがパスワードなしでrootとしてprocmapを実行できるようにします。
  • また、ルート自体が無制限のコマンドを実行できるようにします。

明らかに、procmapに関連する例は、ポートの構築には関係ありません。 2番目の例は、Wheelグループのメンバーが権限をrootに昇格できる人であるという一般的な慣行です(例:su、sudo、doasなど)。

今、なぜこれをしたいですか?一部のスクリプトまたはmakefileにはSUDO変数が含まれています。デフォルトでは、どのユーザーもdoasを使用する権限がありません。に申請する必要があります/etc/doas.conf

関連情報