有没有一种“好的”方法可以让用户在没有 root 访问权限的情况下使用 wg-quick?

ras*_*s91 5 root permissions

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

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

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

小智 2

警告:遵循此答案存在安全风险,它为用户提供无需密码的完全 root 访问权限。

使用 @ctrl-alt-delor 答案的提示,我设法制定了一个可行的解决方案。在我的场景中,我希望一个名为 jenkins 的非 sudo 用户能够像作者一样运行 wg-quick <up/down> 。

跑步: sudo visudo

root            ALL = (ALL) ALL
%admin          ALL = (ALL) ALL
Run Code Online (Sandbox Code Playgroud)

下面添加了几行--------

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
Run Code Online (Sandbox Code Playgroud)

在我们要执行的最终命令之前列出先决条件非常重要!不然不行!我希望这会对某人有所帮助!

之后,普通用户 jenkins 就可以运行这个命令了。如果你面对

encountered an error: "wg-quick: Version mismatch: bash 3 detected, when bash 4+ required"
Run Code Online (Sandbox Code Playgroud)

然后简单地运行

which bash
Run Code Online (Sandbox Code Playgroud)

/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/

  • 正如其他答案之一所指出的,您刚刚通过允许“jenkins”用户运行根级 shell 来为“jenkins”用户提供不受限制的根访问权限。在 sudo 中使用系统级命令通常会带来许多安全问题,除非您对命令定义“非常”严格,这在某些时候会带来更多的工作量而不是其价值。请仔细考虑 sudoers 规则的含义。 (2认同)