为什么我不能运行 sudo -g?

Ste*_*ett 3 linux redhat sudo groups

$ sudo -u fish -g fish bash
Sorry, user steve is not allowed to execute '/bin/bash' as fish:fish on myserver.
$ sudo -u fish bash
$ groups
fish
Run Code Online (Sandbox Code Playgroud)

-g 选项的用途是什么,为什么我不能使用它?RHEL 顺便说一句。

ram*_*uma 7

大概是因为您的 sudoers 文件没有指定这一点。这是两行之间的区别:第一行是默认值,但第二行也允许您作为任何组运行命令,这正是您想要的。

  • 史蒂夫 ALL=(ALL) ...

  • 史蒂夫 ALL=(ALL:ALL) ...


wom*_*ble 5

一个狂野的手册页出现了!

-g group 通常,sudo 将主要组设置为 passwd 数据库为运行命令的用户指定的组(默认为 root)。-g (group) 选项使 sudo 在主要组设置为 group 的情况下运行指定的命令。要指定 gid 而不是组名,请使用 #gid。当以 gid 运行命令时,许多 shell 要求使用反斜杠 ('\') 对“#”进行转义。如果未指定 -u 选项,则该命令将作为调用用户(不是 root)运行。在任何一种情况下,主要组都将设置为组。

您可能无法使用它,因为您没有权限。如果我正在正确阅读sudoers(5) 联机帮助页,则需要将组列表显式指定到Runas_usersudoers 条目的一部分,以便能够使用-g

如果只指定了第一个,则可以以列表中的任何用户身份运行该命令,但不能指定 -g 选项。