使用单个命令或添加少量 polkit 来限制所有非特权用户只读使用 nmcli的正确方法是什么?
编辑:除了 root 之外,只允许特权 unix 组,例如“netadmins”,也会很好。然而,主要问题是阻止一般非特权用户进行的所有非只读更改。
背景
像我认识的大多数系统管理员一样,对于服务器部署,我通常禁用 NetworkManager 并运行“网络”服务,而不是使用配置文件和网络脚本来配置接口、网桥、绑定等,这很简单、可重现、可靠且非常不可靠-black-boxy 即使是高级配置。
在 EL 8 中,不推荐使用传统的网络配置,取而代之的是 NetworkManager。同时,EL 发行版(当前为 EL 7.5)现在允许非 root 用户创建、修改和删除接口,并对现有配置进行几乎无限的更改。对于充当计算头节点的服务器,这允许一个用户干扰整个机器的有效操作。对于提供边界服务的服务器,这增加了非特权妥协的潜在严重性和安全隐患。
我已经阅读了一些关于更改 NetworkManager 的 polkit 配置的文档,但其中大部分是为了解决笔记本电脑上的一些无线问题。
显然我们可以编写 Javascript。这不是很有趣吗?
我认为这会起作用:
https://doc.opensuse.org/documentation/leap/security/html/book.security/cha.security.policykit.html
https://wiki.archlinux.org/index.php/Polkit#Examples
https://blog.christophersmart.com/2014/01/06/policykit-javascript-rules-with-catchall/
快速
rpm -q --dump NetworkManager | grep -i pol
显示策略文件是/usr/share/polkit-1/actions/org.freedesktop.NetworkManager.policy
. 搜索它<allow_inactive>yes
会指出已知远程登录用户允许的操作。例如在 Fedora Workstation 29 上,这些似乎是<allow_active>
大致对应于本地登录的用户。<allow_any>
对应于未登录的用户。“登录”是指pam_systemd
。基本上“登录”将意味着 GUI 或 shell 登录,但可能不是当您为 Apache 之类的其他东西配置 PAM 登录时:-)。