对多个非root用户(用于特定项目的angular色帐户)具有sudo权限的用户之一想要能够在这些用户之间更改文件的所有权:例如,如果sudoers看起来像
jane ALL=(widget-dev,releng) ALL jane ALL=(root) rchown
那么用户“jane”可以使用假设的“rchown”(用于“限制chown”)实用工具对jane,widget-dev中的任何一个所拥有的文件进行归档,并将它们提供给任何这些用户。
我一直没有find一个现有的工具来做到这一点。 我们的用户之一是要求,这似乎是一个合理的事情,但我想我会问这里,征求战争的故事和安全恶梦的可怕的警告之前,我潜心写作(两个坏主意)
编辑添加另一个担心的逻辑:我们只是真的想这样做的情况下,用户可以运行所有命令作为目标用户…对吗? 也许它从来没有被实施,因为它陷入了这样彻底的网站特定的问题。
你可以直接用sudo来做到这一点。 当我开始思考如何做到这一点的时候,我很快意识到,如果你试图直接映射它们,那么你将不得不为n个用户指定的包装的数量是n ^ 2。 但是,如果您需要用户在重新分配每个文件之前获得所有权,您可以将其降低到2n。 所以,你的sudoers文件可能是这样的:
User_Alias CHOWNADMIN1 = jane Cmnd_Alias CHOWNUSR1 = /bin/chown --from widget-dev jane *, /bin/chown --from jane widget-dev * Cmnd_Alias CHOWNUSR2 = /bin/chown --from releng jane *, /bin/chown --from releng amy * CHOWNADMIN1 ALL= NOPASSWD: CHOWNUSR1, CHOWNUSR2
通过这样的设置,Jane现在可以通过两个步骤来更改所有权:
chown --from widget-dev jane /tmp/foofile chown --from jane releng /tmp/foofile
请注意,您必须使用–from限制此权限,或者您可以授予用户“jane”对像/ etc / shadow或/root/.ssh/id_rsa这样的文件拥有权限的权限(这可能很糟糕)。
当然,你现在可以写一个非常简单的脚本来自动化Chowns。 也许类似下面的内容,但有一些错误检查:
#!/bin/bash FROM=$1 shift TO=$1 shift sudo chown --from $FROM $USER $* sudo chown --from $USER $TO $*
现在Jane可以运行“rchown releng widget-dev / tmp / foofile”或类似的东西。