对于特定用户或特定用户列表,我希望这样做,以便他们甚至不需要输入密码,而是直接拒绝。
尽管这是在我允许他们 1 个特定命令之后。所以 sudoers 文件看起来像这样(示例):
testuser ALL = (root) NOPASSWD:NOEXEC: /bin/ls, <REFUSE_EVERYTHING_ELSE_WITHOUT_ASKING_FOR_PASSWORD>
这有可能吗?基本上,我想要实现的目标可以写成:
如果是这个特定用户,则允许自定义 sudoers 文件中列出的这 1 个命令,拒绝其他所有命令,甚至无需输入密码。
那可能吗?
我已经浏览过整个页面:https://www.sudo.ws/man/1.8.15/sudoers.man.html
但我还没找到。只是询问密码部分。我希望它消失。其他一切,包括正确检查权限,我都希望它保留下来。
那可能吗?
编辑:解决方案如下:
##
# User alias specification (Example user, must actually exist)
##
User_Alias Defaults:TEST_USER = test_user
##
# Cmnd alias specification (Example command, multiple wildcards possible)
##
Cmnd_Alias TEST_CMD = /bin/ls */home/test_user/
# Don't ask for password on this particular user, just apply the rules.
Defaults:TEST_USER !authenticate
TEST_USER ALL = (root) NOPASSWD:NOEXEC: TEST_CMD
我只想在这里补充一点:我读了关于此设置如何允许攻击者确定哪些用户可以执行 sudo 以及哪些用户不能执行 sudo 的评论,这听起来好像攻击者已经进入了我的系统并能够在帐户之间切换。如果他们处于那个阶段,听起来他们获得了某种提升的访问权限。这听起来比 1 个受限帐户被入侵更糟糕,听起来他们此时可以访问所有帐户。
也许我以后会意识到这一点,然后说“哦,该死,这是对的”,但我现在没看到。老实说,我更希望有人能解释一下。我应该单独提出一个问题吗?谷歌搜索这个特定选项没有得到太多结果,它似乎相对不为人所知。
话虽如此,我创建的这个特定情况是针对一个根本没有密码的用户。所以我认为在这种情况下,攻击者可能会尝试几次密码,甚至可能是特制的字符串,然后得出结论“哦,这个用户没有密码,我无法对这个用户做任何事情”,然后继续。就像禁用身份验证一样。至少现在他们根本无法输入特制的字符串。
这太天真了吧?
答案1
根据 sudo FAQ 文档https://www.sudo.ws/troubleshooting.html你可以使用!authenticate
每个用户或每个主机完全禁用密码,例如
Defaults !authenticate
在您的/etc/sudoers
文件中应该可以工作。