【问题标题】:How do run a specific command as a user in a group如何以组中的用户身份运行特定命令
【发布时间】:2017-11-21 22:00:17
【问题描述】:

作为 jupyterhub 用户,我正在尝试以 mgrs 组中的用户身份运行命令。

$ cat /etc/group
mgrs:x:1011:cody,admin
$ cat /etc/sudoers
jupyterhub ALL=(%mgrs) NOPASSWD:/boot/tp/python3/bin/sudospawner
$ whoami
jupyterhub
$ sudo -u cody /boot/tp/python3/bin/sudospawner
Password:

此 sudoers 行的示例来自 https://github.com/jupyterhub/jupyterhub/wiki/Using-sudo-to-run-JupyterHub-without-root-privileges

【问题讨论】:

  • 你确定这有效吗?看起来codyadmin 属于mgrs 组。这在 sudoers 世界中可能是合法的,但如果您尝试运行的命令只能由 mgrs 的成员执行并且不属于 jupyterhub,那么我将开始寻找。
  • 我将可执行文件的权限设置为777进行测试。
  • 这消除了这个问题。我猜你有理由不想在文件上为组@98​​7654329@ 使用setgid,所以它总是以mgrs 运行?
  • 我想以特定用户的身份运行命令。在这种情况下为 jupyterhub 以便用户可以读取彼此的文件。我希望 jupyterhub 用户能够以 mgrs 组中的任何用户身份运行 sudospawner。对不起,如果我误解了你。
  • 在这种情况下,您应该能够设置文件所有权sudo chown jupyterhub:mgrs /boot/tp/python3/bin/sudospawner,将UID设置为jupyterhub,将GID设置为mgrs。然后制作文件 setuid ,例如chmod 4750 /boot/tp/python3/bin/sudospawner 这样mgrs 的所有成员都可以运行该文件,它将以用户jupyterhub 的身份运行。

标签: linux


【解决方案1】:

我很确定您的配置是倒退的。您以jupyterhub 身份登录并尝试以cody 身份运行它 - 您的配置允许相反的情况。 NOPASSWD:<command> 之间还有一个空格 - 您需要删除该空格。然后,您应该能够(使用您的配置)执行此操作:

$ whoami cody $ sudo -u jupyterhub /boot/tp/python3/bin/sudospawner

如果没有,您应该尝试从jupyterhub 中删除shell 和任何密码,并且不要将其用作登录用户。以 cody 身份登录并尝试上述操作。或者,创建一个没有 shell(或者可能是 /bin/false)且没有密码的新用户,并使用它来代替 jupyterhub

您在上面的最后一条评论中发布的预期目的与您实施的完全相反。

【讨论】:

  • 我这样做时会收到密码提示。
  • 更新了我的答案。
  • 很好地抓住了空间,但这是这篇文章的格式问题。
  • k,但是你的配置和声明的目的仍然完全不一致——这是我的主要观点。 :)
  • sudoers 中应该包含什么?
【解决方案2】:

问题是权限。 sudoers 本身很好。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-26
    • 2010-11-08
    • 1970-01-01
    • 2013-07-31
    • 2011-10-18
    • 2019-11-09
    • 1970-01-01
    相关资源
    最近更新 更多