Linux Mint。
好的,这将非常基础,但出于某种原因,我误解了它的工作原理。
如果我输入以下命令,一切都正常:
cd home/user/folder1/folder1/
sudo openvpn --auth-nocache --config /home/user/folder2/folder2/config-file.ovpn
我输入了 sudo 密码,一切正常。
如果我将这些命令放入脚本文件中,我将只会得到“未找到命令”的信息。
我已将脚本文件放在一个文件夹中,并将脚本和 opvn 文件夹都添加到该路径中。
我在与 opvn 文件相同的文件夹中创建了一个新脚本(没有路径),从那里运行它并失败。
sudo opvn-script.sh
[sudo] password for <user>:
sudo: opvn-script.sh: command not found
我不明白的是脚本文件本身不能是“未找到”的东西,因为在我输入前几个字符并按下 Tab 键后它就会自动完成。openvpn 不能是“未找到”,因为我可以直接运行命令。
该脚本文件被标记为可执行文件。
echo $PATH
显示路径中的两个文件夹。
到底还剩下什么??
答案1
考虑这个错误信息:
sudo: opvn-script.sh: command not found
输入密码后出现此问题,表示在新用户(root)的 PATH 下找不到该脚本。
一个解决方案是:
sudo /path/to/opvn-script.sh
如果有效,则移动opvn-script.sh
到 root PATH 上的某个方便位置。
为了安全起见,请确保设置权限,以便只有 root 可以修改(写入)opvn-script.sh
。
答案2
啊,我想我看到了。(当然,远程很难说清楚,而且我手边也没有 Linux 机器。)
当你通过 sudo 运行命令时,例如
$ sudo blah
存在潜在的安全漏洞——例如,如果有人编辑了你的脚本并添加了vi /etc/passwd
内容。我相信Linux 改变路径以防止这种情况发生。
要进行检查,请编写一个只回显的脚本$PATH
并从 sudo 运行它。如果路径不是您预期的,则您已找到问题所在。
答案3
脚本路径不在 SUDO 用户配置文件中,已将脚本移至 SUDO 路径