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

$ 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 

-g选项是什么意思,为什么我不能使用它? RHEL btw。

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

  • 史蒂夫ALL =(ALL)…

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

出现一个野人页面!

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

您可能无法使用它,因为您没有权限。 如果我正在阅读sudoers (5)手册页,则需要明确指定sudoers条目的Runas_user部分的组列表,以便能够使用-g

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