web-dev-qa-db-fra.com

Comment définir la stratégie pour que les utilisateurs modifient l'état du réseau et les connexions?

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?

7
HarlemSquirrel

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:

5
HarlemSquirrel