在sudoers文件中使用通配符作为path

我试图设置sudoers文件,以允许用户只在某个目录下的文件

例如

%hmis ALL=/bin/chown eng:hmis /usr/lib/bogimac/bsc/* 

不好,因为黑客可以做到以下几点:

 sudo chown eng:hmis /usr/lib/bogimac/bsc/xctrl.py /etc/important_file 

有谁知道如何防止这个?

谢谢

即使你解决你的眼前的问题,仍然有人可以键入…

 sudo chown eng:hmis /usr/lib/bogimac/bsc/../../../etc/shadow 

或者上面的任何其他排列组合。 sudo并不是这种限制的正确工具。 如果你真的需要委托在这样的特定层次上更改所有权的能力,那么你最好的办法是用你最喜欢的高级脚本语言编写一个简单的包装脚本,它遍历它的path参数,清理它们并检查他们对允许的前缀列表。

感谢您的回答,我没有想到这一点。 由于我只需要使用chown命令来执行这个特定的命令:

 chown eng:hmis /usr/lib/bogimac/bsc/* 

我决定让一个shell脚本只能由root运行,然后让这个命令在sudo中运行,请参阅限制sudo只有一个目录,它的子目录由sudoers文件

我们已经实现了以下似乎工作

 Cmnd_Alias EDIT = /bin/rvi /usr/lib/bogimac/bsc/*, \ !/bin/rvi /usr/lib/bogimac/bsc/* *, \ !/bin/rvi /usr/lib/bogimac/bsc/*..*