Permissions

有沒有一種“好”的方法可以讓使用者在沒有 root 訪問權限的情況下使用 wg-quick?

  • November 23, 2021

我已經設置了wireguard,對此我感到非常滿意,但我不禁想知道兩件事:

  1. 為什麼 wg-quick 只能由 root 使用?
  2. 我可以在wg-quick <up/down> <interface>沒有實際 root 訪問權限的情況下授予其他使用者權限嗎?

我猜這與將文件移動/複製/符號連結到根擁有的目錄,並重新載入守護程序或其他東西有關。無論如何,我希望對解決方案進行一些詳細說明和建議

警告:遵循此答案存在安全風險,它為使用者提供無需密碼的完全 root 訪問權限。

使用來自@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

複製路徑輸出並將其放在 wg-quick file( /opt/homebrew/bin/wg-quick)的開頭

就我而言, wg-quick 的頂部將具有:#!/opt/homebrew/bin/bash

完成此操作後,使用者可以執行此 wg-quick up/down 並從 automator/sh 腳本執行此作業 :)

使用的資源: https ://osxdaily.com/2014/02/06/add-user-sudoers-file-mac/

wg-quick 需要 root 訪問權限,因為它使用 wg 和 ip 來更改網路介面。

不要將 wg-quick 添加到 sudoers,它會提供不受限制的 root 訪問權限。wg-quick 配置具有以 root 身份執行任意腳本(PreUp、PostUp 等)的掛鉤,“最常用於配置自定義 DNS 選項或防火牆規則。”

wg-quick 確實是一個方便的腳本,正如手冊頁所說:

一般來說,這個實用程序只是一個簡單的腳本,它封裝了對 wg(8) 和 ip(8) 的呼叫,以設置 WireGuard 介面。它是為有簡單需求的使用者設計的,強烈建議有更高級需求的使用者使用更具體的工具、更完整的網路管理器,或者像往常一樣只使用 wg(8) 和 ip(8)。

引用自:https://unix.stackexchange.com/questions/574854