每次使用“sudo”运行时,是否需要指定在“/etc/sudoers”中添加的命令的路径名?

每次使用“sudo”运行时,是否需要指定在“/etc/sudoers”中添加的命令的路径名?

对于我添加到的一行/etc/sudoers,例如:

t  ALL=(ALL) NOPASSWD: /path/to/myscript

/path/to位于PATH当前用户的中t,但不位于PATHroot

$ sudo /path/to/myscript

无需密码即可工作,但每次使用 运行脚本时是否需要指定脚本的路径名sudo

$ sudo myscript
[sudo] password for t: 
sudo: changeCpuFreq.sh: command not found

即使使用密码也不起作用,因为 myscript的路径不在PATHof中root

$ sudo -E env "PATH=$PATH" myscript
[sudo] password for t: 

可以使用密码,因为PATHoft被复制到 of root,但问题是它仍然需要密码。

谢谢。

答案1

您本身不需要在 sudoers 中定义完整路径名;然而你应该出于安全原因这样做。

否则,获得root权限是相当容易的;你只需要调用其他具有相同名称的二进制文件,以及急板,即时root权限。

答案2

您可以定制须藤通过编辑/etc/sudoers./etc/sudoers.d/*

警告!!!如果你的帐户已被禁用,使用维苏多强烈地编辑时建议须藤的配置。

下面定义了 sudoer 的不同搜索路径我的用户:

Defaults:myuser secure_path="/path/to:/usr/sbin:/usr/bin:/sbin:/bin"

以下定义了 sudoing 时不同的搜索路径:

Defaults>root secure_path="/path/to:/usr/sbin:/usr/bin:/sbin:/bin"

/path/to/myscript下面仅在调用时定义不同的搜索路径须藤:

Defaults!/path/to/myscript secure_path="/path/to:/usr/sbin:/usr/bin:/sbin:/bin"

上述任何内容都将与您的“NOPASSWD”规则很好地集成,并且在调用 时不需要路径前缀sudo myscript

相关内容