Comment définir les autorisations permettant aux utilisateurs de modifier les connexions et l'état du réseau? Par exemple, comment puis-je autoriser/interdire aux utilisateurs de se connecter à de nouveaux réseaux sans fil? Comment puis-je autoriser/interdire aux utilisateurs de désactiver le réseau?
Vous pouvez créer une stratégie locale pour un ou plusieurs utilisateurs.
Créez le document où les paramètres vivront ...
touch /var/lib/polkit-1/localauthority/50-local.d/10-network-manager.pkla
Ajouter une ou plusieurs politiques ...
[Laissons foo modifier les paramètres système pour le réseau] Identity = utilisateur-unix: toto Action = org.freedesktop.NetworkManager.settings.modify.system ResultAny = no ResultInactive = no ResultActive = yes [Ne pas autoriser foo à activer/désactiver la mise en réseau] Identity = utilisateur_unix: toto Action = org.freedesktop.NetworkManager.settings.enable-disable-network ResultAny = no ResultInactive = no ResultActive = no
La clé est l'élément ResultActive
qui peut être défini sur oui, non, auth_admin ou auth_admin_keep, les deux derniers nécessitant le mot de passe d'un autre utilisateur disposant des privilèges Sudo.
L'élément Action
définit quelle action sera autorisée/interdite ou nécessitera une authentification avec un mot de passe. Il existe des options telles que org.freedesktop.NetworkManager.enable-disable-network
pour activer/désactiver le réseau. Vous pouvez voir plus d'options dans le fichier /usr/share/polkit-1/actions/org.freedesktop.NetworkManager.policy
, il suffit de chercher quelque chose comme <action id="org.freedesktop.NetworkManager.enable-disable-network">
et de lire sa description.
Vous pouvez également définir toutes les valeurs avec le caractère générique *
...
[Empêchez foo de modifier tous les états et paramètres du réseau sauf avec le mot de passe administrateur] Identity = utilisateur-unix: foo Action = org.freedesktop.NetworkManager. * ResultAny = no ResultInactive = no ResultActive = auth_admin_keep
Un mot de passe sera nécessaire pour TOUTE modification des paramètres ou de l'état du réseau.
Vous pouvez le faire en une seule commande qui pourrait être incluse dans un script ...
Sudo su -c 'printf "[Empêcher foo de modifier tous les états et paramètres du réseau]\nIdentity = utilisateur_unix: foo\nAction = org.freedesktop.NetworkManager. *\NResultAny = no\nResultInactive = no\nResultActive = auth_admin "> /var/lib/polkit-1/localauthority/50-local.d/10-network-manager.pkla'
Références: