删除指定sudoers中的完整path

我试图在我的/ etc / sudoers文件(redhat)中为'sudotest.sh'(或任何需要sudo的脚本/二进制文件)添加NOPASSWD条目,但为了使其工作,我必须指定完整path。 以下条目工作得很好:

%jenkins ALL=(ALL)NOPASSWD:/home/vts_share/test/sudotest.sh 

问题是脚本可能会移动到不同的目录。 我尝试给/home/*/sudotest.sh,但没有为我工作时,我试图执行sudo ./sudotest.sh,it给我你没有root权限

注意:我也无法拥有/ bin / sh目录的权限。

完整path是强制性的,否则非特权用户可以在任意位置创build一个具有相同名称的新脚本,完全规避您要实现的安全性。

HBrujin是绝对正确的:你不能这样做,这是一个故意的devise决定。 然而,它通常可以被解决,通过认识到,脚本或脚本经常在底层做很多相同的事情,并授予权限sudo东西,而不是包装脚本的多样性。

例如,在我的一个网站上,我经常被迫让“ 只有一个 ”脚本有sudo访问用户ccm_root 。 但是,一旦我们意识到所有这些脚本在底层运行了相同的特权命令/usr/bin/ccm ,并且它们总是由一小组实际上是 ccmpipe理员的开发人员编写和运行的,为该命令授予sudo特权,并且告诉人们编写脚本来启动该命令,而不是要求整个脚本的特权。

这对于那些仅仅为了安全控制而使用sudo站点来说可能不会有帮助,但是对于那些使用sudo进行安全控制,安全和审计的人来说,这可能是一个有用的build议。