选择一:找出原因,然后做正确的事。

选择一:找出原因,然后做正确的事。

我已经设置了wireguard,我对此非常满意,但我忍不住想知道两件事:

  1. 为什么 wg-quick 只能由 root 使用?
  2. wg-quick <up/down> <interface>我可以授予其他用户在没有实际 root 访问权限的情况下执行操作的权限吗?

我猜测这与将文件移动/复制/符号链接到根拥有的目录中,以及重新加载守护进程或其他东西有关。无论如何,我希望对解决方案进行一些阐述和建议

答案1

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)。

答案2

警告:遵循此答案存在安全风险,它为用户提供无需密码的完全 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

/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

是的。但不要(参见其他答案)。

警告:不要为此命令执行此操作。

选择一:找出原因,然后做正确的事。

选项2:sudo

运行sudo并输入密码。我想你已经在这样做了。

sudo选项 3:为此命令配置无密码。

此命令不安全。

编辑该/etc/sudoers文件,以便可以运行这个命令sudo密码和无密码。 (小心,使用 visudo 验证文件。)

当它起作用时,您可以编写一个包装器脚本,以使其更容易运行。

答案4

在我自己的笔记本电脑上,只需通过应用 suid 位wg-quickwg可执行文件来解决此问题。

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

相关内容