Você pode criar uma política local para um ou mais usuários.
Crie o documento onde as configurações vão viver ...
touch /var/lib/polkit-1/localauthority/50-local.d/10-network-manager.pkla
Adicione uma ou mais políticas ...
[Let foo modify system settings for network] Identity=unix-user:foo Action=org.freedesktop.NetworkManager.settings.modify.system ResultAny=no ResultInactive=no ResultActive=yes [Do not allow foo to enable/disable networking] Identity=unix-user:foo Action=org.freedesktop.NetworkManager.settings.enable-disable-network ResultAny=no ResultInactive=no ResultActive=no
A chave é o elemento ResultActive
, que pode ser definido como yes, no, auth_admin ou auth_admin_keep, onde os dois últimos exigirão a senha de outro usuário com privilégios sudo.
O elemento Action
define qual ação será permitida / desaprovada ou exigirá autenticação com uma senha. Existem opções como org.freedesktop.NetworkManager.enable-disable-network
para alternar a rede como ativada / desativada. Você pode ver mais opções no arquivo /usr/share/polkit-1/actions/org.freedesktop.NetworkManager.policy
, basta procurar por algo como <action id="org.freedesktop.NetworkManager.enable-disable-network">
e ler sua descrição.
Você também pode definir todos os valores com o curinga *
...
[Prevent foo from modifying all network states and settings except with admin password] Identity=unix-user:foo Action=org.freedesktop.NetworkManager.* ResultAny=no ResultInactive=no ResultActive=auth_admin_keep
Isso exigirá uma senha para fazer QUALQUER alteração nas configurações ou estado da rede.
Você pode fazer isso em um único comando que pode ser incluído em um script ...
sudo su -c 'printf "[Prevent foo from modifying all network states and settings]\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'
Referências: