对于我添加到的一行/etc/sudoers
,例如:
t ALL=(ALL) NOPASSWD: /path/to/myscript
/path/to
位于PATH
当前用户的中t
,但不位于PATH
中root
。
$ sudo /path/to/myscript
无需密码即可工作,但每次使用 运行脚本时是否需要指定脚本的路径名sudo
?
$ sudo myscript
[sudo] password for t:
sudo: changeCpuFreq.sh: command not found
即使使用密码也不起作用,因为 myscript
的路径不在PATH
of中root
。
$ sudo -E env "PATH=$PATH" myscript
[sudo] password for t:
可以使用密码,因为PATH
oft
被复制到 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
。