J'ai une petite application que j'utilise pour changer de proxy sur mon Mac. Il utilise la commande networksetup
pour définir les paramètres de proxy, ce qui a bien fonctionné sous Lion. Sur Mountain Lion cependant, il demande le mot de passe administrateur chaque fois que je modifie les paramètres de proxy.
networksetup tente de modifier la configuration réseau du système. Tapez votre mot de passe pour permettre cela.
Y a-t-il un moyen d'empêcher que cela se produise? Ou existe-t-il un meilleur moyen de modifier les paramètres de proxy dans Cocoa? Sur Lion, le système se souvenait de la saisie du mot de passe. Je ne devais m'authentifier qu'après le redémarrage.
J'ai également remarqué que dans Chrome, le plug-in Proxy Switchy présente le même comportement. Ça dit
scutil tente de modifier la configuration du réseau du système. Tapez votre mot de passe pour permettre cela.
Pour ce faire, utilisez Sudo en ajoutant une règle sans mot de passe pour l'utilisateur que vous souhaitez pouvoir exécuter cette commande.
Exécutez visudo pour lancer un éditeur afin de modifier le fichier/etc/sudoers
visudo -f /etc/sudoers
A la fin du fichier, ajoutez la ligne
$USERNAME ALL=(root) NOPASSWD: /usr/sbin/networksetup
Où $ USERNAME est, indiquez le nom d'utilisateur que vous souhaitez donner à nopassword pour accéder à la commande networksetup.
Testez-le en tant qu'utilisateur en exécutant
/usr/bin/Sudo /usr/sbin/networksetup -version
qui fera écho à un message de version s'il est correctement configuré ou à un mot de passe si vous vous êtes trompé.
Il s'agit d'un itinéraire beaucoup plus sûr, car il limite le nombre d'utilisateurs pouvant exécuter la commande en tant qu'utilisateur root. Si vous définissez le binaire networksetup lui-même, suid root signifie que toute personne se connectant au système peut modifier la configuration de votre réseau. OSX est un système d'exploitation multi-utilisateur, et il devrait être traité comme tel.
Si vous êtes vraiment paranoïaque, veillez à utiliser le chemin complet lorsque vous appelez également/usr/bin/Sudo.
Vous pouvez définir l'autorisation suid
sur /usr/sbin/networksetup
, puis networksetup s'exécutera avec l'autorisation root, de sorte que vous n'aurez plus besoin de saisir de mot de passe.
Sudo chmod u+s /usr/sbin/networksetup
À propos de suid: http://www.linuxnix.com/2011/12/suid-set-suid-linuxunix.html
J'ai essayé de comprendre cela aussi. J'ai remarqué que la page de manuel mentionne ceci:
Tout indicateur qui prend un mot de passe acceptera "-" à la place du mot de passe pour indiquer qu'il doit lire le mot de passe à partir de stdin.
Je ne sais pas trop comment l'utiliser, mais cela semble possible ...