我有一个假设的问题。假设我想教育一个 7 岁的孩子使用 Linux。我不想让他把时间浪费在 youtube kids 频道上。所以我在 Chrome 上强制执行了一个扩展来阻止此类通道。但在学习linux时,他可能想删除扩展名的强制安装配置文件。我怎样才能给他 sudo 权限(这样他就可以充分体验 Linux),同时防止他删除该配置文件?
在某些情况下,他可以学习涉及 sudoer 的情况的解决方法:示例:对于 sudo apt install,他实际上可以下载源代码并编译和安装他想要的任何内容。
但他不能以非 sudoer 身份修改 /etc/resolf.conf。
据我所知,2个不同的sudoer可以修改彼此的文件。
最后但并非最不重要的一点是,我不想更改操作系统文件的所有者。执行此操作的正确版本是什么?
答案1
你所要求的是完全不可能的,因为你试图从ALL
集合中减去命令。将类似 root 的管理员的命令列入黑名单是相当不可能的,所以man sudoers
详细解释一下:
安全注意事项
'!' 的限制操作员
使用“!”从 ALL 中“减去”命令通常无效操作员。用户可以通过将所需的命令复制到不同的名称然后执行该命令来轻松规避此问题。例如:
bill ALL = ALL, !SU, !SHELLS
并不能真正阻止 bill 运行 SU 或 SHELLS 中列出的命令,因为他可以简单地将这些命令复制到不同的名称,或者使用编辑器或其他程序的 shell 转义。因此,此类限制最多应被视为建议性的(并通过政策强化)。
一般来说,如果用户拥有 sudo ALL,那么无论用户规范中是否有“!”元素,都没有什么可以阻止他们创建自己的程序为他们提供 root shell(或创建自己的 shell 副本)。
您可以考虑:
- 定义白名单而不是黑名单。
- 在虚拟机中运行操作系统,然后限制通过主机访问网站。
- 通过路由器中的防火墙设置限制 Web 访问。