假设我们有一个组( dev ),它拥有许多用户和一个共享的开发目录,所有包含的文件都具有g+rwx权限。 这个设置是否足够,以便任何dev用户可以杀死任何其他dev用户启动的进程(假设进程是以默认权限启动的)?
例如,假设我们拥有由user1(在组dev )所拥有的文件/opt/devfolder/bin/foo ,其中组ID为dev和权限0770.如果user2(在组dev )从他的shell中启动一个“foo”可以user3(在组dev )杀了它?
[编辑]
如果没有,我们如何使用sudo或其他标准的UNIX工具来实现?
做你想做的最简单的方法是在/etc/sudoers创build一个条目,如下所示:
%users localhost=(%users) NOPASSWD:/bin/kill
这将使users组中的任何用户都可以像users组中的任何其他用户一样运行/bin/kill ,并且不会提示input密码。 我很确定这正是你所要求的。
在这个例子中,我假设存在一个名为users的组,其中dev组的所有成员都属于该组。 你显然需要修改这个来匹配你的本地环境。
组文件权限不会扩展到正在运行的进程。 只有进程的拥有者才能杀死进程。
但是,您可能会考虑configurationsudo以允许用户以有限的方式使用kill命令。
根据你的问题,如果你需要开发组的用户能够杀死某个其他用户的特定types的所有进程,那么可能有一个解决scheme。
%users localhost=(%users) NOPASSWD:/bin/killall -u <username>
要么
%users localhost=(%users) NOPASSWD:/bin/killall -u <username> perl
pipe他呢。 你明白了。 这将允许开发人员杀死所有的'perl'进程,为一个特定的用户。 请记住,您可以使用命令别名来缩写应用程序的多列表,并且还可以使用正则expression式(小心不要太多)
授予用户使用sudo进程将允许他们终止任何进程。 它不能仅限于杀死特定用户的进程。