我想允许命令在 sudo 下运行,带或不带参数。例如,这两个都应该有效:
rm -f /etc/stuff
rm /etc/stuff/item.txt
为了让它工作,我需要在 sudoers 中进行如下操作:
Cmnd_Alias ITEM_RM = /bin/rm * /etc/*, /bin/rm /etc/*
然后我将其分配给一个组。这有效。但它让我在每个命令上都重复。我希望有一种方法,只有一个条目可以同时执行以下两项操作:
Cmnd_Alias ITEM_RM = /bin/rm {something goes here that does both} /etc/*
我知道一种方法是将其包装在脚本中。我不想这样做。我有几十个这样的条目,我需要它们全部工作,并且事先不知道参数。
我也承认我要求的东西有点安全风险。提醒我这一点毫无意义。我要一些安全,不是紧的安全。我需要防止人们对服务器造成太大的损害,但我们有一个强大的防火墙,无法通过防火墙访问此服务器,因此严格的安全措施是在公司层面实施的。
欢迎提出想法!
答案1
我的经验是,仅用一条语句无法实现这一点。事实上,Cmnd_Alias 就是为此目的而设计的。
看起来您正试图限制用户只能删除 /etc/stuff 中的条目。那么他们的主目录中的条目呢?
无论如何,请记住,每个人默认情况下有权访问“rm”命令,因此您无需授予他们明确的访问权限。但是,他们只能对所有权和权限一致的对象采取行动。您可能希望从这个角度来解决问题。(组所有权和成员资格,以及 umask 设置)。