我正在拼命尝试设置一种“无 sudo”方式来启动 WireGuard 隧道。用户在 Debian 12 Bookworm 上没有提升权限。
用户需要一种简单的方法来访问终端服务器xfreerdp
。用户通过 VPN 连接到终端服务器时无论如何都必须使用密码,因此wg-quick
我认为请求另一个密码是多余的。(用户需要一个密码才能登录 Linux,还需要第二个密码才能登录终端服务器)。
我为用户创建了一个桌面图标,它启动以下命令:
wg-quick up user ; xfreerdp <all-the-stuff-for-logging-in-at-the remote server> ; wg-quick down user
/etc/sudoers
这样,当 RDP 会话结束时,VPN 将自动关闭。我在使用 visudo的末尾添加了以下行:
user ALL=NOPASSWD: /usr/bin/wg-quick
桌面启动器什么都不做。如果我在终端中运行命令,它会一直要求输入密码wg-quick
。
我在这里做错了什么?
答案1
快速回答 :
不,您不能没有sudo
该用户的权限。
更长的答案(以及不被阻止的解决方案):
您无法避免使用sudo
它,因为wg-quick
需要 root 权限才能工作。然而,因为您只授权了wg-quick
中的一个命令/etc/sudoers
,所以使用 不存在安全风险sudo
。用户将无法运行除 之外的其他命令wg-quick
(没有提升的权限)。
你做的几乎都很好,你只是忘记了一个基本要素:sudo
之前的wg-quick
命令。下面是应该起作用的命令:
sudo wg-quick up user ; xfreerdp <all-the-stuff-for-logging-in-at-the remote server> ; sudo wg-quick down user
如果没有这个sudo
,/etc/sudoers
规则就不会应用。这是逻辑。在运行允许的命令之前你需要它。
(我刚刚在基于 Debian 的发行版上进行了测试以确认)。