通过 /etc/profile.d 登录时运行 ProtonVPN

通过 /etc/profile.d 登录时运行 ProtonVPN

我有一个简单的脚本,可以在登录时运行我的 VPN。该脚本位于

/etc/profile.d/connectVPN.sh

#!/bin/bash
protonvpn c -f > /home/myUserName/Desktop/out.txt

输出文件的内容:

[!] The program was not executed as root.
[!] Please run as root.

ls -l /etc/profile.d/connectVPN.sh

-rwxr-xr-x 1 root root 59 Dec 23 15:22 /etc/profile.d/connectVPN.sh

由于脚本未以 root 身份运行,因此 VPN 无法启动。我该如何修复此问题?

ls -lF /home/我的用户名/Desktop/out.txt

-rw-rw-r-- 1 measure measure 74 Dec 29 22:27 Desktop/out.txt

答案1

您可以尝试对您想要运行 VPN 的用户使用 sudo passwordless 执行 proton 命令;

通过编辑 /etc/sudoers.d/ 文件夹添加一个文件(任何名称都可以,例如 proton),其中包含以下条目(假设用户名是:措施protonvpn 的路径是/bin/protonvpn):

measure NOPASSWD: /bin/protonvpn

笔记:如果不正确,修改可执行文件路径和/或用户名

然后修改/etc/profile.d/connectVPN.sh从:

#!/bin/bash
protonvpn c -f > /home/myUserName/Desktop/out.txt

到:

#!/bin/bash
sudo /bin/protonvpn c -f > /home/myUserName/Desktop/out.txt

然后重试。

就我个人而言,如果 VPN 在系统启动时启动没有问题,我建议您使用 systemd 来管理它。


编辑 下面是一个示例,说明如何在网络连接后使用 systemd 管理脚本:

[Unit]
Description=Protonvpn

[Service]
Type=idle
# as root the sudo command can be removed.
ExecStart=/usr/bin/sudo /bin/protonvpn c -f > /home/myUserName/Desktop/out.txt
# with the following user and group you need the sudoers.d file
# if you want to run it as root user change user and group with root
User=measure
Group=measure
Restart=always
RestartSec=30

[Install]
# this make the trick, script will be executed only once the 
# connection to a network has been established
WantedBy=network-online.target

来源:这篇关于 systemd 脚本的博客文章

将先前的代码保存在以下文件中:/etc/systemd/系统/并使其可执行:

sudo chmod +x /etc/systemd/system/protonvpn.service

重新加载 systemd 以发现新服务:

systemctl daemon-reload

启用服务在启动时启动:

sudo systemctl enable protonvpn

测试一下:

sudo systemctl start protonvpn

最后检查一下服务是否正常启动 VPN,也可以@reboot

相关内容