Mic*_*ith 5 permissions vpn autostart
我当前正在使用需要管理权限的 VPN 应用程序,并且我已将该应用程序添加到我的自动启动中。然而,每次我登录时,总是会要求我输入密码来授予此应用程序的权限,这非常多余,因为我只是使用相同的密码登录。
无论如何,我可以让这个应用程序自动启动而无需输入密码吗?我已经尝试过使用自动启动命令sudo airvpn,但这会导致应用程序根本无法打开。
澄清一下,我不想在启动时运行命令,我希望在登录时运行命令。这个问题是相关的,但是,我尝试添加exec airvpn到/etc/rc.local,但登录时没有任何反应。
如果您正在运行图形程序,也许您应该避免使用sudo,因为它只能通过终端窗口询问您的密码,这对图形程序不利。(除非您从终端启动上述程序。)我曾经推荐gksu或gksudo,但遗憾的是这两个程序已停止使用,并且在最新版本的 Ubutnu 中不再可用。您可以改为使用策略包以 root 身份运行该程序pkexec airvpn。这也需要密码,但可以通过图形弹出窗口提示输入密码,因此不依赖于在终端中输入的密码。
如果您不想每次都输入密码,这里有一些关于如何以 root 身份执行程序而无需输入密码的提示。
如果airvpn可执行文件是二进制文件(而不是文本文件),您应该能够使用 chmod 命令更改文件权限以激活 setuid 模式,这意味着它将始终以拥有它的用户身份运行。(要确保用户是 root,请运行sudo chroot $(which airvpn)。)这不需要密码,也不需要您执行以下任何步骤。但是,它将要求您运行以下命令:sudo chmod u+s $(which airvpn)。然而,这个技巧不适用于文本文件(python 程序、shell 脚本等)。另外,如果您更新了此文件,您可能需要再次执行此操作。下次更新时再一次。然后再次...
sudo配置文件顺便说一句,sudo(以及扩展名gksudo和gksu,两者都使用与 相同的配置sudo)和policykit(可以使用 root 身份执行程序pkexec)都可以编程为无需输入密码即可运行程序。我不知道如何使用策略包来做到这一点,但我可以教你如何使用sudo. 在继续之前,您应该在后台运行一个 root shell,以防出现问题。sudo(您可能会完全失去使用能力,见下文)。在目录中创建一个文本文件/etc/sudoers.d。您可以随意命名它,只要它没有字符.,并且不以~字符结尾即可。
在继续之前,我应该警告您,您需要知道airvpn可执行文件的路径。如果您进入which airvpn终端,它应该告诉您该文件在哪里。假设是/usr/bin/airvpn,您可以输入:
%admin ALL = NOPASSWD:/usr/bin/airvpn
Run Code Online (Sandbox Code Playgroud)
并将其保存在/etc/sudoers.d目录中。使用该chmod命令将文件权限设置为 0440 可能是个好主意。您可以通过运行(以 root 身份)来完成此操作chmod 0440 file,并将“file”替换为新创建的文件的名称。
现在,打开一个新终端,并通过运行来测试这个新配置sudo airvpn。(“新”一词以粗体显示的原因是,sudo如果您已经sudo在现有终端中执行了命令,即使您尚未成功配置sudo为避免要求您输入密码,也可能不会要求您输入密码。)如果您能够在新终端中执行此操作,则您已经成功地airvpn无需密码即可执行。现在您所要做的就是将启动项更改为 run sudo airvpn,然后就可以开始了。无论可执行文件是二进制文件还是文本文件,这都将起作用。此外,无论您更新此程序的频率如何,您只需要执行一次此操作。
如果出现问题,并且您失去了sudo以 root 身份执行任何操作的能力,您可以删除新创建的文件,并且 sudo 的行为应该像以前一样。(还记得我建议您保持 root shell 运行吗?您可能需要它来删除该文件。当然,您可以通过运行来执行 root shell pkexec su,然后使用它来删除该文件。或者,如果 root shell帐户有密码,su应该这样做。)
虽然 gksudo 可能已经死了,但有一种方法可以自己制作类似的替代品。第一步,安装 ssh-askpass 包:sudo apt install ssh-askpass。然后,创建一个 shell 脚本(使用您最喜欢的文本编辑器),其中包含以下内容:
#!/bin/sh
export SUDO_ASKPASS=/usr/lib/ssh/x11-ssh-askpass
exec sudo "$@"
Run Code Online (Sandbox Code Playgroud)
您可以将其另存为gksudo. 现在,您需要使该脚本可执行,并将其复制到可以执行它的位置。您可以结合使用 heinstall命令,让您同时执行这两件事:sudo install -o 0 -g 0 -m 0755 ./install /usr/local/sbin。(如果您没有/usr/local/sbin目录,您可能需要创建一个:sudo mkdir -p /usr/local/sbin。)您可能还需要运行rm install,这样就不会出现无用的第二个副本。
现在您可以输入gksudo airvpn,您将收到一个非终端提示,要求您输入密码。您可以重复使用它来制作应用程序启动器、启动项或其他任何东西。由于此脚本依赖sudo于后端,因此您所做的任何配置也sudo将适用于此处。因此,如果您的sudo配置失败,这可能会成为后备方案 - 除非您无法使用 sudo 执行任何操作,在这种情况下您只能靠自己了。(例如,如果您的/etc/sudoers.d/*文件因某种原因被删除。)
| 归档时间: |
|
| 查看次数: |
11130 次 |
| 最近记录: |