如何设置用户修改网络状态和连接的策略?

Har*_*rel 13 network-manager policykit

如何设置用户更改网络连接和状态的权限?例如,我如何允许/禁止用户连接到新的无线网络?如何允许/禁止用户关闭网络?

Har*_*rel 10

您可以为一个或多个用户创建本地策略。

创建设置将存在的文档...

触摸 /var/lib/polkit-1/localauthority/50-local.d/10-network-manager.pkla

添加一项或多项政策...

[让 foo 修改网络的系统设置]
身份=unix-user:foo
操作=org.freedesktop.NetworkManager.settings.modify.system
结果任意=否
结果无效=否
结果活动=是

[不允许 foo 启用/禁用网络]
身份=unix-user:foo
操作=org.freedesktop.NetworkManager.settings.enable-disable-network
结果任意=否
结果无效=否
结果活动=否

关键是ResultActive可以设置为 yes、no、auth_admin 或 auth_admin_keep 的元素,其中后两者将需要另一个具有 sudo 权限的用户的密码。

Action元素定义了允许/禁止的操作或需要使用密码进行身份验证的操作。有一些选项org.freedesktop.NetworkManager.enable-disable-network可以将网络切换为启用/禁用。您可以在/usr/share/polkit-1/actions/org.freedesktop.NetworkManager.policy文件中看到更多选项,只需查找类似内容<action id="org.freedesktop.NetworkManager.enable-disable-network">并阅读其说明即可。

您还可以使用*通配符设置所有值...

[防止 foo 修改除管理员密码以外的所有网络状态和设置]
身份=unix-user:foo
操作=org.freedesktop.NetworkManager.*
结果任意=否
结果无效=否
结果Active=auth_admin_keep

这将需要密码才能对网络设置或状态进行任何更改。

您可以在可以包含在脚本中的单个命令中执行此操作...

sudo su -c 'printf "[防止 foo 修改所有网络状态和设置]\nIdentity=unix-user:foo\nAction=org.freedesktop.NetworkManager.*\nResultAny=no\nResultInactive=no\nResultActive=auth_admin" > /var/lib/polkit-1/localauthority/50-local.d/10-network-manager.pkla'

参考: