$ 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。
答案1
大概是因为您的 sudoers 文件没有指定这一点。这是以下两行之间的区别:第一行是默认值,但第二行还允许您以任何组的身份运行命令,这正是您想要的。
史蒂夫 ALL=(全部) ...
史蒂夫 全部=(全部:全部) ...
答案2
出现了一个狂野的手册页!
-g group 通常,sudo 将主要组设置为密码数据库为运行命令的用户(默认情况下为 root)指定的组。-g(group)选项使 sudo 运行指定的命令并将主要组设置为 group。要指定 gid 而不是组名,请使用 #gid。以 gid 运行命令时,许多 shell 要求使用反斜杠(“\”)对“#”进行转义。如果未指定 -u 选项,则命令将以调用用户(而非 root)的身份运行。在任一情况下,主要组都将设置为 group。
您可能无法使用它,因为您没有权限。如果我没有看错sudoers
(5) 手册页,您需要明确指定组列表到Runas_user
sudoers 条目的一部分才能使用-g
:
如果仅指定第一个,则可以以列表中的任何用户身份运行该命令,但不能指定 -g 选项。