sudo 命令无法从脚本运行

sudo 命令无法从脚本运行

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 路径

相关内容