sudoers.d中允许的sudo命令不起作用

时间:2019-07-13 12:05:10

标签: sudo sudoers

我的Debian 9系统上的受限非root用户帐户上运行着一个BBS。在大多数情况下,这运行得很好。有时会运行需要root访问权限的命令,因此我一直将sudo与sudoers文件和sudoers.d目录结合使用,以使所有工作正常进行。

直到现在,它一直在顺利运行。

但是,当用户com运行特定的代码块时,现在出现了这个问题:

[sudo] password for com:
Sorry, user com is not allowed to execute '/usr/bin/last' as root on [redacted].
Matching Defaults entries for com on [hostname]:
    env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin

User com may run the following commands on [hostname]:
    (ALL : ALL) NOPASSWD: /usr/sbin/asterisk
    (ALL : ALL) NOPASSWD: /usr/bin/curl
    (ALL : ALL) NOPASSWD: /usr/bin/last

Press ENTER to return:

在bash脚本中生成以上代码的实际代码:

    recent=`sudo /usr/bin/last | grep "com"`
    r=`sudo -l`
    printf '%s\n' "$r"
    printf '%s\n' "$recent"
    read -n 1 -r -p "Press ENTER to return: "

是的,我也尝试了不带grep部分的命令。

以前,我只是在使用sudo last,但是将其更改为sudo /usr/bin/last也不起作用。

用户com重新登录后,sudoers.d目录中的其他条目(您可以在上面的另两个条目中立即生效)没有问题。

如果我将以下内容添加到sudoers.d目录中,它将起作用

com ALL=(ALL) NOPASSWD:ALL

但是,我不想只允许sudoers.d目录中的所有内容,因为这不是一个真正的解决方案,而是一个棘手的解决方法。如果某个地方存在安全漏洞,则可以利用此漏洞,并且不使用上面的线会减少攻击面。有谁知道为什么sudoers.d无法使最后一个命令-只有最后一个命令起作用?

在我看来,last正在使用其他某些进程或文件,也许只有root / admin用户可以访问。但是, wtmp 似乎不是这种情况,last使用的文件具有 664 许可,且具有"Read" permissions for everyone。 / p>

0 个答案:

没有答案