Bash Sudo NOPASSWD未注册/工作/显示

Bash Sudo NOPASSWD未注册/工作/显示,bash,sudo,rhel,Bash,Sudo,Rhel,Sudo版本:1.7.2p1 我的sudoers文件(在文件末尾)中有以下(经过消毒的)行: 如果我从%groupname(user3)以用户身份运行“sudo-ll”,我会得到以下结果: Sudoers entry: RunAsUsers: root Commands: NOPASSWD: /bin/rpm, /usr/bin/up2date, /usr/bin/yum RunAsUsers: user1, user2, user3 Comma

Sudo版本:1.7.2p1

我的sudoers文件(在文件末尾)中有以下(经过消毒的)行:

如果我从%groupname(user3)以用户身份运行“sudo-ll”,我会得到以下结果:

Sudoers entry:
    RunAsUsers: root
    Commands:
        NOPASSWD: /bin/rpm, /usr/bin/up2date, /usr/bin/yum

    RunAsUsers: user1, user2, user3
    Commands:
        /path/to/binary/setup -f *,
        /path/to/binary/patchbinary
我似乎无法让第二个“nopasswd”条目生效。我尝试删除所有空白,添加空白。我试过“NoPasswd:all”,它只是让它给出“all”而不是“NoPasswd:all”。我知道规则是匹配的,因为我可以清楚地看到非常具体的条目正在扩展。位于末尾的条目应排除任何冲突规则。 关于诊断这个问题有什么想法或建议吗?不幸的是,这是一台“安全”的机器,所以应用补丁/更新sudo不是一个选项。 **对“软件”的引用只是默认的sudoers条目


编辑:现在我已经解决了这个问题,将1行拆分为2行。除了插入带有%groupname ALL=的换行符之外,我没有做任何其他修改,现在它正确地显示了在没有密码的情况下执行命令的权限。但是它仍然需要密码。

为了帮助调试和维护,您应该拆分规则:

%groupname ALL=(root) NOPASSWD: SOFTWARE
%groupname ALL=(GROUPALIASNAME) NOPASSWD: APP
把你的规则分成不同的行可以让你更清楚地知道你想做什么

确保您尝试运行sudo的用户位于
%groupname

确保您使用的是类似于
sudo-u user1
(etc)的东西,这样Runas\u别名实际上会生效


您需要做的另一件事是,如果您作为目标用户正在测试更改,如果您刚刚将您的用户添加到
%groupname
,您需要注销并重新登录,以使组添加真正起作用。

您可以发布完整(编辑)的sudoers吗,因为默认值在不同的操作环境中可能会有所不同(即Debian vs OpenSuse vs…?此外,在发布代码/输出时,请尽量避免从HTML发布,因为它无法正确呈现-它需要用四个空格缩进;作为提示,如果您从电子邮件粘贴复制到文本编辑器中,并在粘贴到SO之前将其修复:-)谢谢格式化。我不知道如何达到正确的效果。发布整个sudoers很难,因为有太多我需要更改的内容,在更改时可能会引入错误。我将其拆分,我认为问题实际上是两个问题。第一个是在最初的帖子中详细描述的(NOPASSWD没有注册Cmnd_别名),第二个可能只是我缺乏知识。如果我运行'sudo-u user1 APP',它将正常执行。如果我运行'sudo-Hinu user1 APP',则会出现密码错误。我通常不使用Hinu,因此我将更仔细地研究其他参数如何影响结果。编辑:为了澄清-一旦我分割了行,NOPASSWD就会显示在sudo-ll中。我不确定我是否可以把它分开放在prod中-sudoers文件已经很大了。是Hinu中的“I”导致了这个中断。可能是目标服务帐户的配置文件中的某些内容-Hnu很好用。不幸的是,我不得不严格使用——希努这样的书。如果你的下一个回复更好的话,现在还没有回复。正如上面的编辑所指出的,有两个问题。第一个是需要将单行(对于%组)拆分为2。我不清楚这是为什么。第二个问题是sudo上的“-i”标志,我的原始问题中没有列出。执行时“-i”转换为“bash-c”。因此最终的结果是,应用程序的定义与以前一样,但在每个命令之前都附加了“/bin/bash-c”,并且以%groupname开头的行按照Andrew McDonnell的帖子进行拆分。我为其他用户和组提供了其他行,这些行都是单行的,没有问题。不知道为什么,但可以关闭。另一个问题是,其中一个用户需要KornShell,这会中断bash-c显式行。编辑该用户的/etc/passwd条目是解决方法。
%groupname ALL=(root) NOPASSWD: SOFTWARE
%groupname ALL=(GROUPALIASNAME) NOPASSWD: APP