chown 给一个我可以通过 sudo 来访问的用户

chown 给一个我可以通过 sudo 来访问的用户

我们的一个用户对多个非 root 用户(用于特定项目的角色帐户)具有 sudo 权限,他希望能够在这些用户之间更改文件的所有权:例如,如果 sudoers 看起来像

jane ALL=(widget-dev,releng) ALL
jane ALL=(root) rchown

然后用户“jane”可以对 jane、widget-dev 和 releng 所拥有的文件使用假设的“rchown”(代表“restricted chown”)实用程序,将它们提供给其中任何一个用户。

我还没能找到一个现有的实用程序可以做到这一点。我们的一个用户正在要求这样做,这似乎是一件合理的事情,但我想我会在这里问一下,征集战争故事和安全噩梦的可怕警告,然后再开始写作(两个坏主意)

  1. 另一个配置文件解析器
  2. 以 root 身份运行。

编辑后又增加了对逻辑的担忧:我们只想在用户可以以目标用户身份运行所有命令的情况下这样做……对吗?也许它从未被实现过,因为它陷入了如此彻底的站点特定问题中。

答案1

您可以直接使用 sudo 执行此操作。当我第一次开始思考如何做到这一点时,我很快意识到,如果您尝试直接映射它们,您必须为 n 个用户指定的 chown 数量将是 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”或类似命令。

相关内容