Wireguardを設定して非常に満足していますが、次の2つが不思議ではありません。
- なぜwg-quickはルートでのみ使用できますか?
wg-quick <up/down> <interface>
実際のルートアクセスなしで他のユーザーに操作を実行する権限を付与できますか?
これは、ファイルをルート所有ディレクトリに移動/コピー/シンボリックリンクし、デーモンなどを再ロードすることに関連していると思います。とにかく、解決策のより詳細な説明と提案を聞きたいです。
答え1
wg-quick は wg と ip を使用してネットワークインタフェースを変更するため、root アクセスが必要です。
sudoersにwg-quickを追加しないでください。これにより、無制限のルートアクセスが提供されます。 wg-quick設定には、任意のスクリプト(PreUp、PostUpなど)をrootとして実行するためのフックがあり、「カスタムDNSオプションまたはファイアウォールルールを設定するために最も一般的に使用されます」
wg-quickは、マンページに次のように実際に便利なスクリプトです。
通常、このユーティリティはWireGuardインターフェイスを設定するためにwg(8)とip(8)への呼び出しをラップする単純なスクリプトです。これは単純な要件を持つユーザー向けに設計されており、高度な要件を持つユーザーはより具体的なツール、より完全なネットワーク管理者、または通常どおりwg(8)とip(8)を使用することをお勧めします。
答え2
警告:ユーザーにパスワードなしでフルルートアクセスを提供するこの回答によれば、セキュリティ上のリスクがあります。
@ctrl-alt-delorの答えのヒントを使って動作するソリューションを策定しました。私のシナリオでは、jenkinsというsudo以外のユーザーがwg-quick <up / down>を作成者として実行できるようにしたいと思います。
ランニング: sudo visudo
root ALL = (ALL) ALL
%admin ALL = (ALL) ALL
下に数行を追加-------
jenkins ALL = (ALL) NOPASSWD: /opt/homebrew/bin/bash
jenkins ALL = (ALL) NOPASSWD: /usr/sbin/networksetup
jenkins ALL = (ALL) NOPASSWD: /sbin/ifconfig
jenkins ALL = (ALL) NOPASSWD: /opt/homebrew/bin/wg
jenkins ALL = (ALL) NOPASSWD: /opt/homebrew/bin/wg-quick
実行したい最終コマンドを実行する前に、前提条件をリストすることが重要です。それ以外の場合は動作しません!これが誰かに役立つことを願っています!
その後、一般ユーザー jenkins はこのコマンドを実行できます。直面するなら
encountered an error: "wg-quick: Version mismatch: bash 3 detected, when bash 4+ required"
その後、単に実行してください。
which bash
/opt/homebrew/bin/wg-quick
パス出力をコピーしてwg-quick file()の先頭に配置します。
私の場合、wg-quickの上部には次のものがあります。#!/opt/homebrew/bin/bash
これを実行した後、ユーザーはこのwg-quick up / downを実行し、Automator / shスクリプトでこれを実行できます。 :)
使用されたリソース: https://osxdaily.com/2014/02/06/add-user-sudoers-file-mac/
答え3
はい。しかし、そうではありません(他の答えを参照)。
警告:このコマンドではこれを実行しないでください。
オプション1:理由を調べて正しいことをしてください。
オプション2:sudo
実行しsudo
てパスワードを入力してください。私はすでにこれをやっていると思います。
sudo
オプション3:このコマンドのパスワードを構成しません。
このコマンドは安全ではありません。
/etc/sudoers
実行できるようにファイルを編集してください。このコマンドパスワードがあるものとsudo
パスワードがないこと。 (注意してください。visudoを使用してファイルを確認してください。)
うまくいけば、ラッパースクリプトを書いて簡単に実行できます。
答え4
私のラップトップでは、suidビットwg-quick
とwg
実行可能ファイルを適用してこの問題を簡単に解決しました。
which wg: /usr/bin/wg
which wg-quick: /usr/bin/wg-quick
sudo chmod u+s /usr/bin/wg-quick
sudo chmod u+s /usr/bin/wg