对于特定用户或特定用户列表,我想这样做,这样他们甚至不会被要求输入密码,而是直接被拒绝。
尽管这是在我允许他们使用 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 和哪些不能执行的评论,这听起来就像攻击者已经在他们在我的系统中的位置并且能够在帐户之间跳转。听起来他们在那个时候获得了某种提升的访问权限。这听起来比 1 个受限帐户被盗更糟糕,听起来他们此时可以访问所有帐户。
也许我稍后会意识到这一点,并且“哦,该死,那是对的”,但我现在看不到。老实说,我更愿意对其进行解释。我应该为它提出一个单独的问题吗?谷歌搜索这个特定选项不会产生很多结果,它似乎相对未知。
话虽如此,我创建的这种特殊情况是针对根本没有密码的用户。所以我认为在这种情况下,攻击者可能会尝试几次密码,甚至可能是一个特制的字符串,然后得出结论“哦,这个用户没有密码,我不能对这个用户做任何事情”并继续前进. 与禁用身份验证相同。至少现在他们根本无法输入特制的字符串。
是不是太天真了?
根据https://www.sudo.ws/troubleshooting.html上的 sudo FAQ 文档,您可以使用
!authenticate
它在每个用户或每个主机的基础上完全禁用密码,例如在您的
/etc/sudoers
文件中应该可以工作。